[mephi-hpc] Geant4 и MPI

Ибрагимов Ренат Фаридович RFIbragimov at mephi.ru
Mon Sep 7 17:56:34 MSK 2020


Добрый вечер. 
Установил версию Geant4.10.03.p03 в директорию /mnt/pool/4/rfibragimov/geant4.10.03.p03_install, проверил работоспособность на базовом примере B1, всё в порядке, пример собрался, при запуске в информационной шапке отображается именно установленная версия программы. 
При попытке установить библиотеку G4mpi в соответствии с инструкциями натыкаюсь на такую ошибку при сборке (продублировал процесс попытки сборки в прикрепленном изображении): 
 [ 71%]  Building CXX object CMakeFiles/G4mpi.dir/src/G4MPIscorerMerger.cc.o
/mnt/pool/4/rfibragimov/test/MPI/source/src/G4MPIscorerMerger.cc: In member function ‘void {anonymous}::MPIStatDouble::Pack(void*, int, int*, MPI::Intracomm&) const’:
/mnt/pool/4/rfibragimov/test/MPI/source/src/G4MPIscorerMerger.cc:48:65: error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive]
MPI_Pack(&m_n,1,MPI::INT,buffer,bufferSize,position,comm);
^
/mnt/pool/4/rfibragimov/test/MPI/source/src/G4MPIscorerMerger.cc:50:69: error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive]
MPI_Pack(&data,5,MPI::DOUBLE,buffer,bufferSize,position,comm);
^
/mnt/pool/4/rfibragimov/test/MPI/source/src/G4MPIscorerMerger.cc: In member function ‘void G4MPIscorerMerger::Pack(const G4VScoringMesh*)’:
/mnt/pool/4/rfibragimov/test/MPI/source/src/G4MPIscorerMerger.cc:342:88: error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive]
MPI_Pack(nn,ss,MPI::CHAR,outputBuffer,outputBufferSize,&outputBufferPosition,comm);
^
make[2]: *** [CMakeFiles/G4mpi.dir/src/G4MPIscorerMerger.cc.o] Error 1
make[1]: *** [CMakeFiles/G4mpi.dir/all] Error 2
make: *** [all] Error 2

Попытался найти решение в интернете, вроде бы нашел информацию о том, что данная ошибка может быть связана с особенностями компилятора, и при включении флага -fpermissive при сборке компилятор пропустит данную ошибку (выдаст только предупреждение). Однако применить данную информацию не смог. 
Хотел поинтересоваться, возможно вы сможете подсказать вариант решения? 
Заранее спасибо. 

-----Original Message-----
From: hpc <hpc-bounces at lists.mephi.ru> On Behalf Of anikeev
Sent: Monday, September 7, 2020 11:57 AM
To: NRNU MEPhI HPC discussion list <hpc at lists.mephi.ru>
Subject: Re: [mephi-hpc] Geant4 и MPI

On Fri, 2020-09-04 at 17:14 +0000, Ибрагимов Ренат Фаридович wrote:
> Добрый день.

Здравствуйте!

> Обнаружил, что скорость вычислений для проектов Geant4 на кластерах 
> Unicluster и Basov не чувствительна к увеличению количества 
> подключаемых к расчету узлов. Проекты, на которых проводилась 
> проверка, написаны с учетом возможности работы в многопоточном режиме 
> (G4MultiThreading). При этом замечено, что ускорение вычислений 
> происходит только при увеличении числа подключаемых процессоров в 
> пределах одного узла (одного нода). Добавление второго и более нодов 
> не приводит к повышению скорости расчетов.
> Правильно ли я понимаю, что для полноценного использования 
> возможностей нескольких вычислительных узлов (нодов), проект в Geant4 
> должен быть написан с учетом MPI?
> Пришел к этому выводу в процессе поиска информации в интернете. Вот 
> примерно похожий случай, упоминаемый на форуме Geant4:
> https://geant4-forum.web.cern.ch/t/multithreading-isnt-effective-after
> -some-numbers-of-cores/1699

Это объяснено в разделе 4.5.2 официального руководства пользователя, а
именно:

