J'ai compris que CUDA ne fonctionne pas en mode 64 bits sur mon mac (ou ne pouvait pas le faire fonctionner jusqu'à présent). Par conséquent, j'ai décidé de tout compiler pour 32 bits.cmake, gcc, cuda et -m32
J'utilise CMake 2.8 et ajouté les options suivantes
add_definitions(-Wall -m32)
set(CUDA_64_BIT_DEVICE_CODE OFF)
set(CMAKE_MODULE_LINKER_FLAGS -m32)
Cependant quand il essaie de le lier, il fait quelque chose comme ceci:
/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
qui échoue avec beaucoup de « fichier n'est pas de l'architecture requise "avertissements de ld. Maintenant, si j'ajoute manuellement -m32 à la commande ci-dessus cela fonctionne. Cependant je n'ai aucune idée comment apprendre à cmake à ajouter -m32 à chaque invocation de gcc (ou ld). Jusqu'à présent, il le fait pour nvcc et gcc, mais pas pour relier ..
compris que cela fonctionne si j'invoque CMake avec les indicateurs suivants: -DCMAKE_C_FLAGS = -m32 --DCMAKE_CXX_FLAGS = -m32 – Nils
Je pense que j'ai tout compris .. set (CMAKE_C_FLAGS -m32) set (CMAKE_CXX_FLAGS -m32) – Nils