Skip to content

Commit 76ca3eb

Browse files
committed
Merge commit 'fea50a51ee2d9af15c42f785ab2232469357b557'
2 parents c238ee3 + fea50a5 commit 76ca3eb

File tree

11 files changed

+188
-153
lines changed

11 files changed

+188
-153
lines changed

torch/lib/TH/CMakeLists.txt

Lines changed: 102 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,21 @@ IF(NOT TH_INSTALL_BIN_SUBDIR
2020
SET(TH_INSTALL_CMAKE_SUBDIR "share/cmake/TH" CACHE PATH "TH install cmake subdirectory")
2121
ENDIF()
2222

23-
# flags
23+
#######################################################################
24+
##### flags section
25+
######################################################################
2426

2527
IF(MSVC)
26-
# respect the standard
27-
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE=1)
28+
# MSVC now supports C99 since VS2013/VS2015
29+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /std:c99")
30+
ELSE(MSVC)
31+
# enable gnu99 and not c99 because we use
32+
# gnu extensions like posix_memalign
33+
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
34+
ENDIF(MSVC)
35+
36+
IF(MSVC)
37+
ADD_DEFINITIONS(-D_CRT_SECURE_NO_DEPRECATE=1) # respect the standard
2838
ENDIF(MSVC)
2939

3040
IF(UNIX)
@@ -114,82 +124,27 @@ IF(NOT NO_GCC_EBX_FPIC_BUG)
114124
ENDIF(NOT NO_GCC_EBX_FPIC_BUG)
115125

116126

117-
FIND_PACKAGE(SSE)
127+
FIND_PACKAGE(SSE) # checks SSE, AVX and AVX2
118128
IF(C_SSE2_FOUND)
129+
MESSAGE(STATUS "SSE2 Found")
119130
SET(CMAKE_C_FLAGS "${C_SSE2_FLAGS} -DUSE_SSE2 ${CMAKE_C_FLAGS}")
120131
ENDIF(C_SSE2_FOUND)
121132
IF(C_SSE3_FOUND)
133+
MESSAGE(STATUS "SSE3 Found")
122134
SET(CMAKE_C_FLAGS "${C_SSE3_FLAGS} -DUSE_SSE3 ${CMAKE_C_FLAGS}")
123135
ENDIF(C_SSE3_FOUND)
136+
# we dont set -mavx and -mavx2 flags globally, but only for specific files
137+
# however, we want to enable the AVX codepaths, so we still need to
138+
# add USE_AVX and USE_AVX2 macro defines
124139
IF(C_AVX_FOUND)
125-
SET(CMAKE_C_FLAGS "${C_AVX_FLAGS} -DUSE_AVX ${CMAKE_C_FLAGS}")
140+
MESSAGE(STATUS "AVX Found")
141+
SET(CMAKE_C_FLAGS "-DUSE_AVX ${CMAKE_C_FLAGS}")
126142
ENDIF(C_AVX_FOUND)
127143
IF(C_AVX2_FOUND)
128-
SET(CMAKE_C_FLAGS "${C_AVX2_FLAGS} -DUSE_AVX2 ${CMAKE_C_FLAGS}")
144+
MESSAGE(STATUS "AVX2 Found")
145+
SET(CMAKE_C_FLAGS "-DUSE_AVX2 ${CMAKE_C_FLAGS}")
129146
ENDIF(C_AVX2_FOUND)
130147

