Changeset 4480
- Timestamp:
- Feb 8, 2015, 1:22:56 PM (4 years ago)
- Location:
- icGREP/icgrep-devel
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
icGREP/icgrep-devel/README-icgrep-0.98.txt
r4397 r4480 45 45 system generator. 46 46 (IC1) open a terminal window and cd to the icgrep-build directory 47 (IC2 ) enter the following command to build the makefiles47 (IC2.1) enter the following command to build the makefiles 48 48 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++ -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/clang ../icgrep 49 (IC2.2) to specify the type of supported SIMD operations rather than relying on auto detection 50 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/clang++ -DCMAKE_C_COMPILER:FILEPATH=/usr/bin/clang -DSIMD_SUPPORT=XXX ../icgrep 51 Where XXX can be SSE2, SSE3, SSE4_1, SSE4_2, AVX1 or AVX2. 49 52 (IC3) Enter the command "make" 50 53 -
icGREP/icgrep-devel/icgrep/CMakeLists.txt
r4456 r4480 43 43 # Let's suppose we want to build a JIT compiler with support for 44 44 # binary code (no interpreter): 45 llvm_map_components_to_lib raries(REQ_LLVM_LIBRARIES mcjit native)45 llvm_map_components_to_libnames(REQ_LLVM_LIBRARIES mcjit native) 46 46 47 47 message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") … … 169 169 }") 170 170 171 set(AVX _1_CODE "171 set(AVX1_CODE " 172 172 #include <immintrin.h> 173 173 int main() … … 180 180 }") 181 181 182 set(AVX _2_CODE "182 set(AVX2_CODE " 183 183 #include <immintrin.h> 184 184 int main() … … 197 197 SET(ENABLE_SSE4_1 "/arch:SSE4") 198 198 SET(ENABLE_SSE4_2 "/arch:SSE4") 199 SET(ENABLE_AVX _1 "/arch:AVX1")200 SET(ENABLE_AVX _2 "/arch:AVX2")199 SET(ENABLE_AVX1 "/arch:AVX1") 200 SET(ENABLE_AVX2 "/arch:AVX2") 201 201 ELSE() # using Clang, GCC, Intel C++, etc 202 202 SET(ENABLE_SSE1 "-msse") … … 206 206 SET(ENABLE_SSE4_2 "-msse4.2") 207 207 IF ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") 208 SET(ENABLE_AVX _1 "-mavx -fabi-version=6")209 SET(ENABLE_AVX _2 "-mavx2 -fabi-version=6")208 SET(ENABLE_AVX1 "-mavx -fabi-version=6") 209 SET(ENABLE_AVX2 "-mavx2 -fabi-version=6") 210 210 ELSE() 211 SET(ENABLE_AVX _1 "-mavx")212 SET(ENABLE_AVX _2 "-mavx2")211 SET(ENABLE_AVX1 "-mavx") 212 SET(ENABLE_AVX2 "-mavx2") 213 213 ENDIF() 214 214 ENDIF() 215 215 216 set(CMAKE_REQUIRED_FLAGS) 217 set(SIMD_SUPPORT_FOUND) 218 set(SIMD_MAX_BLOCK_SIZE) 219 220 MACRO(CHECK_SIMD_SUPPORT type maxBlockSize) 221 IF(NOT SIMD_SUPPORT_FOUND) 222 set(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) 223 set(CMAKE_REQUIRED_FLAGS ${ENABLE_${type}}) 224 check_cxx_source_runs("${${type}_CODE}" ${type}) 225 IF(${type}) 226 SET(SIMD_SUPPORT_FOUND ${CMAKE_REQUIRED_FLAGS}) 227 SET(SIMD_MAX_BLOCK_SIZE ${maxBlockSize}) 216 SET(CMAKE_REQUIRED_FLAGS) 217 218 MACRO(CHECK_SIMD_SUPPORT SIMD_TYPE RESULT) 219 IF(NOT RESULT) 220 SET(CMAKE_REQUIRED_FLAGS_SAVE ${CMAKE_REQUIRED_FLAGS}) 221 SET(CMAKE_REQUIRED_FLAGS ${ENABLE_${SIMD_TYPE}}) 222 SET(SUCCESS "${SIMD_TYPE}") 223 check_cxx_source_runs("${${SIMD_TYPE}_CODE}" ${SUCCESS}) 224 IF(${SUCCESS}) 225 SET(${RESULT} "${SIMD_TYPE}") 228 226 ENDIF() 229 227 SET(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_SAVE}) … … 231 229 ENDMACRO() 232 230 233 CHECK_SIMD_SUPPORT("AVX_2" 256) 234 CHECK_SIMD_SUPPORT("AVX_1" 128) 235 CHECK_SIMD_SUPPORT("SSE4_2" 128) 236 CHECK_SIMD_SUPPORT("SSE4_1" 128) 237 CHECK_SIMD_SUPPORT("SSE3" 128) 238 CHECK_SIMD_SUPPORT("SSE2" 128) 239 CHECK_SIMD_SUPPORT("SSE1" 128) 240 241 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${SIMD_SUPPORT_FOUND}") 231 IF(NOT SIMD_SUPPORT) 232 SET(RESULT) 233 CHECK_SIMD_SUPPORT("AVX2" RESULT) 234 CHECK_SIMD_SUPPORT("AVX1" RESULT) 235 CHECK_SIMD_SUPPORT("SSE4_2" RESULT) 236 CHECK_SIMD_SUPPORT("SSE4_1" RESULT) 237 CHECK_SIMD_SUPPORT("SSE3" RESULT) 238 CHECK_SIMD_SUPPORT("SSE2" RESULT) 239 CHECK_SIMD_SUPPORT("SSE1" RESULT) 240 SET(SIMD_SUPPORT ${RESULT} CACHE STRING "SSE2") 241 ENDIF() 242 243 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ENABLE_${SIMD_SUPPORT}}") 242 244 243 245 # detect LLVM version and add compiler flags. 244 246 if (${LLVM_PACKAGE_VERSION} MATCHES "3.4") 245 247 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_LLVM_3_4") 246 elseif(${LLVM_PACKAGE_VERSION} MATCHES "3.5")248 ELSEIF (${LLVM_PACKAGE_VERSION} MATCHES "3.5") 247 249 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_LLVM_3_5") 248 endif(${LLVM_PACKAGE_VERSION} MATCHES "3.4")250 ENDIF() 249 251 250 252 IF (BLOCK_SIZE_256) 251 IF(${SIMD_MAX_BLOCK_SIZE} GREATER 128)252 253 SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_S2P_AVX2 -DBLOCK_SIZE=256 -march=core-avx2 -m64") 253 ELSE()254 MESSAGE(FATAL_ERROR "AVX2 or better is required for BLOCK_SIZE=256")255 ENDIF()256 254 ENDIF() 257 255
Note: See TracChangeset
for help on using the changeset viewer.