2016-01-20 4 views
2

Я пытаюсь скомпилировать 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 

Пара вопросов

  1. Каковы преимущества Включив OpenMP, я предполагаю, что это повысит производительность?
  2. Как исправить ошибку, с которой я сталкиваюсь при построении? Связано ли это с привязкой правильной библиотеки? -fopenmp правильно используется при построении. Файлы libgomp. * также находятся в $ LIBRARY_PATH и $ LD_LIBRARY_PATH.

Это может быть простая вещь, которую мне не хватает, но я попытался найти правильный ответ без успеха.

Благодарим за помощь.

+0

Я далек от эксперта по этому вопросу, но OpenMP - это один из способов запуска R многопоточности. Я думаю, что вам нужно закодировать его специально, поэтому, если вы не собираетесь его использовать, это может и не иметь значения. – alistaire

+0

Похоже, что функция colSum из базового пакета R, по-видимому, использует openMP. Мне придется немного углубиться, чтобы понять, не влияет ли это на время работы с OpenMP и без него. –

+0

Для вопроса № 1 многопоточность в основном необходима для современных вычислений. Вы получите значительный импульс. –

ответ

2

У меня та же проблема:

Gcc -Wl, - экспорт-динамический -fopenmp -L/USR/местные/Библиотека -o R.bin Rmain.o CommandLineArgs.o Rdynload.o Renviron. o RNG.o agrep.o apply.o arithmetic.o массив.o атрибут.o bind.o встроенный.о характер.o coerce.o colors.o complex.o connections.o context.o cum.o dcf.o datetime .o debug.o deparse.o devices.o dotcode.o dounzip.o dstruct.o duplicate.o edit.o engine.o envir.o errors.o eval.o format.o gevents.o gram.o gram-ex .o graphics.o grep.o identity.o inlined.o inspect.o internet.o iosupport.o lapack.o список.o localecharset.o logic.o main.o mapply.o match.o memory.o names.o объекты.o опции.o паста.o платформа.o plot.o plot3d.o plotmath.o принт.o принтarray.o принтvector.o принтutils.o qsort.o radixsort.o случайный.o raw.o регистрация.o relop.o rlocale.o saveload.o скан.o seq.o serialize.o вид.o источник.o split.o sprintf.o старт.о subassign.o subscript.o подсеть.o краткое изложение.o sysutils.o раз. o unique.o util.o version.o g_alab_her.o g_cntrlify.o g_fontdb.o g_her_glyph.o xxxpr.o ls ../unix/*.o ../appl/*.o ../nmath/*.o ../extra/tre/libtre.a -L ../../ lib -lRblas -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -lgfortran -lm -lquadmath -lreadline -lpcre -llzma -lbz2 -lz -lrt -ldl -lm array.o: В функции do_colsum': /home/myaccount/Downloads/R-patched/src/main/array.c:1437: undefined reference to GOMP_parallel ' collect2: error: ld вернулся 1 статус выхода Makefile: 144: рецепт цели 'R.bin' не выполнен

Это проблема конфигурации из R (проблема с автотестами). Мой компьютер имеет как gcc 4.8 (поставляется с ОС), так и последняя версия gcc 5.2 (я строю из исходного кода). Gcc 5.2 находится в каталоге/usr/local

Я видел, что R смешивает эти два устройства и не собирает расположение библиотек 5.2.

Я изменил Makefile (это только одно исправление времени, так как файл make создается с помощью autotool).

Сначала перейдите в src/main directory.Затем отредактируйте Makefile:

143 $ (R_binary): $ (R_bin_OBJECTS) $ (R_bin_DEPENDENCIES) 144 $ (MAIN_LINK) -o $ @ $ (R_bin_OBJECTS) $ (R_bin_LDADD)

Эдите линия 144:

144 $ (MAIN_LINK) -o $ @ $ (R_bin_OBJECTS) -L/USR/местные/lib64 -lgomp $ (R_bin_LDADD)

Это фиксированная моя проблема. Мне было сложно найти ошибку в проекте R. Если бы разработчики R увидели это, могли бы они исправить это на уровне автоматической настройки? Автоматическое зондирование просто должно быть немного умнее.

+0

У меня тоже такая проблема. – shevy

Смежные вопросы