131-
IF(C_AVX2_FOUND OR C_AVX_FOUND OR C_SSE4_2_FOUND OR C_SSE4_1_FOUND)
132-
SET(simd generic/simd/convolve.c)
133-
IF(MSVC)
134-
SET_SOURCE_FILES_PROPERTIES(generic/simd/convolve.c PROPERTIES COMPILE_FLAGS "/std:c99")
135-
ELSE(MSVC)
136-
SET_SOURCE_FILES_PROPERTIES(generic/simd/convolve.c PROPERTIES COMPILE_FLAGS "-std=c99")
137-
ENDIF(MSVC)
138-
ENDIF(C_AVX2_FOUND OR C_AVX_FOUND OR C_SSE4_2_FOUND OR C_SSE4_1_FOUND)
139-
140-
IF(C_SSE4_1_FOUND)
141-
SET(CMAKE_C_FLAGS "${C_SSE4_1_FLAGS} -DUSE_SSE4_1 ${CMAKE_C_FLAGS}")
142-
ENDIF(C_SSE4_1_FOUND)
143-
IF(C_SSE4_2_FOUND)
144-
SET(CMAKE_C_FLAGS "${C_SSE4_2_FLAGS} -DUSE_SSE4_2 ${CMAKE_C_FLAGS}")
145-
ENDIF(C_SSE4_2_FOUND)
146-
147-
IF(C_SSE4_1_FOUND OR C_SSE4_2_FOUND)
148-
IF(MSVC)
149-
SET_SOURCE_FILES_PROPERTIES(generic/simd/convolve5x5_sse.c PROPERTIES COMPILE_FLAGS "/Ox /fp:fast /std:c99")
150-
ELSE(MSVC)
151-
SET_SOURCE_FILES_PROPERTIES(generic/simd/convolve5x5_sse.c PROPERTIES COMPILE_FLAGS "-O3 -ffast-math -std=c99")
152-
ENDIF(MSVC)
153-
SET(simd ${simd} generic/simd/convolve5x5_sse.c)
154-
ENDIF(C_SSE4_1_FOUND OR C_SSE4_2_FOUND)
155-
156-
IF(MSVC)
157-
SET_SOURCE_FILES_PROPERTIES(generic/THTensorMath.c PROPERTIES COMPILE_FLAGS "/std:c99")
158-
ELSE(MSVC)
159-
SET_SOURCE_FILES_PROPERTIES(generic/THTensorMath.c PROPERTIES COMPILE_FLAGS "-std=c99")
160-
ENDIF(MSVC)
161-
162-
IF(C_AVX_FOUND OR C_AVX2_FOUND)
163-
SET(CMAKE_C_FLAGS "-DUSE_AVX ${CMAKE_C_FLAGS}")
164-
IF(MSVC)
165-
SET_SOURCE_FILES_PROPERTIES(generic/simd/convolve5x5_avx.c PROPERTIES COMPILE_FLAGS "/Ox /fp:fast /arch:AVX /std:c99")
166-
ELSE(MSVC)
167-
SET_SOURCE_FILES_PROPERTIES(generic/simd/convolve5x5_avx.c PROPERTIES COMPILE_FLAGS "-O3 -ffast-math -mavx -std=c99")
168-
ENDIF(MSVC)
169-
SET(simd ${simd} generic/simd/convolve5x5_avx.c)
170-
ENDIF(C_AVX_FOUND OR C_AVX2_FOUND)
171-
172-
SET(hdr
173-
THGeneral.h THHalf.h THAllocator.h THStorage.h THTensor.h THTensorApply.h THBlas.h THMath.h
174-
THLapack.h THLogAdd.h THRandom.h THVector.h THAtomic.h )
175-
176-
SET(src
177-
THGeneral.c THHalf.c THAllocator.c THStorage.c THTensor.c THBlas.c THLapack.c
178-
THLogAdd.c THRandom.c THFile.c THDiskFile.c THMemoryFile.c THAtomic.c THVector.c)
179-
180-
SET(src ${src} ${hdr} ${simd})
181-
ADD_LIBRARY(TH SHARED ${src})
182-
if(BUILD_STATIC)
183-
ADD_LIBRARY(TH_static STATIC ${src})
184-
endif()
185-
186-
IF(NOT TH_SO_VERSION)
187-
SET(TH_SO_VERSION 0)
188-
ENDIF(NOT TH_SO_VERSION)
189-
MESSAGE(STATUS "TH_SO_VERSION: ${TH_SO_VERSION}")
190-
SET_TARGET_PROPERTIES(TH PROPERTIES
191-
VERSION ${TH_SO_VERSION}
192-
SOVERSION ${TH_SO_VERSION})
193148

