【问题标题】:Using openMP in the cuda host code?在 cuda 主机代码中使用 openMP?
【发布时间】:2015-10-28 20:02:34
【问题描述】:

是否可以在 CUDA 文件中(不在内核代码中)使用 openMP pragma?

我将结合 gpu 和 cpu 计算。但是如果我将 porgram 与 openmp 选项链接(在 linux 下),nvvc 编译器会失败并显示“找不到未知选项 'openmp'”

一种解决方法是仅在 c/c++ 文件中使用 openMP-statments。

【问题讨论】:

    标签: c++ cuda openmp


    【解决方案1】:

    我刚刚找到了这个

    http://www.cse.buffalo.edu/faculty/miller/Courses/CSE710/heavner.pdf

    第 25 页说:

    使用 gcc: -#include omp.h

    添加-fopenmp 标志

    对于 nvcc,这应该是 -Xcompiler -fopenmp 因为这需要直接传递给 gcc -Xcompiler 将标志直接传递给宿主编译器

    在链接阶段添加-lgomp标志。

    我还没试过……

    【讨论】:

    • 小心处理和粘贴参数。如果您仔细观察,-Xcompiler -fopenmp 上的破折号与命令行破折号不同。
    • 破折号现已修复。
    【解决方案2】:

    我尝试在“附加编译器选项”中编写参数,但没有成功。

    我为 Visual Studio 2010 和 CUDA 4.2 做了什么:

    在项目属性 -> 配置属性 -> CUDA C/C++ -> 命令行 -> 附加选项: -Xcompiler "/openmp"

    这导致生成的构建命令中有两个 -Xcompiler 参数,但没有导致任何问题并成功运行。

    【讨论】:

      【解决方案3】:

      从 nvidia-forum 找到的 Visual Studio 的解决方案:

      将“/openmp”标志添加到 cuda 构建规则中的额外 C++ 选项中。稍后我会尝试 linux 的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-06-15
        • 2013-06-11
        • 2011-03-31
        • 1970-01-01
        • 1970-01-01
        • 2021-05-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多