PyCUDA / Copperhead, похоже, не распознает 64-битные машины

У меня сейчас две проблемы с копперхедом, которые, как я подозреваю, связаны между собой.

Запуск демонстрационного файла (samples/axpy.py) породил множество маленьких предупреждений, но это особенно выделялось.

g++ -pthread -fno-strict-aliasing -g -O2 -g -fwrapv -O2 -Wall -fPIC -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions -DNDEBUG -I/usr/include/python2.6 -I/usr/local/lib/python2.6/dist-packages/copperhead-0.1a1-py2.6.egg/copperhead/include -I/usr/local/cuda/include /tmp/codepy-compiler-cache-v5-uid1000/202478034fea29b82d046b259bd6f43e/module.o /tmp/codepy-compiler-cache-v5-uid1000/fdcb04ede426b146cfce8894e99eeb57/gpu.o -L/usr/lib -L/usr/local/cuda/lib -L/usr/local/cuda/lib64 -lcuda -lcudart -lboost_python-gcc43-mt -lpthread -ldl -lutil -o /tmp/codepy-compiler-cache-v5-uid1000/202478034fea29b82d046b259bd6f43e/codepy.temp.202478034fea29b82d046b259bd6f43e.module.so
/usr/bin/ld: skipping incompatible /usr/local/cuda/lib/libcudart.so when searching for -lcudart
/usr/bin/ld: cannot find -lboost_python-gcc43-mt
collect2: ld returned 1 exit status

Несколько вещей, чтобы заметить;

g++ правильно выбрал правильный каталог CUDA lib для использования (lib64), но не видит там libcudart.so, который есть.

/usr/local/cuda/lib64/libcudart.so.4.0.12: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, stripped

Далее, boost_python не найден; Я слышал из нескольких мест, что это связано с тем, что Ubuntu где-то нарушил соглашение о пакетах, и люди сказали, что исправили это, изменив параметры конфигурации pycuda, но не сказали, на что это изменить... ( пример)

У кого-нибудь есть идеи по поводу проблем с cudart или boot?


person Bolster    schedule 14.04.2011    source источник


Ответы (1)


  1. Он находит libcudart. То, что вы видите, является только информационным предупреждением: опции -L ищутся по порядку, и компоновщик сначала находит 32-битную версию, потому что вы указали -L/usr/local/cuda/lib перед -L/usr/loca/cuda/lib64.
  2. Для проблемы с libboost_python просто свяжите с -lboost_python. Системы Ubuntu, которые я использую (64-разрядная версия 10.04LTS с boost-python 1.40), имеют серию каскадных символических ссылок на это каноническое имя библиотеки, которые позволяют компоновщику находить правильную библиотеку без какого-либо дальнейшего вмешательства.
person talonmies    schedule 14.04.2011