Как скомпилировать код, который использует MAGMA в Visual Studio

Учитывая пример кода что поставляется с MAGMA, как скомпилировать его в Visual Studio (или любой другой код вашего создания, который использует MAGMA)?

0

Решение

Мой предпочтительный способ использования CMake.

Note1: Вы также должны включить и связать CUDA и LAPACK (плюс включите MKL, если вы использовали это для первоначальной компиляции MAGMA)

Заметка 2: Если вы не хотите связывать статически, вам нужно сделать DLL доступной для обнаружения во время выполнения, либо скопировав их в папку вашего проекта, либо добавив их местоположение в PATH

Следующий CMakeLists.txt генерирует VS-проект, который компилирует и запускает пример кода.

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")

РЕДАКТИРОВАТЬ: Подожди, нет. Он компилируется и запускается в Release, но не в Debug ..

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]