采用OpenCL + NVidia的独家计算模式

时间:2010-04-23 09:45:02

标签: c cuda opencl

我对使用NVidia + OpenCL的独占计算模式有疑问。

我可以在nvidia-gpu上使用nvidia-smi设置独占计算模式(来自cuda编程指南3.0的第74页)。这意味着,只有一个程序可以在gpu上计算。

cuda运行时调度比app自动。

但在这种情况下我遇到opencl-programs的问题: 如果一个应用程序在具有设置的独占计算模式的gpu上运行,而第二个具有相同GPU的opencl-program调用clGetDeviceInfo(..., CL_DEVICE_AVAILABLE, ...)则是result == CL_TRUE。之后如果opencl-app尝试在此设备上创建上下文,则会崩溃正在运行的应用程序(两者)。

如何通过OpenCL找到可用的GPU?

感谢。

2 个答案:

答案 0 :(得分:1)

clGetDeviceIds返回设备及其设备ID的数量。然后,您可以检查每个设备是否可用。我不确定它是否能解决崩溃问题。

答案 1 :(得分:0)

我有一个类似的问题,我希望在列表中找到最好的OpenCL设备。我找不到解决方案,所以我自己写了一个。它将尝试在设备上创建上下文。如果不能,它将尝试下一个。

它还支持多个OpenCL平台。您可以选择nvidia(仅限gpu),amd(gpu& cpu),intel(cpu)和apple(gpu& cpu)。

你可以在github上找到它:https://github.com/nbigaouette/oclutils/

我仍在寻找更好的锁定机制。