Я понял, что CUDA не работает в 64-битном режиме на моем mac (или не смог запустить его до сих пор). Поэтому я решил собрать все для 32-битного.cmake, gcc, cuda и -m32
Я использую CMake 2.8 и добавлены следующие опции
add_definitions(-Wall -m32)
set(CUDA_64_BIT_DEVICE_CODE OFF)
set(CMAKE_MODULE_LINKER_FLAGS -m32)
Однако, когда он пытается связать это он делает что-то вроде этого:
/usr/bin/c++ -mmacosx-version-min=10.6 -Wl,-search_paths_first -headerpad_max_install_names CMakeFiles/SimpleTestsCUDA.dir/BlockMatrix.cpp.o CMakeFiles/SimpleTestsCUDA.dir/Matrix.cpp.o ./SimpleTestsCUDA_generated_SimpleTests.cu.o ./SimpleTestsCUDA_generated_BlockMatrix.cu.o -o SimpleTestsCUDA /usr/local/cuda/lib/libcudart.dylib /usr/local/cuda/lib/libcuda.dylib
Который не может с большим количеством «файл не является требуемой архитектуры "предупреждений от ld. Теперь, если я добавлю вручную -m32 в приведенную выше команду, он работает. Однако я не знаю, как научить cmake добавлять -m32 для каждого вызова gcc (или ld). До сих пор он делает это для NVCC и GCC, но не для связи ..
Разобрался, что это работает, если я призываю CMake со следующими флагами: -DCMAKE_C_FLAGS = -m32 --DCMAKE_CXX_FLAGS = -m32 – Nils
Я думаю, что я понял это .. набор (CMAKE_C_FLAGS -m32) комплект (CMAKE_CXX_FLAGS -m32) – Nils