如果我在 64位配置中编译并运行CUDA程序,我就无法并行运行2个实例,每个实例都在专用设备上运行(cudaSetDevice(0)
和{ {1}})。
首先运行两个程序中的哪一个(一个目标设备0或一个目标设备1)并不重要,当第二个程序运行时,我从第一个CUDA函数调用得到错误30(是{{1} }或cudaSetDevice(1)
)。这不是我的程序所特有的 - 我尝试使用由VS2012自动创建的示例项目,并得到了相同的结果。
然而,在32位版本中不会发生 - 我能够毫无问题地运行这两个实例。
我尝试卸载CUDA工具包和驱动程序并重新安装,没有任何帮助。
更新:我还可以运行2个程序,一个64位和一个32位,但只有当我首先运行64位版本然后运行32位版本时,它不会相反(相同的错误30)。
Win7 x64,VS2012,CUDA 6.5 64位(也试过5.5,结果相同),驱动程序344.75(之前的版本也失败了)。 i7-3820,32GB RAM,2xTITAN卡,另一张驱动显示器的ATI卡。
失败的示例代码:
cudaSetDevice()
运行上面的代码两次,一次使用param 0,一次使用param 1 - 失败。使用参数0或1运行一次成功。