Hello, I have the latest OpenMPI on linux which I compiled with the Intel compiler suite. I am trying to compile an OpenMPI application. My particular application uses RInside and RcppEigen. If I comment out the openMPI parts of my code, the compile string is:
icpc -I/usr/share/R/include -I/usr/lib/R/site-library/Rcpp/include -I/usr/local/lib/R/site-library/RInside/include -O3 -pipe -g -Wall -I/usr/local/lib/R/site-library/RcppEigen/include sjb_simple_smle_with_Rinside.cpp -L/usr/lib/R/lib -lR -lblas -llapack -L/usr/lib/R/site-library/Rcpp/lib -lRcpp -Wl,-rpath,/usr/lib/R/site-library/Rcpp/lib -L/usr/local/lib/R/site-library/RInside/lib -lRInside -Wl,-rpath,/usr/local/lib/R/site-library/RInside/lib -o sjb_simple_smle_with_Rinside Thus, I tried to compile with mpic++ using: mpic++ -I/usr/share/R/include -I/usr/lib/R/site-library/Rcpp/include -I/usr/local/lib/R/site-library/RInside/include -O3 -pipe -g -Wall -I/usr/local/lib/R/site-library/RcppEigen/include sjb_simple_smle_with_Rinside.cpp -L/usr/lib/R/lib -lR -lblas -llapack -L/usr/lib/R/site-library/Rcpp/lib -lRcpp -Wl,-rpath,/usr/lib/R/site-library/Rcpp/lib -L/usr/local/lib/R/site-library/RInside/lib -lRInside -Wl,-rpath,/usr/local/lib/R/site-library/RInside/lib -o sjb_simple_smle_with_Rinside If I uncomment #include "mpi.h" and try to compile, I get the errors below. Is there any trick to compiling OpenMPI applications with the Intel compilers? Thanks, Stephen COMPILE ERROR: stevejb@ursamajor:~/Projects/big_data_sim_mle/simple_smle/R_inside_version$ mpic++ -I/usr/share/R/include -I/usr/lib/R/site-library/Rcpp/include -I/usr/local/lib/R/site-library/RInside/include -O3 -pipe -g -Wall -I/usr/local/lib/R/site-library/RcppEigen/include sjb_simple_smle_with_Rinside.cpp -L/usr/lib/R/lib -lR -lblas -llapack -L/usr/lib/R/site-library/Rcpp/lib -lRcpp -Wl,-rpath,/usr/lib/R/site-library/Rcpp/lib -L/usr/local/lib/R/site-library/RInside/lib -lRInside -Wl,-rpath,/usr/local/lib/R/site-library/RInside/lib -o sjb_simple_smle_with_Rinside -shared-intel -I/usr/local/include -pthread -L/usr/local/lib -lmpi_cxx -lmpi -ldl -lm -Wl,--export-dynamic -lrt -lnsl -lutil /usr/local/include/openmpi/ompi/mpi/cxx/datatype.h(142): error: expected a type specifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/datatype.h(142): error: expected a ")" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/datatype.h(142): error: expected an identifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/datatype.h(142): error: "virtual" is not allowed virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/datatype.h(142): error: expected a ";" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/op.h(48): error: expected a type specifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/op.h(48): error: expected a ")" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/op.h(48): error: expected an identifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/op.h(48): error: "virtual" is not allowed virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/op.h(48): error: expected a ";" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/request.h(96): error: expected a type specifier virtual void Free(void); ^ /usr/local/include/openmpi/ompi/mpi/cxx/request.h(96): error: expected a ")" virtual void Free(void); ^ /usr/local/include/openmpi/ompi/mpi/cxx/request.h(96): error: expected an identifier virtual void Free(void); ^ /usr/local/include/openmpi/ompi/mpi/cxx/request.h(96): error: "virtual" is not allowed virtual void Free(void); ^ /usr/local/include/openmpi/ompi/mpi/cxx/request.h(96): error: expected a ";" virtual void Free(void); ^ /usr/local/include/openmpi/ompi/mpi/cxx/group.h(111): error: expected a type specifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/group.h(111): error: expected a ")" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/group.h(111): error: expected an identifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/group.h(111): error: "virtual" is not allowed virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/group.h(111): error: expected a ";" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/comm.h(264): error: expected a type specifier virtual void Free(void); ^ /usr/local/include/openmpi/ompi/mpi/cxx/comm.h(264): error: expected a ")" virtual void Free(void); ^ /usr/local/include/openmpi/ompi/mpi/cxx/comm.h(264): error: expected an identifier virtual void Free(void); ^ /usr/local/include/openmpi/ompi/mpi/cxx/comm.h(264): error: "virtual" is not allowed virtual void Free(void); ^ /usr/local/include/openmpi/ompi/mpi/cxx/comm.h(264): error: expected a ";" virtual void Free(void); ^ /usr/local/include/openmpi/ompi/mpi/cxx/win.h(118): error: expected a type specifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/win.h(118): error: expected a ")" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/win.h(118): error: expected an identifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/win.h(118): error: "virtual" is not allowed virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/win.h(118): error: expected a ";" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/errhandler.h(59): error: expected a type specifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/errhandler.h(59): error: expected a ")" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/errhandler.h(59): error: expected an identifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/errhandler.h(59): error: "virtual" is not allowed virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/errhandler.h(59): error: expected a ";" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/info.h(84): error: expected a type specifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/info.h(84): error: expected a ")" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/info.h(84): error: expected an identifier virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/info.h(84): error: "virtual" is not allowed virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/info.h(84): error: expected a ";" virtual void Free(); ^ /usr/local/include/openmpi/ompi/mpi/cxx/request_inln.h(39): error: expected an identifier MPI::Request::Free() ^ /usr/local/include/openmpi/ompi/mpi/cxx/request_inln.h(38): error: inline specifier allowed on function declarations only inline void ^ /usr/local/include/openmpi/ompi/mpi/cxx/request_inln.h(39): error: incomplete type is not allowed MPI::Request::Free() ^ /usr/local/include/openmpi/ompi/mpi/cxx/request_inln.h(39): error: a nonstatic member reference must be relative to a specific object MPI::Request::Free() ^ /usr/local/include/openmpi/ompi/mpi/cxx/request_inln.h(39): error: expected an expression MPI::Request::Free() ^ /usr/local/include/openmpi/ompi/mpi/cxx/request_inln.h(39): error: expected a ")" MPI::Request::Free() ^ /usr/local/include/openmpi/ompi/mpi/cxx/request_inln.h(40): error: expected a ";" { ^ /usr/local/include/openmpi/ompi/mpi/cxx/op_inln.h(123): error: identifier "ompi_op_set_cxx_callback" is undefined ompi_op_set_cxx_callback(mpi_op, (MPI_User_function*) func); ^ /usr/local/include/openmpi/ompi/mpi/cxx/op_inln.h(128): error: expected an identifier MPI::Op::Free() ^ /usr/local/include/openmpi/ompi/mpi/cxx/op_inln.h(127): error: inline specifier allowed on function declarations only inline void ^ /usr/local/include/openmpi/ompi/mpi/cxx/op_inln.h(128): error: incomplete type is not allowed MPI::Op::Free() ^ /usr/local/include/openmpi/ompi/mpi/cxx/op_inln.h(128): error: a nonstatic member reference must be relative to a specific object MPI::Op::Free() ^ /usr/local/include/openmpi/ompi/mpi/cxx/op_inln.h(128): error: expected an expression MPI::Op::Free() ^ /usr/local/include/openmpi/ompi/mpi/cxx/op_inln.h(128): error: expected a ")" MPI::Op::Free() ^ /usr/local/include/openmpi/ompi/mpi/cxx/op_inln.h(129): error: expected a ";" { ^ sjb_simple_smle_with_Rinside.cpp(35): warning #12: parsing restarts here after previous syntax error using namespace Rcpp; ^ sjb_simple_smle_with_Rinside.cpp(77): error: identifier "as" is undefined const Map<MatrixXd> Xmat(as<Map<MatrixXd> >(Xmat_sexp)); ^ sjb_simple_smle_with_Rinside.cpp(77): error: type name is not allowed const Map<MatrixXd> Xmat(as<Map<MatrixXd> >(Xmat_sexp)); ^ sjb_simple_smle_with_Rinside.cpp(80): error: type name is not allowed const Map<MatrixXd> Ymat(as<Map<MatrixXd> >(Ymat_sexp)); ^ sjb_simple_smle_with_Rinside.cpp(87): error: type name is not allowed const Map<MatrixXd> ua(as<Map<MatrixXd> >(ua_sexp)); ^ sjb_simple_smle_with_Rinside.cpp(89): error: type name is not allowed const Map<MatrixXd> ub(as<Map<MatrixXd> >(ub_sexp)); ^ sjb_simple_smle_with_Rinside.cpp(98): error: type name is not allowed const Map<VectorXd> start_vector(as<Map<VectorXd> >(start_sexp)); ^ compilation aborted for sjb_simple_smle_with_Rinside.cpp (code 2)