GCC 无法编译 OpenMP 卸载到 GPU

问题描述

我在 Ubuntu 20.04 上使用 GCC 9.3。我想使用 OpenMP 将著名的 SAXPY 示例卸载到 GPU。我通过 sudo apt install gcc-9-offload-nvptx 安装了 GCC 的卸载功能。然后通过g++ -fopenmp main.cpp编译如下代码

int main()
{
    const size_t kNumel = 999999;

    float x[kNumel];
    float y[kNumel];

    for (size_t i=0 ;i <kNumel; i++)
    {
        x[i] = i;
        y[i] = i;
    }


    const float kCoef = 1.23f;

    #pragma omp target teams distribute parallel for
    for (size_t i=0; i < kNumel; i++)
    {
        y[i] = kCoef*x[i] + y[i];
    }

    return 0;
}

但它不会编译并显示错误

to1: error: ‘-fcf-protection=full’ is not supported for this target
mkoffload: Fatal error: x86_64-linux-gnu-accel-nvptx-none-gcc-9 returned 1 exit status
compilation terminated.
lto-wrapper: Fatal error: /usr/lib/gcc/x86_64-linux-gnu/9//accel/nvptx-none/mkoffload 
returned 1 exit status
compilation terminated.
/usr/bin/ld: error: lto-wrapper Failed
collect2: error: ld returned 1 exit status

添加-fno-stack-protector,但重现了相同的错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...