jacobian

a basic keras-like neural network library for c++/python
Log | Files | Refs | README

CMakeLists.txt (1256B)


      1 cmake_minimum_required(VERSION 3.10.0)
      2 
      3 project(jacobian)
      4 
      5 set(CMAKE_CXX_COMPILER "g++")
      6 
      7 set(CMAKE_CXX_STANDARD 20)
      8 set(CMAKE_CXX_STANDARD_REQUIRED ON)
      9 
     10 if (DEBUG)
     11   set(COMPILE_FLAGS, "-Wall")
     12 else()
     13   set(COMPILE_FLAGS, "-w")
     14 endif()
     15 
     16 if (FAST)
     17   set(COMPILE_FLAGS "${COMPILE_FLAGS} -O3")
     18 elseif (FASTER)
     19   set(COMPILE_FLAGS "${COMPILE_FLAGS} -mavx -O3 -mavx -mfma -march=native -mfpmath=sse -DMKL_ILP64")
     20 elseif (TRADEOFFS)
     21   set(COMPILE_FLAGS "${COMPILE_FLAGS} -mavx -O3 -mavx -msse2 -msse3 -march=native -mfpmath=sse -DMKL_ILP64 -ffast-math -ffast-math")
     22 elseif (RECKLESS)
     23   set(COMPILE_FLAGS "${COMPILE_FLAGS} -mavx -O3 -mavx -msse2 -msse3 -march=native -mfpmath=sse -DMKL_ILP64 -D NDEBUG -ffast-math -D RECKLESS")
     24 endif()
     25 
     26 set(CMAKE_CXX_FLAGS  "${CMAKE_CXX_FLAGS} ${COMPILE_FLAGS}")
     27 
     28 find_package(Eigen3 REQUIRED)
     29 include_directories(${EIGEN3_INCLUDE_DIR})
     30 message("Found Eigen3: ${EIGEN3_INCLUDE_DIR}")
     31 
     32 if (PYTHON)
     33   find_package(pybind11 CONFIG REQUIRED)
     34   include_directories(${pybind11_INCLUDE_DIRS})
     35   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC")
     36   pybind11_add_module(_jacobian ./src/pybind.cpp ./src/bpnn.cpp ./src/utils.cpp)
     37 endif (PYTHON)
     38 
     39 if (CXX)
     40   add_executable(jacobian_cli example.cpp ./src/bpnn.cpp ./src/utils.cpp)
     41 endif (CXX)