[R] Using Fortran with MPI, RInside, and calling R functions

Jeff Newmiller jdnewmil at dcn.davis.ca.us
Sat Feb 27 21:15:58 CET 2016


This is off topic here... wrong audience.  Read the Posting Guide. 
-- 
Sent from my phone. Please excuse my brevity.

On February 27, 2016 12:00:23 PM PST, Erin Hodgess <erinm.hodgess at gmail.com> wrote:
>Hello again.
>
>This time, I would like to add MPI to my Fortran program.  Here are the
>Fortran and C++ codes:
>
>program buzzy
>   use iso_c_binding
>  implicit none
>  include '/opt/openmpi/include/mpif.h'
>
>
>
>
>  integer :: rank,size,ierror,tag,status(MPI_STATUS_SIZE), i,np
>  integer :: argc = 1000000
>  real :: x,tot1
>  character(len=32) :: argv
>
>
>      INTERFACE
>         SUBROUTINE R_FUN(argc,argv) bind(C, name="buzzyC")
>           use iso_c_binding
>        character(kind=c_char), INTENT(INOUT) :: argv
>        INTEGER(kind=c_int), INTENT(IN) :: argc
>
>      END SUBROUTINE R_FUN
>    END INTERFACE
>
>      call MPI_INIT(ierror)
>      call MPI_COMM_SIZE(MPI_COMM_WORLD,size,ierror)
>      call MPI_COMM_RANK(MPI_COMM_WORLD,rank,ierror)
>
>
>
>
>        print *, "Fortran Calling RInside",rank
>    CALL R_FUN (argc,argv)
>    print *,rank
>
>    call MPI_FINALIZE(ierror)
>
>  end program buzzy
>
>and
>
>#include <iostream>
>#include <RInside.h>
>
>void buzzyC_(int argc,char *argv[]);
>
>extern "C" void buzzyC(int argc,char *argv[]) {
>
>    // create an embedded R instance
>  RInside R(argc,argv);
>
>    // convert to string for RInside assignment
>
>
>    // eval the string, give R notice
>  R.parseEvalQ("cat(mean(rnorm(argc))");
>}
>
>Now my steps for compiling and linking are the following:
>
>erin at erin-Bonobo-Extreme:~$ mpif90 -c buzzy.f90
>erin at erin-Bonobo-Extreme:~$ mpic++ buzzyC.cpp -c
>-I/home/erin/R/x86_64-pc-linux-gnu-library/3.2/RInside/include
>-I/home/erin/R/x86_64-pc-linux-gnu-library/3.2/Rcpp/include
>-I/usr/share/R/include -libstdc++
>erin at erin-Bonobo-Extreme:~$ mpifort -o fcra buzzy.o buzzyC.o
>-L/usr/lib/R/lib -lR -L
>/home/erin/R/x86_64-pc-linux-gnu-library/3.2/RInside/lib -lRInside
>-L/home/erin/R/x86_64-pc-linux-gnu-library/3.2/Rcpp/libs/
>-Wl,-rpath,/home/erin/R/x86_64-pc-linux-gnu-library/3.2/RInside/lib/
>-lRInside
>-Wl,-rpath,/home/erin/R/x86_64-pc-linux-gnu-library/3.2/Rcpp/libs/
>-lstdc++
>/usr/lib/x86_64-linux-gnu/libstdc++.so.6
>
>So far so good
>But when I run this, disaster strikes:
>
>erin at erin-Bonobo-Extreme:~$ mpirun -np 4 ./fcra
> Fortran Calling RInside           0
> Fortran Calling RInside           1
> Fortran Calling RInside           3
> Fortran Calling RInside           2
>
>Program received signal SIGSEGV: Segmentation fault - invalid memory
>reference.
>
>Backtrace for this error:
>
>Program received signal SIGSEGV: Segmentation fault - invalid memory
>reference.
>
>Backtrace for this error:
>#0  0x7FC59706CE48
>#1  0x7FC59706BFD0
>#2  0x7FC596AA52EF
>#3  0x7FC596AFB69A
>#4  0x7FC597C5E8E8
>#5  0x7FC5979671E8
>#6  0x7FC5979677A1
>#7  0x402A55 in buzzyC
>#8  0x402891 in MAIN__ at buzzy.f90:?
>#0  0x7F2482294E48
>#1  0x7F2482293FD0
>#2  0x7F2481CCD2EF
>#3  0x7F2481D2369A
>#4  0x7F2482E868E8
>#5  0x7F2482B8F1E8
>#6  0x7F2482B8F7A1
>#7  0x402A55 in buzzyC
>#8  0x402891 in MAIN__ at buzzy.f90:?
>--------------------------------------------------------------------------
>mpirun noticed that process rank 1 with PID 2188 on node
>erin-Bonobo-Extreme exited on signal 11 (Segmentation fault).
>--------------------------------------------------------------------------
>erin at erin-Bonobo-Extreme:~$
>
>Maybe I should be asking:  is this even possible, please?
>
>Thanks,
>Erin
>
>
>-- 
>Erin Hodgess
>Associate Professor
>Department of Mathematical and Statistics
>University of Houston - Downtown
>mailto: erinm.hodgess at gmail.com
>
>	[[alternative HTML version deleted]]
>
>______________________________________________
>R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide
>http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.

	[[alternative HTML version deleted]]



More information about the R-help mailing list