diff --git a/CMakeLists.txt b/CMakeLists.txt index 63dbbf3..15c121d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,8 @@ project(Transformer-DyNet) -cmake_minimum_required(VERSION 2.8 FATAL_ERROR) +cmake_minimum_required(VERSION 3.6 FATAL_ERROR) set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/dynet/cmake) +set(ENABLE_BOOST yes) # DYNET uses Eigen which exploits modern CPU architectures. To get the # best possible performance, the following are recommended: @@ -80,7 +81,7 @@ endif() if(MSVC) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -W1 /MP") # -Wall produces 20k warnings. Enable parallel compilation else() - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -funroll-loops -fno-finite-math-only -Wall -Wno-missing-braces -std=c++11 -Ofast -g -march=native") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC -funroll-loops -fno-finite-math-only -Wall -Wno-missing-braces -std=c++20 -Ofast -g -march=native") endif() include_directories(${CMAKE_CURRENT_SOURCE_DIR} @@ -169,6 +170,7 @@ if (WITH_CUDA_BACKEND) endif() endif() +set(EIGEN3_INCLUDE_DIR /usr/local/include/eigen3/) # look for Eigen if (DEFINED ENV{EIGEN3_INCLUDE_DIR} AND NOT DEFINED EIGEN3_INCLUDE_DIR) # use env variable if not set set(EIGEN3_INCLUDE_DIR $ENV{EIGEN3_INCLUDE_DIR}) diff --git a/dynet/dynet/exec.cc b/dynet/dynet/exec.cc index 8c579d1..7a10387 100644 --- a/dynet/dynet/exec.cc +++ b/dynet/dynet/exec.cc @@ -11,7 +11,7 @@ #ifdef HAVE_CUDA #include "dynet/gpu-ops.h" #endif - +#include using namespace std; namespace dynet { diff --git a/dynet/dynet/nodes-softmaxes.cc b/dynet/dynet/nodes-softmaxes.cc index 9aceae8..7c4eef8 100644 --- a/dynet/dynet/nodes-softmaxes.cc +++ b/dynet/dynet/nodes-softmaxes.cc @@ -3,7 +3,7 @@ #include "dynet/nodes-impl-macros.h" #include "dynet/functors.h" - +#include using namespace std; namespace dynet { diff --git a/dynet/dynet/simd-functors.h b/dynet/dynet/simd-functors.h index 9e2b66a..c9a1965 100644 --- a/dynet/dynet/simd-functors.h +++ b/dynet/dynet/simd-functors.h @@ -70,6 +70,10 @@ struct functor_traits > { }; } } +#define EIGEN_EMPTY_STRUCT_CTOR(X) \ + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE X() {} \ + EIGEN_DEVICE_FUNC EIGEN_STRONG_INLINE X(const X& ) {} + namespace dynet { template struct scalar_logistic_sigmoid_op { EIGEN_EMPTY_STRUCT_CTOR(scalar_logistic_sigmoid_op)