]> SALOME platform Git repositories - modules/kernel.git/commitdiff
Salome HOME
Build KERNEL with native openmpi on CentOS-8
authorrnv <rnv@opencascade.com>
Mon, 3 Aug 2020 18:52:07 +0000 (21:52 +0300)
committerrnv <rnv@opencascade.com>
Mon, 3 Aug 2020 18:52:07 +0000 (21:52 +0300)
src/Communication/Receivers.cxx
src/Communication/SALOME_Comm_i.cxx
src/MPIContainer/MPIObject_i.cxx
src/MPIContainer/testMPI2.cxx

index 53fae588c7869a85850be91d5ccc9f90179ac381..14fd55d6a1caadc1ea07124cdff20acfe9f5f3a6 100644 (file)
@@ -182,11 +182,19 @@ T *MPIReceiver<T,CorbaSender,servForT,ptrForT>::getDistValue(long &size){
   SALOME::MPISender::param_var p =_mySender->getParam();
   _mySender->send();
   sproc = p->myproc;
+#if OMPI_MAJOR_VERSION >= 4
+  MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
+#else
   MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
+#endif
   while ( i != TIMEOUT  && MPI_Lookup_name((char*)p->service,MPI_INFO_NULL,port_name_clt) != MPI_SUCCESS) { 
     i++;
-  }       
+  }
+#if OMPI_MAJOR_VERSION >= 4
+  MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
+#else
   MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
+#endif
   if ( i == TIMEOUT  ) { 
     MPI_Finalize();
     exit(-1);
@@ -199,12 +207,20 @@ T *MPIReceiver<T,CorbaSender,servForT,ptrForT>::getDistValue(long &size){
     
     //      TIMEOUT is inefficient since MPI_Comm_Connect doesn't return if we asked for
     //        a service that has been unpublished !
+#if OMPI_MAJOR_VERSION >= 4
+    MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
+#else
     MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
+#endif
     i = 0;
     while ( i != TIMEOUT  &&  MPI_Comm_connect(port_name_clt, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &com)!=MPI_SUCCESS ) { 
       i++; 
-    } 
+    }
+#if OMPI_MAJOR_VERSION >= 4
+    MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
+#else 
     MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
+#endif
     if ( i == TIMEOUT ) {
       MPI_Finalize(); 
       exit(-1);
index 87d6beebd5e716354bf1f42b06f33468c30df77c..75af1c528e48d7e80625e0ca37d11cd662980fcb 100644 (file)
@@ -260,11 +260,19 @@ SALOME::MPISender::param* SALOME_MPISender_i::getParam()
   service += stag;
   p->service = CORBA::string_dup(service.c_str());
   MPI_Open_port(MPI_INFO_NULL, _portName);
-  MPI_Errhandler_set(MPI_COMM_WORLD,MPI_ERRORS_RETURN);
+#if OMPI_MAJOR_VERSION >= 4
+  MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
+#else
+  MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
+#endif
   while ( i != TIMEOUT  && MPI_Publish_name((char*)service.c_str(),MPI_INFO_NULL,_portName) != MPI_SUCCESS) {
     i++;
-  } 
-  MPI_Errhandler_set(MPI_COMM_WORLD,MPI_ERRORS_ARE_FATAL);
+  }
+#if OMPI_MAJOR_VERSION >= 4
+  MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
+#else 
+  MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
+#endif
   if ( i == TIMEOUT  ) { 
     MPI_Close_port(_portName);
     MPI_Finalize();
index 2395f8756c4535ceb37d6e5360e3da3ef0e2c53f..ede2f4dd6124822056f7f12bee9a699746dd56d8 100644 (file)
@@ -153,8 +153,11 @@ void MPIObject_i::remoteMPI2Connect(std::string service)
   _srv[service] = false;
 
   MPI_Barrier(MPI_COMM_WORLD);
-
+#if OMPI_MAJOR_VERSION >= 4
+  MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
+#else
   MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
+#endif
   MPI_Info_create(&info);
   MPI_Info_set(info, "ompi_unique", "true");
   if( _numproc == 0 )
@@ -203,7 +206,11 @@ void MPIObject_i::remoteMPI2Connect(std::string service)
           throw SALOME_Exception(msg.str().c_str());
         }
     }
+#if OMPI_MAJOR_VERSION >= 4
+  MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
+#else
   MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
+#endif
   
   /* If rank 0 is server, all processes call MPI_Comm_accept */
   /* If rank 0 is not server, all processes call MPI_Comm_connect */
index d55645256c3f933f0c2a04b8a1850f1324cc9b41..163e1fa13486180ddcd36cd618a44f7531242180 100644 (file)
@@ -58,8 +58,12 @@ int main(int argc, char**argv)
   MPI_Comm_rank( MPI_COMM_WORLD, &rank );
 
   MPI_Barrier(MPI_COMM_WORLD);
-
+#if OMPI_MAJOR_VERSION >= 4
+  MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
+#else
   MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN);
+#endif
+
 #ifdef HAVE_MPI2
   MPI_Info_create(&info);
   MPI_Info_set(info, "ompi_unique", "true");
@@ -105,7 +109,11 @@ int main(int argc, char**argv)
       exit(1);
     }
   }
+#if OMPI_MAJOR_VERSION >= 4
+  MPI_Comm_set_errhandler(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
+#else
   MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_ARE_FATAL);
+#endif
   MPI_Bcast(&srv,1,MPI_INT,0,MPI_COMM_WORLD);
   if ( srv )
     MPI_Comm_accept( port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &icom );