使用多GPU + CL-GL互操作缓冲区

时间:2015-05-20 11:38:44

标签: opencl

我用opencl实现了一个简单的代码,它使用16个Mthreads复制64MB数据。内核如下:

__kernel void myKernel(
  __global float4* a,
  __global float4* c,
  int count
  ){ 

  int thread_idx = get_global_id(0);
  if (thread_idx >= count) return;

  c[thread_idx] = a[thread_idx]; 
}

我的电脑有两个显卡(GTX 980 + GTX 970)和一个显示器。我使用的是Windows 8.1。我在主机上创建了c[...]缓冲区,一次使用普通clCreateBuffer,另一次使用opengl创建一个gl缓冲区并创建一个带clCreateFromGLBuffer的cl缓冲区。我的比较表明,使用clCreateBuffer创建的缓冲区总是具有相同的速度,但是在连接到显示器的gpu上创建的GL缓冲区要快得多,如图所示:

Kernel Code GTX 980 is connected to the display GTX 970 is connected to the display

我的调查显示clEnqueueAcquireGLBuffer使得未连接到显示器的gpu上的所有内容都变慢了。有没有人见过这样的问题?并知道我该如何解决它?

完整的代码可以在这里找到:https://github.com/mmostajab/TestGPUMem_CL

0 个答案:

没有答案