Kodalore Vijayan, Vineetha W
2016-Jun-15 20:20 UTC
[R] Writing R package that call Fortran codes
Hi, I'm trying to write an R package that calls a Fortran subroutine on my Mac os x El Capitan with Xcode 7 and gfortran 6.1, R 3.3.0. I can build and load the library but when I try to use it in R I get this error:>library(NEpidemic) >random_epi(variable_names)Error in .Fortran("random_epi", : "random_pi" not resolved from current namespace (NEpidemic). Then I tried adding useDynLib(random_epi.f95) in the NAMESPACE file, additional to useDynLib(NEpidemic). After doing that I couldn't build the package and it gave me another error: Error in library.dynam(lib, package, package.lib) : shared object ?random_epi.so? not found Error: loading failed Execution halted ERROR: loading failed When I checked my src folder, there is only random_epi.o file. How can I fix this issue? Any help would be much appreciated. I'm vey new to both R and Fortran coding, especially in package building. Thanks in advance! Vineetha [[alternative HTML version deleted]]
Eduardo M. A. M.Mendes
2016-Jun-15 21:55 UTC
[R] Writing R package that call Fortran codes
Hi
Have you tried to load and run the fortran code using just a wrapper function in
R? I do that as the first step in order to build a package.
Example: fortran sources -> rk4_mod_r.f90 ,derive_henonheilles.f90,
poincare_section.f90
a) I use R CMD SHLIB rk4_mod_r.f90 ,derive_henonheilles.f90,
poincare_section.f90 - o poincare_section_henonheilles_rk4.so
b) Then I write a wrapper function in R, poinc_section_henonheilles.R
...
dyn.load("poincare_section_henonheilles_rk4.so")
out<-.Fortran("section_crossing",
h=as.numeric(h),
nphas=as.integer(nphas),..
...
c) and call the function as usual.
Please note that the function called by .Fortran is the name of the subroutine
within poincare_section.f90 and not the filename.
I take the opportunity to thank R-developers for making the calling of C and
Fortran in R very easy.
I hope this helps.
regards
Ed
PS. If you need an example of a package using Fortran90, please check
https://github.com/emammendes/mittagleffler
<https://github.com/emammendes/mittagleffler>
> On Jun 15, 2016, at 5:20 PM, Kodalore Vijayan, Vineetha W <vwkv13 at
mun.ca> wrote:
>
> Hi,
>
> I'm trying to write an R package that calls a Fortran subroutine on my
Mac
> os x El Capitan with Xcode 7 and gfortran 6.1, R 3.3.0. I can build and
> load the library but when I try to use it in R I get this error:
>> library(NEpidemic)
>> random_epi(variable_names)
>
> Error in .Fortran("random_epi", : "random_pi" not
resolved from current
> namespace (NEpidemic).
>
> Then I tried adding useDynLib(random_epi.f95) in the NAMESPACE file,
> additional to useDynLib(NEpidemic). After doing that I couldn't build
the
> package and it gave me another error:
>
> Error in library.dynam(lib, package, package.lib) :
> shared object ?random_epi.so? not found
> Error: loading failed
> Execution halted
> ERROR: loading failed
>
> When I checked my src folder, there is only random_epi.o file. How can I
> fix this issue? Any help would be much appreciated. I'm vey new to both
R
> and Fortran coding, especially in package building.
>
> Thanks in advance!
> Vineetha
>
> [[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]]
You might want to take this question to R-sig-mac. -- Don MacQueen Lawrence Livermore National Laboratory 7000 East Ave., L-627 Livermore, CA 94550 925-423-1062 On 6/15/16, 1:20 PM, "R-help on behalf of Kodalore Vijayan, Vineetha W" <r-help-bounces at r-project.org on behalf of vwkv13 at mun.ca> wrote:>Hi, > >I'm trying to write an R package that calls a Fortran subroutine on my >Mac >os x El Capitan with Xcode 7 and gfortran 6.1, R 3.3.0. I can build and >load the library but when I try to use it in R I get this error: >>library(NEpidemic) >>random_epi(variable_names) > >Error in .Fortran("random_epi", : "random_pi" not resolved from current >namespace (NEpidemic). > >Then I tried adding useDynLib(random_epi.f95) in the NAMESPACE file, >additional to useDynLib(NEpidemic). After doing that I couldn't build the >package and it gave me another error: > >Error in library.dynam(lib, package, package.lib) : > shared object ?random_epi.so? not found >Error: loading failed >Execution halted >ERROR: loading failed > >When I checked my src folder, there is only random_epi.o file. How can I >fix this issue? Any help would be much appreciated. I'm vey new to both R >and Fortran coding, especially in package building. > >Thanks in advance! >Vineetha > > [[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.
Kodalore Vijayan, Vineetha W
2016-Jun-16 17:03 UTC
[R] Writing R package that call Fortran codes
Hi Eduardo,
Thanks for your comments. I haven't tried the way you told me. Now when I
tried, got the following error:
*** caught segfault ***
address 0x0, cause 'memory not mapped'
Traceback:
1: .Fortran("dataxy", n = as.integer(n), tmax = as.integer(tmax),
alpha = as.double(alpha), beta = as.double(beta), x = as.double(0,
length = n), y = as.double(0, length = n), tau = as.integer(0,
length = n))
2: out(NULL, NULL, NULL, NULL)
Possible actions:
1: abort (with core dump, if enabled)
2: normal R exit
3: exit R without saving workspace
4: exit R saving workspace
Selection:
Any suggestions?
Thanks,
Vineetha
On Wed, Jun 15, 2016 at 3:55 PM, Eduardo M. A. M.Mendes <
emammendes at gmail.com> wrote:
> Hi
>
> Have you tried to load and run the fortran code using just a wrapper
> function in R? I do that as the first step in order to build a package.
>
> Example: fortran sources -> rk4_mod_r.f90 ,derive_henonheilles.f90,
> poincare_section.f90
>
> a) I use R CMD SHLIB rk4_mod_r.f90 ,derive_henonheilles.f90,
> poincare_section.f90 - o poincare_section_henonheilles_rk4.so
> b) Then I write a wrapper function in R, poinc_section_henonheilles.R
> ...
> dyn.load("poincare_section_henonheilles_rk4.so")
>
> out<-.Fortran("section_crossing",
> h=as.numeric(h),
> nphas=as.integer(nphas),..
> ...
> c) and call the function as usual.
>
> Please note that the function called by .Fortran is the name of the
> subroutine within poincare_section.f90 and not the filename.
>
> I take the opportunity to thank R-developers for making the calling of C
> and Fortran in R very easy.
>
> I hope this helps.
>
> regards
>
> Ed
>
> PS. If you need an example of a package using Fortran90, please check
> https://github.com/emammendes/mittagleffler
>
>
>
> On Jun 15, 2016, at 5:20 PM, Kodalore Vijayan, Vineetha W <vwkv13 at
mun.ca>
> wrote:
>
> Hi,
>
> I'm trying to write an R package that calls a Fortran subroutine on my
Mac
> os x El Capitan with Xcode 7 and gfortran 6.1, R 3.3.0. I can build and
> load the library but when I try to use it in R I get this error:
>
> library(NEpidemic)
> random_epi(variable_names)
>
>
> Error in .Fortran("random_epi", : "random_pi" not
resolved from current
> namespace (NEpidemic).
>
> Then I tried adding useDynLib(random_epi.f95) in the NAMESPACE file,
> additional to useDynLib(NEpidemic). After doing that I couldn't build
the
> package and it gave me another error:
>
> Error in library.dynam(lib, package, package.lib) :
> shared object ?random_epi.so? not found
> Error: loading failed
> Execution halted
> ERROR: loading failed
>
> When I checked my src folder, there is only random_epi.o file. How can I
> fix this issue? Any help would be much appreciated. I'm vey new to both
R
> and Fortran coding, especially in package building.
>
> Thanks in advance!
> Vineetha
>
> [[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]]
Kodalore Vijayan, Vineetha W
2016-Jun-16 19:33 UTC
[R] Writing R package that call Fortran codes
Thank you Don. I did send an email to R-sig-mac. -Vineetha On Thu, Jun 16, 2016 at 10:36 AM, MacQueen, Don <macqueen1 at llnl.gov> wrote:> You might want to take this question to R-sig-mac. > > -- > Don MacQueen > > Lawrence Livermore National Laboratory > 7000 East Ave., L-627 > Livermore, CA 94550 > 925-423-1062 > > > > > > On 6/15/16, 1:20 PM, "R-help on behalf of Kodalore Vijayan, Vineetha W" > <r-help-bounces at r-project.org on behalf of vwkv13 at mun.ca> wrote: > > >Hi, > > > >I'm trying to write an R package that calls a Fortran subroutine on my > >Mac > >os x El Capitan with Xcode 7 and gfortran 6.1, R 3.3.0. I can build and > >load the library but when I try to use it in R I get this error: > >>library(NEpidemic) > >>random_epi(variable_names) > > > >Error in .Fortran("random_epi", : "random_pi" not resolved from current > >namespace (NEpidemic). > > > >Then I tried adding useDynLib(random_epi.f95) in the NAMESPACE file, > >additional to useDynLib(NEpidemic). After doing that I couldn't build the > >package and it gave me another error: > > > >Error in library.dynam(lib, package, package.lib) : > > shared object ?random_epi.so? not found > >Error: loading failed > >Execution halted > >ERROR: loading failed > > > >When I checked my src folder, there is only random_epi.o file. How can I > >fix this issue? Any help would be much appreciated. I'm vey new to both R > >and Fortran coding, especially in package building. > > > >Thanks in advance! > >Vineetha > > > > [[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]]