Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/torch/torch7.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas LĂ©onard <nick@nikopia.org>2017-05-26 06:25:46 +0300
committerGitHub <noreply@github.com>2017-05-26 06:25:46 +0300
commit8272995026e4d928961c6dfbd5c736f2143c224f (patch)
tree3d73ed9e1e12c56ae18b1889b563745ad32c31cd
parent4150c664c980e03a29eaad685e1d860f92888c00 (diff)
parent2ed44b99915b0b31b5535df9174153e991f1a6e8 (diff)
Merge pull request #948 from twitter-forks/static-builds
New helper macro + fixes for old gcc
-rw-r--r--cmake/TorchPackage.cmake33
-rw-r--r--generic/Tensor.c8
-rw-r--r--generic/TensorOperator.c16
-rw-r--r--lib/TH/CMakeLists.txt14
-rw-r--r--lib/TH/THDiskFile.c3
-rw-r--r--lib/TH/generic/THTensorMath.c4
-rw-r--r--lib/luaT/CMakeLists.txt11
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}")