我的机器里有两张NVidia卡,两张都是数据自动化系统的。当我运行示例脚本以开始使用这里看到的PyCUDA:http://documen.tician.de/pycuda/时,我得到了错误
nvcc fatal : Value 'sm_30' is not defined for option 'gpu-architecture'我的计算GPU是计算能力3.0,所以sm_30应该是nvcc编译器的正确选择。我的图形GPU只有CC 1.2,所以我想也许这就是问题所在。我已经为linux安装了CUDA5.0版本,没有任何错误,以及所有编译器组件和python组件。
是否有方法显式地告诉PyCUDA使用哪个GPU?
发布于 2013-07-30 14:09:36
nvcc不会根据您安装的特定GPU来抱怨。它将编译任何您告诉它要编译的GPU类型。问题是,当还指定了一个sm_30选项时,您指定的是--gpu-architecture的非有效选项--gpu-code。
您应该将compute_30传递给--gpu-architecture,sm_30传递给--gpu-code
另外,请确保您使用的是正确的nvcc,并且不会无意中使用一些旧版本的CUDA工具包。
一旦解决了编译问题,就会有一个环境变量CUDA_DEVICE,pycuda将观察到这个变量来选择特定安装的GPU。
来自这里
CUDA_DEVICE=2 python my-script.py顺便说一句,其他人有你的问题。你确定你没有一个旧版本的PyCUDA正在使用的CUDA工具包吗?
发布于 2013-07-30 14:06:22
我不知道Python包装器(或者一般的Python ),但是在C++中有亲和力 NVidia扩展,它允许您针对特定的GPU。也许您可以用Python为它编写一个包装器。
编辑:
现在我看到您实际上正在运行Linux,解决方案是更简单的(C++).You只需要在上下文init之前枚举XDisplay。
因此,默认的GPU通常以显示字符串"0.0“为目标。
要用第二个GPU打开显示器,您可以这样做:
const char* gpuNum = "0:1";
if (!(_display = XOpenDisplay(gpuNum ))) {
printf("error: %s\n", "failed to open display");
} else {
printf("message: %s\n", "display created");
}
////here comes the rest of context setup....发布于 2022-10-11 11:16:40
https://stackoverflow.com/questions/17949168
复制相似问题