Параллелизм на общей памяти (многоядерные процессоры и многопроцессорные серверы) можно реализовать при помощи технологий OpenMP (или POSIX threads - "pthreads", или fork/join вручную) и MPI.
OpenMP позволяет экономить память, MPI может показать большую производительность на NUMA системах.

Стандартным де-факто инструментом параллелизма на раздельной памяти (узлы вычислительной сети) является MPI. Существуют различные реализации MPI (OpenMPI, MPICH...).

Учебные материалы по параллельному программированию находятся здесь:

https://it.mephi.ru/hpc/materials

> Если это так, то возникает дополнительный вопрос/просьба. В наборе 
> стандартных примеров Geant4 присутствуют примеры, описывающие принципы 
> создания проектов, направленных на работу в параллельных вычислениях 
> (с помощью MPI), однако у меня не удалось осуществить сборку данных 
> базовых примеров (собирал пример, расположенный по адресу 
> /usr/share/Geant4-
> 10.3.0/examples/extended/parallel/MPI/examples/exMPI01   и получил
> при сборке следующую ошибку: 
> CMake Error at CMakeLists.txt:30 (find_package):
>   By not providing "FindG4mpi.cmake" in CMAKE_MODULE_PATH this project 
> has
>   asked CMake to find a package configuration file provided by 
> "G4mpi", but
>   CMake did not find one.
>  
>   Could not find a package configuration file provided by "G4mpi"
> with any of
>   the following names:
>  
>     G4mpiConfig.cmake
>     g4mpi-config.cmake
>  
>   Add the installation prefix of "G4mpi" to CMAKE_PREFIX_PATH or set
>   "G4mpi_DIR" to a directory containing one of the above files.  If 
> "G4mpi"
>   provides a separate development package or SDK, be sure it has been
>   installed.
>  
> -- Configuring incomplete, errors occurred!
>  
> Не уверен, что правильно понимаю, но из README файлов к MPI примерам 
> следует, что нужно установить библиотеку G4mpi в директорию, в которую 
> был установлен Geant4.

На кластерах МИФИ системные пакеты устанавливаются в той конфигурации, в какой они поставляются из дистрибутива, поскольку желаемые конфигурации различных пользователей конфликтуют друг с другом.

При необходимости использования нестандартной конфигурации, приложение следует собирать из исходного кода в директории пользователя. Обратите внимание на раздел 4.4 официального руководства пользователя.

Обратите внимание, что на кластерах unicluster и basov будет обновляться программное обеспечение, что потребует переборки пользовательских приложений.

Попробуйте собрать свежий Geant4 с поддержкой G4mpi в своей директории на файловом хранилище. Включение поддержки G4mpi не сводится к копированию файлов и должно быть выполнено по официальному руководству пользователя для приложения (пример для версии 4.10):

http://www.apc.univ-paris7.fr/~franco/g4doxy4.10/html/md___volumes__work_geant_geant4_810_800_8p01_examples_extended_parallel__m_p_i__r_e_a_d_m_e.html

Обращайтесь при появлении вопросов или затруднений.

> Заранее спасибо за ответ.
> --
>  тел.: +7 999 718 97 00; дополнительный e-mail: ibragimrf at gmail.com
>  
> С уважением, инженер НИЯУ МИФИ, Ибрагимов Ренат Фаридович. 
>  
> _______________________________________________
> hpc mailing list
> hpc at lists.mephi.ru
> https://lists.mephi.ru/listinfo/hpc
--
С уважением,
инженер отдела Unix-технологий МИФИ,
Аникеев Артём.
Тел.: 8
(495) 788-56-99, доб. 8998
_______________________________________________
hpc mailing list
hpc at lists.mephi.ru
https://lists.mephi.ru/listinfo/hpc
-------------- next part --------------
A non-text attachment was scrubbed...
Name: MPI error 2.PNG
Type: image/png
Size: 105139 bytes
Desc: MPI error 2.PNG
URL: <http://lists.mephi.ru/pipermail/hpc/attachments/20200907/8e72f365/attachment-0001.png>


More information about the hpc mailing list