194149
CHECK_C_SOURCE_RUNS("
195150
#include <stdatomic.h>
@@ -233,6 +188,74 @@ int main()
233188
" HAS_GCC_ATOMICS)
234189
ENDIF()
235190

191+
#######################################################################
192+
##### sources section
193+
######################################################################
194+
195+
# IF ANY SIMD FOUND
196+
IF(C_AVX2_FOUND OR C_AVX_FOUND OR C_SSE4_2_FOUND OR C_SSE4_1_FOUND)
197+
SET(simd generic/simd/convolve.c)
198+
ENDIF(C_AVX2_FOUND OR C_AVX_FOUND OR C_SSE4_2_FOUND OR C_SSE4_1_FOUND)
199+
200+
# IF SSE4 FOUND
201+
IF(C_SSE4_1_FOUND AND C_SSE4_2_FOUND)
202+
SET(CMAKE_C_FLAGS "${C_SSE4_1_FLAGS} -DUSE_SSE4_1 ${C_SSE4_2_FLAGS} -DUSE_SSE4_2 ${CMAKE_C_FLAGS}")
203+
IF(MSVC)
204+
SET_SOURCE_FILES_PROPERTIES(generic/simd/convolve5x5_sse.c PROPERTIES COMPILE_FLAGS "/Ox /fp:fast")
205+
ELSE(MSVC)
206+
SET_SOURCE_FILES_PROPERTIES(generic/simd/convolve5x5_sse.c PROPERTIES COMPILE_FLAGS "-O3 -ffast-math")
207+
ENDIF(MSVC)
208+
SET(simd ${simd} generic/simd/convolve5x5_sse.c)
209+
ENDIF(C_SSE4_1_FOUND AND C_SSE4_2_FOUND)
210+
211+
# IF AVX FOUND
212+
IF(C_AVX_FOUND)
213+
IF(MSVC)
214+
SET_SOURCE_FILES_PROPERTIES(generic/simd/convolve5x5_avx.c PROPERTIES COMPILE_FLAGS "/Ox /fp:fast ${C_AVX_FLAGS}")
215+
SET_SOURCE_FILES_PROPERTIES(vector/AVX.c PROPERTIES COMPILE_FLAGS "/Ox ${C_AVX_FLAGS}")
216+
ELSE(MSVC)
217+
SET_SOURCE_FILES_PROPERTIES(generic/simd/convolve5x5_avx.c PROPERTIES COMPILE_FLAGS "-O3 -ffast-math ${C_AVX_FLAGS}")
218+
SET_SOURCE_FILES_PROPERTIES(vector/AVX.c PROPERTIES COMPILE_FLAGS "-O3 ${C_AVX_FLAGS}")
219+
ENDIF(MSVC)
220+
SET(simd ${simd} vector/AVX.c generic/simd/convolve5x5_avx.c)
221+
ENDIF(C_AVX_FOUND)
222+
223+
IF(C_AVX2_FOUND)
224+
IF(MSVC)
225+
SET_SOURCE_FILES_PROPERTIES(vector/AVX2.c PROPERTIES COMPILE_FLAGS "/Ox ${C_AVX2_FLAGS}")
226+
ELSE(MSVC)
227+
SET_SOURCE_FILES_PROPERTIES(vector/AVX2.c PROPERTIES COMPILE_FLAGS "-O3 ${C_AVX2_FLAGS}")
228+
ENDIF(MSVC)
229+
SET(simd ${simd} vector/AVX2.c)
230+
ENDIF(C_AVX2_FOUND)
231+
232+
SET(hdr
233+
THGeneral.h THHalf.h THAllocator.h THStorage.h THTensor.h THTensorApply.h THBlas.h THMath.h
234+
THLapack.h THLogAdd.h THRandom.h THVector.h THAtomic.h )
235+
236+
SET(src
237+
THGeneral.c THHalf.c THAllocator.c THStorage.c THTensor.c THBlas.c THLapack.c
238+
THLogAdd.c THRandom.c THFile.c THDiskFile.c THMemoryFile.c THAtomic.c THVector.c)
239+
240+
SET(src ${src} ${hdr} ${simd})
241+
242+
#######################################################################
243+
##### build section
244+
######################################################################
245+
246+
ADD_LIBRARY(TH SHARED ${src})
247+
if(BUILD_STATIC)
248+
ADD_LIBRARY(TH_static STATIC ${src})
249+
endif()
250+
251+
IF(NOT TH_SO_VERSION)
252+
SET(TH_SO_VERSION 0)
253+
ENDIF(NOT TH_SO_VERSION)
254+
MESSAGE(STATUS "TH_SO_VERSION: ${TH_SO_VERSION}")
255+
SET_TARGET_PROPERTIES(TH PROPERTIES
256+
VERSION ${TH_SO_VERSION}
257+
SOVERSION ${TH_SO_VERSION})
258+
236259
IF(HAS_C11_ATOMICS)
237260
ADD_DEFINITIONS(-DUSE_C11_ATOMICS=1)
238261
MESSAGE(STATUS "Atomics: using C11 intrinsics")
@@ -264,10 +287,6 @@ IF(LAPACK_FOUND)
264287
TARGET_LINK_LIBRARIES(TH ${LAPACK_LIBRARIES})
265288
ENDIF(LAPACK_FOUND)
266289

267-
IF(BLAS_IS_ACCELERATE)
268-
MESSAGE(STATUS "BLAS FOUND IS ACCELERATE: Fix for sdot")
269-
ENDIF()
270-
271290
IF (UNIX AND NOT APPLE)
272291
INCLUDE(CheckLibraryExists)
273292
# https://github.com/libgit2/libgit2/issues/2128#issuecomment-35649830
@@ -284,6 +303,7 @@ IF(UNIX)
284303
IF(HAVE_MMAP)
285304
ADD_DEFINITIONS(-DHAVE_MMAP=1)
286305
ENDIF(HAVE_MMAP)
306+
# done for lseek: https://www.gnu.org/software/libc/manual/html_node/File-Position-Primitive.html
287307
ADD_DEFINITIONS(-D_FILE_OFFSET_BITS=64)
288308
CHECK_FUNCTION_EXISTS(shm_open HAVE_SHM_OPEN)
289309
IF(HAVE_SHM_OPEN)
@@ -299,47 +319,10 @@ IF(UNIX)
299319
ENDIF(HAVE_MALLOC_USABLE_SIZE)
300320
ENDIF(UNIX)
301321

302-
303-
304322
IF(NOT MSVC)
305323
TARGET_LINK_LIBRARIES(TH m)
306324
ENDIF(NOT MSVC)
307325

308-
SET(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS})
309-
FOREACH(KEYWORD "inline" "__inline__" "__inline")
310-
IF(NOT DEFINED C_INLINE)
311-
312-
SET(CMAKE_REQUIRED_FLAGS "-Dinline=${KEYWORD} ${CMAKE_C_FLAGS}")
313-
CHECK_C_SOURCE_RUNS("
314-
static inline int static_foo()
315-
{
316-
return 0;
317-
}
318-
319-
int main(int argc, char *argv[])
320-
{
321-
static_foo();
322-
return 0;
323-
}" C_HAS_${KEYWORD})
324-
325-
IF(C_HAS_${KEYWORD})
326-
SET(C_INLINE TRUE)
327-
# Right now i put it in THGeneral.h -- debatable
328-
# ADD_DEFINITIONS("-Dinline=${KEYWORD}")
329-
SET(TH_INLINE ${KEYWORD})
330-
MESSAGE(STATUS "C inline is supported (${KEYWORD})")
331-
ENDIF(C_HAS_${KEYWORD})
332-
ENDIF(NOT DEFINED C_INLINE)
333-
ENDFOREACH(KEYWORD)
334-
SET(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE})
335-
336-
IF(NOT DEFINED C_INLINE)
337-
MESSAGE(STATUS "C inline seems not supported")
338-
# Right now i put it in THGeneral.h -- debatable
339-
# ADD_DEFINITIONS("-Dinline=")
340-
SET(TH_INLINE "")
341-
ENDIF(NOT DEFINED C_INLINE)
342-
343326
# Is __thread supported?
344327
IF(NOT MSVC)
345328
CHECK_C_SOURCE_COMPILES("static __thread int x = 1; int main() { return x; }" C_HAS_THREAD)
@@ -355,6 +338,11 @@ ENDIF(NOT C_HAS_THREAD)
355338
INCLUDE_DIRECTORIES("${CMAKE_CURRENT_BINARY_DIR}")
356339
CONFIGURE_FILE(THGeneral.h.in "${CMAKE_CURRENT_BINARY_DIR}/THGeneral.h")
357340

