[mephi-hpc] Geant4 и MPI

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


Понял, спасибо, буду пробовать.

тел.: +7 (999) 718-97-00  дополнительный e-mail: goodvin360 at yandex.ru

С уважением, инженер НИЯУ МИФИ, Ибрагимов Ренат.

________________________________________
От: hpc [hpc-bounces at lists.mephi.ru] от имени anikeev [anikeev at ut.mephi.ru]
Отправлено: 7 сентября 2020 г. 18:05
Кому: NRNU MEPhI HPC discussion list
Тема: Re: [mephi-hpc] Geant4 и MPI

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

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

> Установил версию 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:6
> 5: 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:6
> 9: 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,&outputBufferP
> osition,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 при сборке компилятор пропустит
> данную ошибку (выдаст только предупреждение). Однако применить данную
> информацию не смог.

Флаги компилятора можно передавать CMake при помощи переменных
окружения:

export CFLAGS=-fpermissive
export CXXFLAGS=-fpermissive
cmake ...

> Хотел поинтересоваться, возможно вы сможете подсказать вариант
> решения?
> Заранее спасибо.
>
> -----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
> _______________________________________________
> 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


More information about the hpc mailing list