0

gcc-5.2 で cilk plus を使用してグラフィックス ハードウェアにオフロードできますか

g++ -std=c++14 -Wall -O3 -march=native -fcilkplus vec_add.cpp -o vec_add
vec_add.cpp:6:0: warning: ignoring #pragma offload target [-Wunknown-pragmas]
 #pragma offload target(gfx) pin(out, in1, in2 : length(n))

コンパイラは、次のテスト コードに対して上記の警告を出します。

#include <iostream>
#include <cilk/cilk.h>

void vec_add(int n, float *out, float *in1, float *in2)
{
#pragma offload target(gfx) pin(out, in1, in2 : length(n))
    cilk_for(int i = 0; i != n; ++i)
    {
        out[i] = in1[i] + in2[i];
    }
}

static int ar_sz = 100000;
int main (int argc, char **argv)
{
    float foo[ar_sz];
    float bar[ar_sz];
    float out[ar_sz];
    for(int i = 0; i != ar_sz; ++i)
    {
        foo[i] = i + ar_sz * 10;
        bar[i] = i;
    }
    vec_add(ar_sz, out, foo, bar);

    for(int i = 0; i != ar_sz; i += 100)
    {
        std::cout << "foo[" << i << "] =" << foo[i] << "\t|\tbar[" << i << "] =" <<  bar[i] << std::endl;
    }
}

でコンパイル

FLAGS=-std=c++14 -Wall -O3 -march=native -fcilkplus

all: vec_add fib

vec_add: vec_add.cpp
    g++ $(FLAGS) $< -o $@
4

2 に答える 2

0

私の知る限り、GCC は offload プラグマをサポートしていないため、これを行うことはできません。実際、警告メッセージは、それが未知のプラグマであることを明示しています。

于 2016-04-19T13:19:57.310 に答える
0

「Cilk Plus の完全なサポートが GCC コンパイラに追加されました。」これは、cilk plus の言語拡張のみを完全にサポートすることを意味します。Gcc は、Intel 統合グラフィックスにまったくオフロードできません。OpenMP は、Xeon Phi コプロセッサーと nvidia グラフィックス カードにオフロードできると報告されています。

https://gcc.gnu.org/ml/gcc/2016-04/msg00182.html

于 2016-04-20T23:39:37.653 に答える