Может кто-нибудь дать мне простую программу на C ++, использующую OpenMP с GPU Nvidia в качестве цели, и дать мне строку для ее компиляции?
Я использую Ubuntu 19.10 на двухъядерном Intel с двумя ядрами Xeon.
Соответствующие пакеты, которые я установил, включают в себя:
g++-9 9.2.1-9ubuntu2
gcc-9-offload-nvptx 9.2.1-9ubuntu2
libgomp-plugin-nvptx1:amd64 9.2.1-9ubuntu2
nvptx-tools 0.20180301-1
Я часами искал и пробовал советы, некоторые из которых противоречивы, а большая часть, казалось бы, устарела. Например, я не хочу компилировать компилятор. Вот мой минимальный нерабочий пример:
int main() {
double s;
#pragma omp target teams distribute parallel for reduction(+:s) map(tofrom:s)
for (int idx = 0; idx < 1000; ++idx) s+= idx;
std::cout << s << std::endl;
}
Как я его скомпилировал: g++ target2.cc -fopenmp -fno-stack-protector
Вывод:
cc1plus: warning: could not emit HSAIL for the function [-Whsa]
cc1plus: note: support for HSA does not implement non-gridified OpenMP parallel constructs.
munmap_chunk(): invalid pointer
mkoffload: fatal error: x86_64-linux-gnu-accel-nvptx-none-gcc-9 terminated with signal 6 [Aborted], core dumped
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
[1] 29044 exit 1 g++ target2.cc -fopenmp -fno-stack-protector
Помощь? Спасибо.