我对使用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?
感谢。
答案 0 :(得分:1)
clGetDeviceIds返回设备及其设备ID的数量。然后,您可以检查每个设备是否可用。我不确定它是否能解决崩溃问题。
答案 1 :(得分:0)
我有一个类似的问题,我希望在列表中找到最好的OpenCL设备。我找不到解决方案,所以我自己写了一个。它将尝试在设备上创建上下文。如果不能,它将尝试下一个。
它还支持多个OpenCL平台。您可以选择nvidia(仅限gpu),amd(gpu& cpu),intel(cpu)和apple(gpu& cpu)。
你可以在github上找到它:https://github.com/nbigaouette/oclutils/
我仍在寻找更好的锁定机制。