使用nvcc编译cuda 7.0库,同时链接到32位的python 2.5在Windows上。

2024-06-08 17:10:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编译一个可以使用nvcc从python调用的库。通常在windows上,我使用msys/mingw工具链,可以毫无问题地编译python扩展。但是,当我尝试使用nvcc编译时,我相信它使用的是链接.exe它是(Microsoft Visual Studio的一部分)。虽然它编译得很好,但在链接步骤失败了。在

我意识到我使用的是python的旧版本(2.5版)。我正在处理一个遗留的应用程序,目前我仍在使用旧版本。在

下面是我正在尝试的nvcc命令:

nvcc -I "C:\Python25\include" -I "C:\python25\Lib\site-packages\numpy\core\include\numpy" -L "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.0\lib\x64" -lcusolver -lcusparse -Xlinker "C:\Python25\libs\python25.lib" cusolve5.cu

但它失败的原因是:

^{pr2}$

在我看来找不到python库。使用msys/mingw,我可以链接类似的库:

g++ bmc.o -L "/c/python25/libs" -lpython25 -shared -o bmc.pyd

它工作得很好(但不包括我正在研究的任何GPU加速)。我想我需要通过一些选择链接.exe通过-Xlinker命令,但我似乎找不到在构建时包含python库的方法。在


Tags: 命令numpygpuinclude链接libexelibs
1条回答
网友
1楼 · 发布于 2024-06-08 17:10:02

多亏了@talonmies的提示,我得出结论,我要做的事情是不可能的,原因有两个:

  1. python2.5是用vs2005编译的,我无权访问它,而且nVidia可能不支持它(http://docs.nvidia.com/cuda/cuda-getting-started-guide-for-microsoft-windows列表中没有这么旧的编译器)

不过,这可以通过使用ctypes加载dll而不是标准的python导入来解决。然而。。。在

  1. 我的python二进制文件是32位的,而cuda7.0只支持64位。这个库索尔弗.lib以及库斯帕斯.lib(对我的优化至关重要)可以在cuda7.0发行版的x64目录中找到。在将“机器32”传递给nvcc时链接到它们并不起作用,尽管这并不令人惊讶。在

相关问题 更多 >