Ошибка в MPI_INIT при попытке простого mpi-скрипта в jni

При попытке openmpi/c через jni получаю сообщение об ошибке ниже. ошибка в MPI_INIT.

Ошибка не происходит, когда я запускаю скрипт c/ C++ вне jni.

Я погуглил ошибку и попытался использовать openmpi из apt-get и создать его локально (--enable static)

при создании кода я использую:

  mpic++ -pipe -w -D_JNI_IMPLEMENTATION_  -m64  -fPIC ./LCAGraph/*   - 
I./libs/ -I/usr/include/ -I/usr/local/include/ -std=c++11 -Wall -fexceptions -O3 -fopenmp -DBOOST_SYSTEM_NO_DEPRECATED \
        -I/usr/lib/jvm/java-8-oracle/include/  \
        -I/usr/lib/jvm/java-8-oracle/include/linux/ \
         -L./libs -lgsl -lgslcblas -lm  -lboost_mpi -lboost_serialization  -shared -o libLCAKernel.so

Для среды я использую Ubuntu и JVM работает внутри SBT

используемый код:

#include <boost/mpi.hpp>
#include <boost/serialization/vector.hpp>
#include "mpi.h"
.....
MPI_Init(NULL, NULL);    
MPI_Status status;
MPI_Comm workercomm;

int numworkers = 11;

.....

Ошибка:

            # A fatal error has been detected by the Java Runtime Environment:
            #
            #  SIGSEGV (0xb) at pc=0x00007f2a30f61850, pid=28003, tid=0x00007f2a398f4700
            #
            # JRE version: Java(TM) SE Runtime Environment (8.0_161-b12) (build 1.8.0_161-b12)
            # Java VM: Java HotSpot(TM) 64-Bit Server VM (25.161-b12 mixed mode linux-amd64 compressed oops)
            # Problematic frame:
            # C  [libmpi.so.12+0x7d850]  mca_btl_base_select+0x60
            #
            # Core dump written. Default location: /opt/workspace/LCA-Calculator-Single/core or core.28003
            #
            # An error report file with more information is saved as:
            # /opt/workspace/UBUBI-LCA-Calculator-Single/hs_err_pid28003.log
            #
            # If you would like to submit a bug report, please visit:
            #   http://bugreport.java.com/bugreport/crash.jsp
            # The crash happened outside the Java Virtual Machine in native code.
            # See problematic frame for where to report the bug.
            #
            [a7dfb6d7fc46:28003] *** Process received signal ***
            [a7dfb6d7fc46:28003] Signal: Aborted (6)
            [a7dfb6d7fc46:28003] Signal code:  (-6)
            [a7dfb6d7fc46:28003] [ 0] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f2a6a030390]
            [a7dfb6d7fc46:28003] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x38)[0x7f2a69870428]
            [a7dfb6d7fc46:28003] [ 2] /lib/x86_64-linux-gnu/libc.so.6(abort+0x16a)[0x7f2a6987202a]
            [a7dfb6d7fc46:28003] [ 3] /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(+0x92c295)[0x7f2a6916a295]
            [a7dfb6d7fc46:28003] [ 4] /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(+0xacfd53)[0x7f2a6930dd53]
            [a7dfb6d7fc46:28003] [ 5] /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(JVM_handle_linux_signal+0x14f)[0x7f2a6916ff4f]
            [a7dfb6d7fc46:28003] [ 6] /usr/lib/jvm/java-8-oracle/jre/lib/amd64/server/libjvm.so(+0x927ff3)[0x7f2a69165ff3]
            [a7dfb6d7fc46:28003] [ 7] /lib/x86_64-linux-gnu/libpthread.so.0(+0x11390)[0x7f2a6a030390]
            [a7dfb6d7fc46:28003] [ 8] /usr/lib/libmpi.so.12(mca_btl_base_select+0x60)[0x7f2a30f61850]
            [a7dfb6d7fc46:28003] [ 9] /usr/local/lib/libmpi.so.40(mca_bml_r2_component_init+0x12)[0x7f2a31a39b92]
            [a7dfb6d7fc46:28003] [10] /usr/local/lib/libmpi.so.40(mca_bml_base_init+0x8c)[0x7f2a31a3794c]
            [a7dfb6d7fc46:28003] [11] /usr/local/lib/libmpi.so.40(ompi_mpi_init+0x6d3)[0x7f2a319e6143]
            [a7dfb6d7fc46:28003] [12] /usr/local/lib/libmpi.so.40(MPI_Init+0xb9)[0x7f2a31a14869]
            [a7dfb6d7fc46:28003] [13] /tmp/LCAKernel_0.1/Linux/amd64/libLCAKernel.so(_ZN13libStochastic3runEidNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEES5_S5_iiiiiS5_liP5LCADBb+0x437)[0x7f2a32e5a0c7]
            [a7dfb6d7fc46:28003] [14] /tmp/LCAKernel_0.1/Linux/amd64/libLCAKernel.so(Java_LCAKernel_LCAKernel_stochastic+0x36a)[0x7f2a32cc1efa]
            [a7dfb6d7fc46:28003] [15] [0x7f2a4bc906c7]
            [a7dfb6d7fc46:28003] *** End of error message ***
            /usr/share/sbt/bin/sbt-launch-lib.bash: line 58: 28003 Aborted                 (core dumped) "$@"
            root@a7dfb6d7fc46:/opt/workspace/LCA-Calculator-Single# root@a7dfb6d7fc46:/opt/workspace/LCA-Calculator-Single# bash: syntax error near unexpected token `('
            root@a7dfb6d7fc46:/opt/workspace/LCA-Calculator-Single# root@a7dfb6d7fc46:/opt/workspace/LCA-Calculator-Single# bash: //}: No such file or directory
            root@a7dfb6d7fc46:/opt/workspace/LCA-Calculator-Single# root@a7dfb6d7fc46:/opt/workspace/LCA-Calculator-Single# root@a7dfb6d7fc46:/opt/workspace/LCA-Calculator-Single# root@a7dfb6d7fc46:/opt/workspace/LCA-Calculator-Single# 

РЕДАКТИРОВАТЬ 1:

Я подозревал, что проблема может заключаться в "использовании boostmpi с mpi", поэтому я отключил заголовки boostmpi. все та же ошибка.

1 ответ

Решение проблемы состояло в следующем:

1) если вы используете boostmpi, нет необходимости включать "mpi.h". Это не создало проблемы, когда я работал с C++ за пределами JNI.

2) установить boostmpi, собрав его с https://github.com/masumhabib/quest/wiki/How-to-Install-Boost

Другие вопросы по тегам