129 lines
3.8 KiB
CMake
129 lines
3.8 KiB
CMake
cmake_minimum_required(VERSION 3.2)
|
|
project(NeuralNetwork CXX)
|
|
|
|
include(cmake/CPUFeatures)
|
|
|
|
OPTION(BUILD_SHARED_LIBS "Build also shared library." ON)
|
|
|
|
if(CPU_AVX_AVAILABLE)
|
|
SET(USE_AVX ON CACHE BOOL "")
|
|
if(CPU_FMA_AVAILABLE)
|
|
SET(USE_FMA ON CACHE BOOL "")
|
|
endif(CPU_FMA_AVAILABLE)
|
|
endif(CPU_AVX_AVAILABLE)
|
|
|
|
if(CPU_SSE3_AVAILABLE)
|
|
SET(USE_SSE ON CACHE BOOL "")
|
|
|
|
if(CPU_SSE4.2_AVAILABLE)
|
|
SET(USE_SSE2 OFF CACHE BOOL "")
|
|
endif(CPU_SSE4.2_AVAILABLE)
|
|
|
|
endif(CPU_SSE3_AVAILABLE)
|
|
|
|
OPTION(USE_SSE "If SSE instruction set should be used." OFF)
|
|
OPTION(USE_SSE2 "If SSE 2 instruction set should be used." ON)
|
|
OPTION(USE_AVX "If AVX instruction set should be used." OFF)
|
|
OPTION(USE_FMA "If FMA instruction set should be used." OFF)
|
|
|
|
OPTION(DEBUG "If library should be compiled with DEBUG" OFF)
|
|
OPTION(ENABLE_TESTS "enables tests" ON)
|
|
|
|
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Weffc++ -Wshadow -Wstrict-aliasing -ansi -Woverloaded-virtual -Wdelete-non-virtual-dtor -Wno-unused-function")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++14")
|
|
|
|
if(DEBUG)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g")
|
|
else()
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -mtune=native -O3")
|
|
endif(DEBUG)
|
|
|
|
if(USE_AVX)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mavx -DUSE_AVX")
|
|
if(USE_FMA)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfma -DUSE_FMA")
|
|
endif(USE_FMA)
|
|
|
|
endif(USE_AVX)
|
|
|
|
if(USE_SSE)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse4.2 -DUSE_SSE")
|
|
if(USE_SSE2)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_SSE2")
|
|
endif(USE_SSE2)
|
|
endif(USE_SSE)
|
|
|
|
include_directories(./include/)
|
|
|
|
set (LIBRARY_SOURCES
|
|
src/sse_mathfun.cpp
|
|
|
|
src/NeuralNetwork/Learning/BackPropagation.cpp
|
|
src/NeuralNetwork/Learning/QuickPropagation.cpp
|
|
src/NeuralNetwork/Learning/PerceptronLearning.cpp
|
|
|
|
src/NeuralNetwork/BasisFunction/Linear.cpp
|
|
src/NeuralNetwork/FeedForward/Layer.cpp
|
|
src/NeuralNetwork/FeedForward/Network.cpp
|
|
src/NeuralNetwork/Recurrent/Network.cpp
|
|
src/NeuralNetwork/Neuron.cpp
|
|
)
|
|
|
|
add_library(NeuralNetwork STATIC ${LIBRARY_SOURCES})
|
|
|
|
link_libraries(NeuralNetwork pthread)
|
|
|
|
IF(BUILD_SHARED_LIBS)
|
|
add_library(NeuralNetworkShared SHARED ${LIBRARY_SOURCES})
|
|
set_target_properties(NeuralNetworkShared PROPERTIES OUTPUT_NAME NeuralNetwork)
|
|
ENDIF(BUILD_SHARED_LIBS)
|
|
|
|
IF(ENABLE_TESTS)
|
|
add_subdirectory (tests)
|
|
|
|
enable_testing()
|
|
|
|
add_test(activation tests/backpropagation)
|
|
set_property(TEST activation PROPERTY LABELS unit)
|
|
|
|
add_test(backpropagation tests/backpropagation)
|
|
set_property(TEST backpropagation PROPERTY LABELS unit)
|
|
|
|
add_test(backpropagation_function_cmp tests/backpropagation_function_cmp)
|
|
set_property(TEST backpropagation_function_cmp PROPERTY LABELS unit)
|
|
|
|
add_test(basis tests/basis)
|
|
set_property(TEST basis PROPERTY LABELS unit)
|
|
|
|
add_test(feedforward tests/feedforward)
|
|
set_property(TEST feedforward PROPERTY LABELS unit)
|
|
|
|
add_test(recurrent tests/recurrent)
|
|
set_property(TEST recurrent PROPERTY LABELS unit)
|
|
|
|
add_test(optical_backpropagation tests/optical_backpropagation)
|
|
set_property(TEST optical_backpropagation PROPERTY LABELS unit)
|
|
|
|
add_test(quickpropagation tests/quickpropagation)
|
|
set_property(TEST quickpropagation PROPERTY LABELS unit)
|
|
|
|
add_test(perceptron tests/perceptron)
|
|
set_property(TEST perceptron PROPERTY LABELS unit)
|
|
|
|
add_test(perceptron_learning tests/perceptron_learning)
|
|
set_property(TEST perceptron_learning PROPERTY LABELS unit)
|
|
|
|
add_test(feedforward_perf tests/feedforward_perf)
|
|
set_property(TEST feedforward_perf PROPERTY LABELS perf)
|
|
|
|
add_test(quickpropagation_perf tests/quickpropagation_perf)
|
|
set_property(TEST quickpropagation_perf PROPERTY LABELS perf)
|
|
|
|
add_test(backpropagation_perf tests/backpropagation_perf)
|
|
set_property(TEST backpropagation_perf PROPERTY LABELS perf)
|
|
|
|
add_test(recurrent_perf tests/recurrent_perf)
|
|
set_property(TEST recurrent_perf PROPERTY LABELS perf)
|
|
|
|
ENDIF(ENABLE_TESTS) |