title: What is advantage of Hyper-Q of GK110 over Concurrent Kernels of GK104/GF104 nvidia cards?
body: <p>If I have multithread application and my own thread that control CUDA device and schedule kernels to different streams I can achieve very high GPU usage also on devices prior to Kepler-2 (GK110) famaly like Fermi and Kepler-1 (GK104).</p>
  
  <p>So I don't see good reason aspire to more expensive cards.</p>
  
  <p>flowing my test example and profiling on Fermi card:</p>
  
  <pre><code>void ut_concurent_kernels()
  {
    int i,j;
    cudaEvent_t kernelEvent;
    cudaStream_t    work_stream[14];
  
  
    for (i = 0; i &lt; 14;i++)
    {
      cudaStreamCreate( &amp;work_stream[i]);
    }
    cudaEventCreateWithFlags(&amp;kernelEvent, cudaEventDisableTiming);
  
    for (j = 0; j &lt; 2;j++)
    {
      for (i = 0; i &lt; 14;i++)
      {
        if (i == 13)
        {
          checkCudaErrors(cudaEventRecord(kernelEvent, work_stream[i]));
        }
        Kernel_Work&lt;&lt;&lt;1,256,0,work_stream[i]&gt;&gt;&gt;(100000);
      }
      checkCudaErrors(cudaStreamWaitEvent(work_stream[i-1], kernelEvent,0));
    }
    cudaDeviceSynchronize();
  
    for (i = 0; i &lt; 14;i++)
    {
      cudaStreamDestroy(work_stream[i]);
    }
    cudaEventDestroy(kernelEvent);
  } 
  </code></pre>
  
  <p><img src="https://i.stack.imgur.com/WMA5u.png" alt="Profiling"></p>