Сборка последней версии MUMPS 5.2.1 в Ubuntu 16.04 - PullRequest
0 голосов
/ 11 ноября 2019

Как указано в файле INSTALL в верхнем каталоге тарбола, я выполнил

cp Make.inc/Makefile.debian.PAR ./Makefile.inc

Затем я запустил make. Однако я столкнулся со следующей ошибкой.

make[1]: Entering directory '../MUMPS_5.2.1/examples'
mpif90 -O -fopenmp  -I. -I../include -I../src -c dsimpletest.F -o dsimpletest.o
mpif90 -o dsimpletest -O -fopenmp dsimpletest.o  ../lib/libdmumps.a ../lib/libmumps_common.a   
-L/usr/lib  -lmetis -L../PORD/lib/ -lpord -L/usr/lib -lesmumps -lscotch -lscotcherr -lscalapack- 
openmpi -llapack  -lblas -lpthread
/usr/bin/ld: ../lib/libdmumps.a(dend_driver.o): undefined reference to symbol 'blacs_gridexit_'
//usr/lib/libblacs-openmpi.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:36: recipe for target 'dsimpletest' failed
make[1]: *** [dsimpletest] Error 1
make[1]: Leaving directory '/.../MUMPS_5.2.1/examples'
Makefile:52: recipe for target 'dexamples' failed
make: *** [dexamples] Error 2

Чтобы выследить источник ошибки, я попробовал каждую точность по очереди

make s     # single precision real
make d     # double precision real
make c     # complex
make z     # double complex

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

make sexamples
make dexamples
make cexamples
make zexamples

Распространенная ошибка:

mpif90 -o dsimpletest -O -fopenmp dsimpletest.o  ../lib/libdmumps.a ../lib/libmumps_common.a   
-L/usr/lib  -lmetis -L../PORD/lib/ -lpord -L/usr/lib -lesmumps -lscotch -lscotcherr -lscalapack- 
openmpi -llapack  -lblas -lpthread
/usr/bin/ld: ../lib/libdmumps.a(dend_driver.o): undefined reference to symbol 'blacs_gridexit_'
//usr/lib/libblacs-openmpi.so.1: error adding symbols: DSO missing from command line

Я установил все эти пакеты, которые содержат блейки, но все еще не работал

   sudo apt install libscalapack-openmpi1
   sudo apt install libscalapack-mpi-dev
   sudo apt install libblacs-mpi-dev
   sudo apt install libblacs-openmpi1
   sudo apt install blacs-mpi-test blacs-test-common

Что делать дальше?

1 Ответ

0 голосов
/ 11 ноября 2019

Каталог примеров внутри архива имеет свой собственный Makefile. Он импортирует файл Makefile.inc из каталога верхнего уровня

Оригинальный файл Makefile.inc

LIBBLAS = -lblas
LIBOTHERS = -lpthread

Если вы установили весь пакет blacs выше, ваш / usr / lib будет выглядеть примерно такthis

 find . -iname "*blacs*"
./libblacs-openmpi.so.1.1
./libblacsF77init-openmpi.a
./libblacsCinit-openmpi.so.1
./libblacsF77init-openmpi.so.1
./blacs
./blacs/fblacs_test_shared-openmpi
./blacs/cblacs_test_shared-openmpi
./blacs/fblacs_test_static-openmpi
./blacs/cblacs_test_static-openmpi
./libblacsCinit-openmpi.a
./libblacs-openmpi.a
./libblacsCinit-openmpi.so.1.1
./libblacsF77init-openmpi.so.1.1
./libblacs-openmpi.so
./libblacsF77init-openmpi.so
./libblacsCinit-openmpi.so
./libblacs-openmpi.so.1

Измените строки в Makefile.inc на

LIBBLAS   = -lblas
LIBOTHERS = -lpthread -lblacs-openmpi

У меня все заработало. Выполняемая команда компилятора теперь

mpif90 -o dsimpletest -O -fopenmp dsimpletest.o  ../lib/libdmumps.a ../lib/libmumps_common.a    
-L/usr/lib  -lmetis -L../PORD/lib/ -lpord -L/usr/lib -lesmumps -lscotch -lscotcherr -lscalapack-
openmpi -llapack  -lblas -lpthread -lblacs-openmpi

... в отличие от исходной команды без команды компоновщика -lblacs-openmpi.

Теперь каталог examples содержит все встроенные исполняемые примеры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...