341+
342+
#######################################################################
343+
##### install section
344+
######################################################################
345+
358346
INSTALL(TARGETS TH
359347
EXPORT TH-exports
360348
RUNTIME DESTINATION "${TH_INSTALL_BIN_SUBDIR}"
@@ -388,6 +376,11 @@ INSTALL(FILES
388376
THHalf.h
389377
DESTINATION "${TH_INSTALL_INCLUDE_SUBDIR}/TH")
390378

379+
INSTALL(FILES
380+
vector/AVX.h
381+
vector/AVX2.h
382+
DESTINATION "${TH_INSTALL_INCLUDE_SUBDIR}/TH/vector")
383+
391384
INSTALL(FILES
392385
generic/THBlas.c
393386
generic/THBlas.h

torch/lib/TH/THGeneral.h.in

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
#cmakedefine USE_BLAS
1515
#cmakedefine USE_LAPACK
16-
#cmakedefine BLAS_IS_ACCELERATE
1716
#cmakedefine BLAS_F2C
1817

1918
#ifdef __cplusplus
@@ -32,12 +31,6 @@
3231
# define TH_API TH_EXTERNC
3332
#endif
3433

35-
#define TH_INLINE @TH_INLINE@
36-
37-
#ifndef __cplusplus
38-
#define inline @TH_INLINE@
39-
#endif
40-
4134
#ifndef M_PI
4235
# define M_PI 3.14159265358979323846
4336
#endif

torch/lib/TH/THVector.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@
1515
#include "vector/SSE.c"
1616
#endif
1717

18-
#if defined(USE_AVX) || defined(USE_AVX2)
19-
#include "vector/AVX.c"
18+
#if defined(USE_AVX)
19+
#include "vector/AVX.h"
2020
#endif
2121

2222
#if defined(USE_AVX2)
23-
#include "vector/AVX2.c"
23+
#include "vector/AVX2.h"
2424
#endif
2525

2626
#include "generic/THVectorDefault.c"

torch/lib/TH/cmake/FindMKL.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ ENDIF ("${SIZE_OF_VOIDP}" EQUAL 8)
5050
IF(CMAKE_COMPILER_IS_GNUCC)
5151
SET(mklthreads "mkl_gnu_thread" "mkl_intel_thread")
5252
SET(mklifaces "gf" "intel")
53-
SET(mklrtls)
53+
SET(mklrtls "iomp5")
5454
ELSE(CMAKE_COMPILER_IS_GNUCC)
5555
SET(mklthreads "mkl_intel_thread")
5656
SET(mklifaces "intel")

0 commit comments

Comments
 (0)