【问题标题】:using openmp with a makefile and g++使用带有 makefile 和 g++ 的 openmp
【发布时间】:2010-08-16 17:34:09
【问题描述】:

我正在使用最初使用 icpc 构建的 makefile 构建一个大型项目,现在我需要使用 g++ 运行它。

当它编译使用 openmp 的文件时,它使用 -c 标志,并且不使用任何库,因此它最终是串行的而不是 openmp。我看到的所有示例都没有使用这个 -c 标志。

有没有什么方法不用链接,而是使用openmp编译?

编辑:

我一直在使用 -lgomp 标志(并且库位于库路径上):

g++ -lgomp -c -w -O4 mainS.cpp
g++: -lgomp: 链接器输入文件未使用,因为链接未完成

编辑:我的老板在代码、makefile 和文档中犯了几个错误。很抱歉浪费了你的时间,至少比我花在上面的时间还不到 5 小时 =/

【问题讨论】:

    标签: gcc makefile g++ openmp icc


    【解决方案1】:

    您是否传递了启用 OpenMP 的标志(IIRC 它类似于 -fopenmp?如果您不这样做,编译器可能会忽略与 OpenMP 相关的原语并只生成串行代码。

    我认为 -c (即仅编译,不喜欢)与您的问题没有任何关系。

    【讨论】:

    • @Jeremy,我假设您已经检查过您的 g++ 版本是否支持 OpenMP?
    • 它的路径上有 lgomp 库,如果这就是你的意思的话。除此之外,我不确定如何检查。
    • @Jeremy,IIRC OpenMP 支持包括编译器中对 openmp 原语的支持和一些库支持,因此您需要两者才能成功使用 OpenMP。
    • 感谢您的帮助,一旦源代码和 makefile 被更改,-fopenmp 就可以解决问题了。
    【解决方案2】:

    也许documentation 有帮助...

    【讨论】:

    • 这似乎不起作用,除了查看顶部之外,是否有其他方法可以判断它是否使用 openmp 支持编译?
    • 您可能可以从生成的程序集中看出,但我对此一无所知。其他人也许可以在那里帮助你。还有健全性检查:stackoverflow.com/questions/1302368/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-13
    • 1970-01-01
    • 2022-01-26
    • 2018-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多