C++ OpenCV 3中的OpenCL只能看到一个GPU 我试图在MacBook Pro上调用英伟达GT650M GPU,其索引是代码>1 < /代码>,GPU的索引为“代码< 0”/COD>。(从运行$clinfo中找到)

C++ OpenCV 3中的OpenCL只能看到一个GPU 我试图在MacBook Pro上调用英伟达GT650M GPU,其索引是代码>1 < /代码>,GPU的索引为“代码< 0”/COD>。(从运行$clinfo中找到),c++,opencv,opencl,C++,Opencv,Opencl,正如中所述: 在OpenCV 3.0.0 beta[或更高版本]中,仅检测到单个设备: context.ndevices() // returns 1 instead of 2 当我运行上面答案中的代码时,OpenCV将始终使用第一个GPU,尽管设置了cv::ocl::Device(context.Device(1)) 一个讨论线程说这可能是由于英伟达GPU在平台上的兼容性(1.1),但我不是这样的。 我编写了一个简单的OpenCL程序,在英伟达GPU上创建一个上下文并运行内核,并成功了。因此

正如中所述:

在OpenCV 3.0.0 beta[或更高版本]中,仅检测到单个设备:

context.ndevices() // returns 1 instead of 2
当我运行上面答案中的代码时,OpenCV将始终使用第一个GPU,尽管设置了
cv::ocl::Device(context.Device(1))

一个讨论线程说这可能是由于英伟达GPU在平台上的兼容性(1.1),但我不是这样的。

我编写了一个简单的OpenCL程序,在英伟达GPU上创建一个上下文并运行内核,并成功了。因此,这不是OpenCL硬件兼容性问题(苹果的支持也证实了这一点)

我尝试过但没有起到作用的是:

  • 在系统首选项中关闭自动图形切换
  • 切换到Nvidia Web驱动程序(从macOS本机驱动程序)并安装CUDA

  • OpenCL:1.2,在两个GPU上
  • OpenCV:3.4.1,来自自制
  • OS:macOS High Sierra 10.13.4
  • Xcode:9.3

您是否尝试将650M设置为默认系统图形卡?尝试禁用集成图形,看看它是否使用650M。我在运行960M Linux的华硕笔记本电脑上也遇到了类似的问题。英伟达的解决方案是使用NVIDIA卡作为默认的,在OS的显示设置中作为次要的集成图形。@ SabkPutel,你是说禁用节能器中的自动图形切换吗?如果你有机会访问英伟达控制面板,我想你可以在那里设置默认卡,如果不是,那么它应该在显示设置中。我对mac不是很熟悉,所以不知道如何设置默认卡的细节。@sparkplug谢谢您的检查!在Mac电脑上,我可以要求操作系统使用Nvidia GPU,但这无助于解决这个问题。“英伟达GPU在OpenCL程序中是可用的,但不在代码> CV:::OCL::/COD>。