Given the example code that comes with MAGMA, how to compile it in Visual Studio (or any other code of your making that uses MAGMA) ?
Asked
Active
Viewed 528 times
1
-
If anyone writes a more complete answer, I'll change the "accepted answer" – WurmD Nov 08 '18 at 11:51
1 Answers
2
My preferred way is making use of CMake.
Note1: You must also include and link CUDA and the LAPACK (plus include MKL, if you used that to compile MAGMA originally)
Note2: If you do not wish to link statically, you'll need to make the DLL's discoverable at run time, either by copying them into your project folder, or adding their location to PATH
The following CMakeLists.txt generates a VS Project that compiles and runs the example code.
add_executable(magma-test example_sparse.cpp)
find_package( CUDA )
set( MKLROOT "D:/Program Files (x86)/IntelSWTools/parallel_studio_xe_2019.0.045/compilers_and_libraries_2019/windows/mkl" )
set( LAPACK_LIBRARIES
"D:/Program Files (x86)/IntelSWTools/parallel_studio_xe_2019.0.045/compilers_and_libraries_2019/windows/mkl/lib/intel64_win/mkl_intel_lp64.lib"
"D:/Program Files (x86)/IntelSWTools/parallel_studio_xe_2019.0.045/compilers_and_libraries_2019/windows/mkl/lib/intel64_win/mkl_intel_thread.lib"
"D:/Program Files (x86)/IntelSWTools/parallel_studio_xe_2019.0.045/compilers_and_libraries_2019/windows/mkl/lib/intel64_win/mkl_core.lib"
"D:/Program Files (x86)/IntelSWTools/compilers_and_libraries_2019.0.117/windows/compiler/lib/intel64_win/libiomp5md.lib")
target_include_directories(magma-test PUBLIC
"D:/Work/Magma/magma-2.4.0/include"
"D:/Work/Magma/magma-2.4.0/sparse/include"
${CUDA_INCLUDE_DIRS}
${MKLROOT}/include)
target_link_libraries(magma-test
${CUDA_CUDART_LIBRARY}
${CUDA_CUBLAS_LIBRARIES}
${CUDA_cusparse_LIBRARY}
${LAPACK_LIBRARIES}
debug D:/Work/Magma/magma-2.4.0/build/lib/Debug/magma.lib
debug D:/Work/Magma/magma-2.4.0/build/lib/Debug/magma_sparse.lib
optimized D:/Work/Magma/magma-2.4.0/build/lib/Release/magma.lib
optimized D:/Work/Magma/magma-2.4.0/build/lib/Release/magma_sparse.lib)
# Sets flags that cause static linking
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
EDIT: Wait, no. It's compiling and running in Release, but not in Debug..

WurmD
- 1,231
- 5
- 21
- 42