Я пытаюсь скомпилировать R в среде Linux Redhat на кластере HPC. Я использовал модули среды для установки последних версий ряда инструментов, включая GCC 5.2.0. Я не могу заставить R строить из источника. Он не работает с неопределенной ссылкой на «GOMP_parallel». Когда я компилирую с параметром --disable-openmp, он компилируется отлично.Ошибка при построении R из источника с поддержкой gcc OpenMP
array.o: In function `do_colsum':
array.c:(.text+0x5829): undefined reference to `GOMP_parallel'
collect2: error: ld returned 1 exit status
make[3]: *** [R.bin] Error 1
make[3]: Leaving directory `/scratch/kokul/240763.hpc5/R- 3.2.3/src/main'
make[2]: *** [R] Error 2
make[2]: Leaving directory `/scratch/kokul/240763.hpc5/R- 3.2.3/src/main'
make[1]: *** [R] Error 1
make[1]: Leaving directory `/scratch/kokul/240763.hpc5/R-3.2.3/src'
make: *** [R] Error 1
Пара вопросов
- Каковы преимущества Включив OpenMP, я предполагаю, что это повысит производительность?
- Как исправить ошибку, с которой я сталкиваюсь при построении? Связано ли это с привязкой правильной библиотеки? -fopenmp правильно используется при построении. Файлы libgomp. * также находятся в $ LIBRARY_PATH и $ LD_LIBRARY_PATH.
Это может быть простая вещь, которую мне не хватает, но я попытался найти правильный ответ без успеха.
Благодарим за помощь.
Я далек от эксперта по этому вопросу, но OpenMP - это один из способов запуска R многопоточности. Я думаю, что вам нужно закодировать его специально, поэтому, если вы не собираетесь его использовать, это может и не иметь значения. – alistaire
Похоже, что функция colSum из базового пакета R, по-видимому, использует openMP. Мне придется немного углубиться, чтобы понять, не влияет ли это на время работы с OpenMP и без него. –
Для вопроса № 1 многопоточность в основном необходима для современных вычислений. Вы получите значительный импульс. –