【问题标题】:CUDA and Open MPCUDA 和 Openmp
【发布时间】:2013-03-02 07:44:07
【问题描述】:

我目前没有Fermi,但目标平台是tesla/Fermi,我想问的是Fermi是否支持这样的Open 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.

【问题讨论】:

    标签: multithreading cuda openmp nvidia


    【解决方案1】:

    是的,类似is possible。在尝试将多个内核启动到同一设备时(超出流提供的功能),OpenMP 不会提供任何特定的好处,并且如果您的意图是实现内核的并发执行,那么它也不是必需的。

    带有 CUDA 的 OpenMP 的典型用例是 to manage multiple devices

    【讨论】:

    • 好吧,如果我正确理解流,那么没有并行我认为我必须使用嵌套的 for 循环和不必要的流同步(这可能会损害性能)来实现这一点(任务是让有限数量的流同时对非常大的矩阵的列进行一些分析)。
    • 值得注意的是,这种方法只能在 CUDA 4 或更高版本上工作。在 CUDA 4 之前,上下文不是线程安全的,需要通过上下文迁移 API 显式迁移。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-19
    • 2012-07-07
    相关资源
    最近更新 更多