diff options
author | Nicholas LĂ©onard <nick@nikopia.org> | 2017-05-26 06:25:46 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-05-26 06:25:46 +0300 |
commit | 8272995026e4d928961c6dfbd5c736f2143c224f (patch) | |
tree | 3d73ed9e1e12c56ae18b1889b563745ad32c31cd | |
parent | 4150c664c980e03a29eaad685e1d860f92888c00 (diff) | |
parent | 2ed44b99915b0b31b5535df9174153e991f1a6e8 (diff) |
Merge pull request #948 from twitter-forks/static-builds
New helper macro + fixes for old gcc
-rw-r--r-- | cmake/TorchPackage.cmake | 33 | ||||
-rw-r--r-- | generic/Tensor.c | 8 | ||||
-rw-r--r-- | generic/TensorOperator.c | 16 | ||||
-rw-r--r-- | lib/TH/CMakeLists.txt | 14 | ||||
-rw-r--r-- | lib/TH/THDiskFile.c | 3 | ||||
-rw-r--r-- | lib/TH/generic/THTensorMath.c | 4 | ||||
-rw-r--r-- | lib/luaT/CMakeLists.txt | 11 |
7 files changed, 57 insertions, 32 deletions
diff --git a/cmake/TorchPackage.cmake b/cmake/TorchPackage.cmake index 7fcbdff..f966dac 100644 --- a/cmake/TorchPackage.cmake +++ b/cmake/TorchPackage.cmake @@ -1,5 +1,21 @@ # -*- cmake -*- +MACRO(ADD_TORCH_LIBRARY package type src) + IF ("${type}" STREQUAL "STATIC") + if ("${src}" MATCHES "cu$" OR "${src}" MATCHES "cu;") + CUDA_ADD_LIBRARY(${package} STATIC ${src}) + else() + ADD_LIBRARY(${package} STATIC ${src}) + endif() + ELSE() + if ("${src}" MATCHES "cu$" OR "${src}" MATCHES "cu;") + CUDA_ADD_LIBRARY(${package} ${type} ${src}) + else() + ADD_LIBRARY(${package} ${type} ${src}) + endif() + ENDIF() +ENDMACRO() + MACRO(ADD_TORCH_PACKAGE package src luasrc) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) INCLUDE_DIRECTORIES(${Torch_LUA_INCLUDE_DIR}) @@ -8,17 +24,7 @@ MACRO(ADD_TORCH_PACKAGE package src luasrc) # As per CMake doc, macro arguments are not variables, so simple test syntax not working IF(NOT "${src}" STREQUAL "") - if ("${src}" MATCHES "cu$" OR "${src}" MATCHES "cu;") - CUDA_ADD_LIBRARY(${package} MODULE ${src}) - if(BUILD_STATIC) - CUDA_ADD_LIBRARY(${package}_static STATIC ${src}) - endif() - else() - ADD_LIBRARY(${package} MODULE ${src}) - if(BUILD_STATIC) - ADD_LIBRARY(${package}_static STATIC ${src}) - endif() - endif() + ADD_TORCH_LIBRARY(${package} MODULE "${src}") ### Torch packages supposes libraries prefix is "lib" SET_TARGET_PROPERTIES(${package} PROPERTIES @@ -31,12 +37,13 @@ MACRO(ADD_TORCH_PACKAGE package src luasrc) LINK_FLAGS "-undefined dynamic_lookup") ENDIF() - if(BUILD_STATIC) + IF (BUILD_STATIC OR "$ENV{STATIC_TH}" STREQUAL "YES") + ADD_TORCH_LIBRARY(${package}_static STATIC "${src}") SET_TARGET_PROPERTIES(${package}_static PROPERTIES COMPILE_FLAGS "-fPIC") SET_TARGET_PROPERTIES(${package}_static PROPERTIES PREFIX "lib" IMPORT_PREFIX "lib" OUTPUT_NAME "${package}") - endif() + ENDIF() INSTALL(TARGETS ${package} RUNTIME DESTINATION ${Torch_INSTALL_LUA_CPATH_SUBDIR} diff --git a/generic/Tensor.c b/generic/Tensor.c index aabbbdc..112a4bd 100644 --- a/generic/Tensor.c +++ b/generic/Tensor.c @@ -142,7 +142,7 @@ static int torch_Tensor_(new)(lua_State *L) THTensor_(free)(tensor); THError("invalid element (not a number)"); } - THStorage_(set)(THTensor_(storage)(tensor), si++, LUA_NUMBER_TO_REAL(lua_tonumber(L, -1))); + THStorage_(set)(THTensor_(storage)(tensor), si++, luaG_(checkreal)(L, -1)); lua_pop(L, 1); } @@ -1172,7 +1172,7 @@ static int torch_Tensor_(apply)(lua_State *L) lua_call(L, 1, 1); if(lua_isnumber(L, 3)) { - *tensor_data = LUA_NUMBER_TO_REAL(lua_tonumber(L, 3)); + *tensor_data = luaG_(checkreal)(L, 3); lua_pop(L, 1); } else if(lua_isnil(L, 3)) @@ -1198,7 +1198,7 @@ static int torch_Tensor_(map)(lua_State *L) lua_call(L, 2, 1); if(lua_isnumber(L, 4)) { - *tensor_data = LUA_NUMBER_TO_REAL(lua_tonumber(L, 4)); + *tensor_data = luaG_(checkreal)(L, 4); lua_pop(L, 1); } else if(lua_isnil(L, 4)) @@ -1226,7 +1226,7 @@ static int torch_Tensor_(map2)(lua_State *L) lua_call(L, 3, 1); if(lua_isnumber(L, 5)) { - *tensor_data = LUA_NUMBER_TO_REAL(lua_tonumber(L, 5)); + *tensor_data = luaG_(checkreal)(L, 5); lua_pop(L, 1); } else if(lua_isnil(L, 5)) diff --git a/generic/TensorOperator.c b/generic/TensorOperator.c index e131c57..37b2a08 100644 --- a/generic/TensorOperator.c +++ b/generic/TensorOperator.c @@ -2,6 +2,8 @@ #define TH_GENERIC_FILE "generic/TensorOperator.c" #else +#include "luaG.h" + static int torch_TensorOperator_(__add__)(lua_State *L) { THTensor *tensor1 = luaT_toudata(L, 1, torch_Tensor); @@ -19,13 +21,13 @@ static int torch_TensorOperator_(__add__)(lua_State *L) { THTensor_(resizeAs)(r, tensor2); THTensor_(copy)(r, tensor2); - THTensor_(add)(r, r, luaL_checknumber(L, 1)); + THTensor_(add)(r, r, luaG_(checkreal)(L, 1)); } else if(tensor1 && !tensor2) { THTensor_(resizeAs)(r, tensor1); THTensor_(copy)(r, tensor1); - THTensor_(add)(r, r, luaL_checknumber(L, 2)); + THTensor_(add)(r, r, luaG_(checkreal)(L, 2)); } else { @@ -53,14 +55,14 @@ static int torch_TensorOperator_(__sub__)(lua_State *L) if(!tensor1 && tensor2) { THTensor_(resizeAs)(r, tensor2); - THTensor_(fill)(r, luaL_checknumber(L, 1)); + THTensor_(fill)(r, luaG_(checkreal)(L, 1)); THTensor_(cadd)(r, r, -1, tensor2); } else if(tensor1 && !tensor2) { THTensor_(resizeAs)(r, tensor1); THTensor_(copy)(r, tensor1); - THTensor_(add)(r, r, -(real)luaL_checknumber(L, 2)); + THTensor_(add)(r, r, -luaG_(checkreal)(L, 2)); } else { @@ -103,13 +105,13 @@ static int torch_TensorOperator_(__mul__)(lua_State *L) { THTensor_(resizeAs)(r, tensor2); THTensor_(copy)(r, tensor2); - THTensor_(mul)(r, r, luaL_checknumber(L, 1)); + THTensor_(mul)(r, r, luaG_(checkreal)(L, 1)); } else if(tensor1 && !tensor2) { THTensor_(resizeAs)(r, tensor1); THTensor_(copy)(r, tensor1); - THTensor_(mul)(r, r, luaL_checknumber(L, 2)); + THTensor_(mul)(r, r, luaG_(checkreal)(L, 2)); } else { @@ -117,7 +119,7 @@ static int torch_TensorOperator_(__mul__)(lua_State *L) int dims = tensor2->nDimension; if(dimt == 1 && dims == 1) - lua_pushnumber(L, THTensor_(dot)(tensor1, tensor2)); /* ok, we wasted r, but who cares */ + luaG_(pushreal)(L, THTensor_(dot)(tensor1, tensor2)); /* ok, we wasted r, but who cares */ else if(dimt == 2 && dims == 1) { THTensor_(resize1d)(r, tensor1->size[0]); diff --git a/lib/TH/CMakeLists.txt b/lib/TH/CMakeLists.txt index c4e6694..b481a8a 100644 --- a/lib/TH/CMakeLists.txt +++ b/lib/TH/CMakeLists.txt @@ -145,7 +145,6 @@ IF(C_AVX2_FOUND) SET(CMAKE_C_FLAGS "-DUSE_AVX2 ${CMAKE_C_FLAGS}") ENDIF(C_AVX2_FOUND) - CHECK_C_SOURCE_RUNS(" #include <stdatomic.h> int main() @@ -243,10 +242,15 @@ SET(src ${src} ${hdr} ${simd}) ##### build section ###################################################################### -ADD_LIBRARY(TH SHARED ${src}) -if(BUILD_STATIC) - ADD_LIBRARY(TH_static STATIC ${src}) -endif() +ADD_TORCH_LIBRARY(TH SHARED "${src}") + +IF (BUILD_STATIC OR "$ENV{STATIC_TH}" STREQUAL "YES") + ADD_TORCH_LIBRARY(TH_static STATIC "${src}") + SET_TARGET_PROPERTIES(TH_static PROPERTIES + COMPILE_FLAGS "-fPIC") + SET_TARGET_PROPERTIES(TH_static PROPERTIES + PREFIX "lib" IMPORT_PREFIX "lib" OUTPUT_NAME "TH") +ENDIF() IF(NOT TH_SO_VERSION) SET(TH_SO_VERSION 0) diff --git a/lib/TH/THDiskFile.c b/lib/TH/THDiskFile.c index 01b1951..3f57b3b 100644 --- a/lib/TH/THDiskFile.c +++ b/lib/TH/THDiskFile.c @@ -3,6 +3,9 @@ #include "THFilePrivate.h" #include <stdint.h> +#ifndef LLONG_MAX +#define LLONG_MAX 9223372036854775807LL +#endif typedef struct THDiskFile__ { diff --git a/lib/TH/generic/THTensorMath.c b/lib/TH/generic/THTensorMath.c index 706b1d0..29894e2 100644 --- a/lib/TH/generic/THTensorMath.c +++ b/lib/TH/generic/THTensorMath.c @@ -2,6 +2,10 @@ #define TH_GENERIC_FILE "generic/THTensorMath.c" #else +#ifndef NAN + #define NAN (nan(NULL)) +#endif + #ifdef _OPENMP #include <omp.h> #endif diff --git a/lib/luaT/CMakeLists.txt b/lib/luaT/CMakeLists.txt index f33768c..072991c 100644 --- a/lib/luaT/CMakeLists.txt +++ b/lib/luaT/CMakeLists.txt @@ -9,9 +9,14 @@ IF(LUALIB) ENDIF() ADD_LIBRARY(luaT SHARED luaT.h luaT.c) -if(BUILD_STATIC) + +IF (BUILD_STATIC OR "$ENV{STATIC_TH}" STREQUAL "YES") ADD_LIBRARY(luaT_static STATIC luaT.h luaT.c) -endif() + SET_TARGET_PROPERTIES(luaT_static PROPERTIES + COMPILE_FLAGS "-fPIC") + SET_TARGET_PROPERTIES(luaT_static PROPERTIES + PREFIX "lib" IMPORT_PREFIX "lib" OUTPUT_NAME "luaT") +ENDIF() SET_TARGET_PROPERTIES(luaT PROPERTIES VERSION 0 @@ -41,5 +46,5 @@ GET_FILENAME_COMPONENT(LUAT_OUTPUT_NAME ${LUAT_OUTPUT_NAME} NAME) SET(LUAT_LIBRARIES "${Torch_INSTALL_LIB}/${LUAT_OUTPUT_NAME}") SET(LUAT_INCLUDE_DIR "${Torch_INSTALL_INCLUDE}") CONFIGURE_FILE(luaTConfig.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/luaTConfig.cmake") -INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/luaTConfig.cmake" +INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/cmake-exports/luaTConfig.cmake" DESTINATION "${Torch_INSTALL_CMAKE_SUBDIR}") |