Multithreading CUDA和Open MP

Multithreading CUDA和Open MP,multithreading,cuda,openmp,nvidia,Multithreading,Cuda,Openmp,Nvidia,我目前没有费米,但目标平台是特斯拉/费米,我想问的问题是,费米是否支持开放式MP,如下所示: #pragma omp parallel for num_threads(N) for (int i=0; i<1000; ++i) { int threadID=omp_get_thread_num(); cudafunctions<<<blocks, threads, 1024, streams[threadID]>>>(input+i*colsi

我目前没有费米,但目标平台是特斯拉/费米,我想问的问题是,费米是否支持开放式MP,如下所示:

#pragma omp parallel for num_threads(N)

for (int i=0; i<1000; ++i)
{
  int threadID=omp_get_thread_num();
  cudafunctions<<<blocks, threads, 1024, streams[threadID]>>>(input+i*colsizeofinput);
}//where there are N streams created.
用于num_线程(N)的pragma omp parallel 对于(int i=0;i是的,类似于此。当尝试向同一设备启动多个内核时(超出流所提供的范围),OpenMP没有提供任何特定的好处,并且如果这是您的意图,则不需要实现内核的并发执行

OpenMP与CUDA的一个典型使用案例是。

是的,类似于这样。当尝试向同一设备启动多个内核时(超出流所提供的范围),OpenMP不提供任何特定的好处,如果您的意图是这样的,则不必实现内核的并发执行


使用CUDA的OpenMP的一个典型用例是。

如果我正确理解流,那么就没有并行,因为我认为我必须使用嵌套for循环来实现不必要的流同步(这可能会影响性能)(任务是让有限数量的流同时对非常大矩阵的列进行分析)。值得注意的是,这种方法只能在CUDA 4或更高版本上工作。在CUDA 4之前,上下文不是线程安全的,需要通过上下文迁移API显式迁移。好吧,如果我正确理解流,那么就没有并行性,因为我想我必须使用嵌套for循环与流的不必要同步(这可能会影响性能)来实现这一点(任务是让有限数量的流同时对非常大的矩阵的列进行一些分析)。值得注意的是,这种方法只能在CUDA 4或更高版本上工作。在CUDA 4之前,上下文不是线程安全的,需要通过上下文迁移API显式迁移。