开发者

PyCUDA / Copperhead doesn't appear to recognise 64-bit machines

Two problems I'm having with copperhead at the minute, which I suspect are related.

Running a sample file (samples/axpy.py) generated lots of little warnings, but this one stood out.

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
col开发者_运维技巧lect2: ld returned 1 exit status

Few things to notice;

g++ is has correctly picked up the correct CUDA lib dir to use (lib64), but doesn't see libcudart.so in there, which it is.

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

Next, boost_python isn't found; I've heard from a few places that this is due to ubuntu breaking a package convention somewhere, and people has said they've fixed it by changing the pycuda configure options, but haven't said what to change it to... (Example)

Anyone got any ideas for either the cudart or boot issues?


  1. It is finding libcudart. What you are seeing is only an informational warning: -L options are searched in order and the linker is finding the 32 bit version first, because you gave -L/usr/local/cuda/lib before -L/usr/loca/cuda/lib64.
  2. For the libboost_python problem, just link with -lboost_python. The Ubuntu systems I use (64 bit 10.04LTS with boost-python 1.40) have a series of cascading symbolic links to that canonical library name that make the linker find the correct library without any further intervention.
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