OpenMPI 에서 processor 를 많이 잡을 경우 발생하는 에러에 대해서 질문입니다.
OpenMPI를 이용하는 프로그램 실행 시 지속적으로 아래와 같은 메세지를 마주치게 되는데요,
Program received signal SIGSEGV: Segmentation fault - invalid memory reference.
Backtrace for this error:
--------------------------------------------------------------------------
An MPI process has executed an operation involving a call to the
"fork()" system call to create a child process. Open MPI is currently
operating in a condition that could result in memory corruption or
other system errors; your MPI job may hang, crash, or produce silent
data corruption. The use of fork() (or system() or other calls that
create child processes) is strongly discouraged.
The process that invoked fork was:
Local host: node12 (PID 4360)
MPI_COMM_WORLD rank: 2
If you are *absolutely sure* that your application will successfully
and correctly survive a call to fork(), you may disable this warning
by setting the mpi_warn_on_fork MCA parameter to 0.
--------------------------------------------------------------------------
우선 검색을 해 보면 종종 사람들이 마주치는 에러 같지만, 아무래도 Segmentation fault 라서 명확한 해결책은 나와있지가 않습니다.
다만, mpirun을 하는 processor 개수를 점차 낮추다 보면 어느 시점부터는 메세지가 뜨지 않고 프로그램이 잘 돌아가는 것을 확인할 수 있습니다. 그래서 관련해서 'MPI errors with large number of processors' 정도로 검색을 해 봐도 딱히 나오는게 없네요.
그래서 마지막으로 혹시 KLDP 분들께서 혹시 이런 메세지를 경험하신 분이 있으실까 싶어 질문 올리게 되었습니다. 혹시 유사한 에러 메세지를 경험하신 분이 계신가요??
프로세서(processor)와 프로세스(process
프로세서(processor)와 프로세스(process)를 반대로 입력해서 검색 결과가 안 나오는 걸 수도 있습니다. 한국말로 써 놓았을 때 헷갈리기 쉽지만 완전히 다른 것입니다. 그리고 혹시 문제의 프로그램의 소스 코드가 있나요? 경고 메시지의 뜻은 fork()를 반복해서 호출할 때 문제가 발생할 수도 있다는 것입니다.
댓글 달기