cmake, gcc, cuda и -m32 - PullRequest
       47

cmake, gcc, cuda и -m32

3 голосов
/ 11 апреля 2010

Я понял, что 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, но не для связывания ..

Ответы [ 3 ]

3 голосов
/ 11 апреля 2010

см. Выше

set(CMAKE_C_FLAGS -m32)
set(CMAKE_CXX_FLAGS -m32)
2 голосов
/ 13 апреля 2010

Если вы установите env var LDFLAGS до запуска cmake для проекта, он также будет работать:

export LDFLAGS=-m32
cmake ../source
1 голос
/ 07 мая 2010

Другое решение может быть следующим:

if (Apple)
  set (CMAKE_OSX_ARCHITECTURES i386)
  set (CUDA_64_BIT_DEVICE_CODE OFF) 
endif (Apple)

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...