Я понял, что CUDA не работает в 64-битном режиме на моем Mac (или пока не может его запустить). Поэтому я решил скомпилировать все для 32bit.
Я использую 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, но не для связывания ..