Simon,

Thanks for the update. I’m aware of the linking instructions [1,2,3,4] and the 
purpose of configure{.ac} [5]. What I was not aware of was the CRAN macOS build 
machine were outfitted with the appropriate OpenMP setup [6, 7] in a post R 
4.0.0 world. Thus, more than just local configurations that adopted [8] could 
benefit from OpenMP especially since the top of [8] contains:
> Warning! Everything described on this page is strictly experimental and not 
> officially supported by CRAN, R-core or R Foundation. In may break at any 
> time. The information is provided in the hope of being useful to some 
> tech-savvy people. It is not intended for the regular R user.

Changing focus, I’m interested in re-enabling OpenMP with respect to 
RcppArmadillo, my questions here are:


  1.  When did libomp.dylib start shipping with the CRAN build? R 4.1, 4.2, 
4.3, or 4.4?
     *   This will allow me to petition to have an R version dependency change.
  2.  If a package only needs to compile code only once, then it’s sufficient 
to use the usual ` $(SHLIB_OPENMP_CXXFLAGS)` in src/Makevars with the 
appropriate ifdef pre-processor on including #include <omp.h>?
     *   This provides improved guidance related to best package development 
practices.
  3.  For packages that compile code first on CRAN and, then, dynamically on a 
user’s computer, what is the best approach to ensuring that instructions in [8] 
are set?
     *   This would ensure armadillo-oriented code could take full use of the 
cores on macOS.

Best regards,

James

[1]: https://stat.ethz.ch/pipermail/r-sig-mac/2020-April/013346.html
[2]: https://stat.ethz.ch/pipermail/r-sig-mac/2019-May/012987.html
[3]: https://stat.ethz.ch/pipermail/r-sig-mac/2019-June/012996.html
[4]: https://stat.ethz.ch/pipermail/r-sig-mac/2020-May/013451.html
[5]: https://stackoverflow.com/a/42281495/1345455
[6]: https://github.com/RcppCore/RcppArmadillo/pull/219#issuecomment-383100722
[7]: https://stat.ethz.ch/pipermail/r-sig-mac/2020-April/013289.html
[8]: https://mac.r-project.org/openmp/



From: Simon Urbanek <simon.urba...@r-project.org>
Date: Friday, June 28, 2024 at 12:31 AM
To: Balamuta, James <balam...@illinois.edu>
Cc: Timothy Bates <tim.ba...@ed.ac.uk>, Kasper Daniel Hansen 
<kasperdanielhan...@gmail.com>, Sparapani, Rodney <rspar...@mcw.edu>, R list 
<R-SIG-Mac@r-project.org>
Subject: Re: [R-SIG-Mac] procedure to ship libomp.dylib run-time with package


> On 27 Jun 2024, at 23:57, Balamuta, James <balam...@illinois.edu> wrote:
>
> Simon,
>  I think there is a communication issue regarding OpenMP for the macOS R 
> community. That said, I’m both thrilled and delighted that I’m wrong in this 
> case! To my knowledge, there was never a public facing note regarding 
> `libomp`  shipping with CRAN’s official R binary for mac, [1]. In fact, the 
> last tracking I have with respect to OpenMP and R on macOS was its abrupt and 
> painful removal that led to the instructions for experimental inclusion of 
> OpenMP on mac within the developer website [2] (gently acknowledge by Prof. 
> Ripley as being not current). This has led to a lot of lobotomization in 
> compiled code regarding macOS that can now hopefully be adjusted for the 
> multi-core world, [3].
>  With this in mind, I suppose this means that we would need to revisit the 
> `configure.ac` [3]. Potentially, as Prof. Ripley mentioned, we’re looking at 
> including on path/detecting:
>  `R 
> RHOME`/lib/libomp.dylib/Library/Frameworks/R.framework/Resources/lib/libomp.dylib


That's entirely unnecessary - you should not be requiring specific file paths - 
that's not how linking tests work. All the instructions are on the OpenMP page 
for years - it is as simple as -lomp (which is standard almost everywhere). The 
only non-standard requirement compared to other platforms is that instead of 
-fopemp in C flags the package should also check for -Xclang -fopenmp.

If a package explicitly disables OpenMP for Apple compilers, it is its 
deliberate choice - it was never necessary. The whole point of configure 
scripts is to detect functionality by testing it and use it if available.

Cheers,
Simon


>  Thus, the package binary downloaded from CRAN would correctly set and detect 
> cores per:
>  # install.packages("RcppArmadillo")
>  # Determine the number of active threads
> RcppArmadillo::armadillo_get_number_of_omp_threads()
> [1] 1
>  # Set number of threads
> RcppArmadillo::armadillo_set_number_of_omp_threads(3)
>  # Retrieve OpenMP threads after setting
> RcppArmadillo::armadillo_get_number_of_omp_threads()
> [1] 1
> # This should be 3.
>  I’m happy to talk more on the list or off the list.  Best,
>  James
>  [1]: 
> https://urldefense.com/v3/__https://cran.r-project.org/doc/manuals/r-release/NEWS.html__;!!DZ3fjg!57krJgj2EE5sq_qaDsKls4jb5f99c2iyQaXHoJ_7OBQAbpapE-x_fRkzBh-Fy_cnsu-sUJpdhelgLqI006PhaLiBVYB5MDA$<https://urldefense.com/v3/__https:/cran.r-project.org/doc/manuals/r-release/NEWS.html__;!!DZ3fjg!57krJgj2EE5sq_qaDsKls4jb5f99c2iyQaXHoJ_7OBQAbpapE-x_fRkzBh-Fy_cnsu-sUJpdhelgLqI006PhaLiBVYB5MDA$>
> [2]: 
> https://urldefense.com/v3/__https://mac.r-project.org/openmp/__;!!DZ3fjg!57krJgj2EE5sq_qaDsKls4jb5f99c2iyQaXHoJ_7OBQAbpapE-x_fRkzBh-Fy_cnsu-sUJpdhelgLqI006PhaLiBmw9UV3o$<https://urldefense.com/v3/__https:/mac.r-project.org/openmp/__;!!DZ3fjg!57krJgj2EE5sq_qaDsKls4jb5f99c2iyQaXHoJ_7OBQAbpapE-x_fRkzBh-Fy_cnsu-sUJpdhelgLqI006PhaLiBmw9UV3o$>
> [3]: 
> https://urldefense.com/v3/__https://github.com/RcppCore/RcppArmadillo/blob/37461ba36472305c699263afc229919d37daa5e3/configure.ac*L109__;Iw!!DZ3fjg!57krJgj2EE5sq_qaDsKls4jb5f99c2iyQaXHoJ_7OBQAbpapE-x_fRkzBh-Fy_cnsu-sUJpdhelgLqI006PhaLiB8rnPPRw$<https://urldefense.com/v3/__https:/github.com/RcppCore/RcppArmadillo/blob/37461ba36472305c699263afc229919d37daa5e3/configure.ac*L109__;Iw!!DZ3fjg!57krJgj2EE5sq_qaDsKls4jb5f99c2iyQaXHoJ_7OBQAbpapE-x_fRkzBh-Fy_cnsu-sUJpdhelgLqI006PhaLiB8rnPPRw$>
>   From: Simon Urbanek <simon.urba...@r-project.org>
> Date: Thursday, June 27, 2024 at 10:25 AM
> To: Balamuta, James <balam...@illinois.edu>
> Cc: Timothy Bates <tim.ba...@ed.ac.uk>, Kasper Daniel Hansen 
> <kasperdanielhan...@gmail.com>, Sparapani, Rodney <rspar...@mcw.edu>, R list 
> <R-SIG-Mac@r-project.org>
> Subject: Re: [R-SIG-Mac] procedure to ship libomp.dylib run-time with package
> Most of the claims below are false - libomp is shipped with CRAN R for quite 
> some time specifically so that packages which benefit from it significantly 
> can enable OpenMP reasonably easily - they only need to add the flags as 
> noted on the cited page and CRAN takes care of the rest. If there are any 
> problems, please feel free to contact me.
>
> Cheers,
> Simon
>
>
> > On 26 Jun 2024, at 07:41, Balamuta, James <balam...@illinois.edu> wrote:
> >
> > Tim,
> >
> > Unfortunately, there isn't a nice way of including OpenMP for macOS within 
> > a package.  One potential avenue would be to use a `configure.ac` file to 
> > check for whether OpenMP headers are present on the macOS computer and, 
> > then, allow the correct OpenMP compilation flags to be set. However, this 
> > requires the user to compile from source instead of using a CRAN binary.
> >
> > Unfortunately, there isn't going to be an easier way as OpenMP on macOS 
> > with R is experimental by nature.
> >
> > Best regards,
> >
> > James
> > ________________________________
> > From: R-SIG-Mac <r-sig-mac-boun...@r-project.org> on behalf of Timothy 
> > Bates <tim.ba...@ed.ac.uk>
> > Sent: Tuesday, June 25, 2024 10:00 PM
> > To: Kasper Daniel Hansen <kasperdanielhan...@gmail.com>; Sparapani, Rodney 
> > <rspar...@mcw.edu>
> > Cc: R list <R-SIG-Mac@r-project.org>
> > Subject: Re: [R-SIG-Mac] procedure to ship libomp.dylib run-time with 
> > package
> >
> > Thanks Kasper,
> > I read those lines and had installed the openmp software as instructed. It 
> > all works fine for me. But users don’t have my usr/ folder, not can a 
> > package write to their usr/ folder.
> >
> > so what is confusing is how the user will get this lib. Where should make 
> > place libraries like libomp within the package so that if a user merely 
> > install.packages() it, the library will be found and loaded?
> > Best, tim
> >
> >
> > Sent from Outlook for 
> > iOS<https://urldefense.com/v3/__https://aka.ms/o0ukef__;!!DZ3fjg!_OUXHENJ_6aGlU-humThmTaUR5okhDKW2EGEY49AjJ4AN8eXBWtZCWE3O01pnyxbRpGQDhCl8MMLThVBbUXDuipI$
> >  >
> > ________________________________
> > From: Kasper Daniel Hansen <kasperdanielhan...@gmail.com>
> > Sent: Tuesday, June 25, 2024 11:34:42 AM
> > To: Sparapani, Rodney <rspar...@mcw.edu>
> > Cc: Timothy Bates <tim.ba...@ed.ac.uk>; R list <R-SIG-Mac@r-project.org>
> > Subject: Re: [R-SIG-Mac] procedure to ship libomp.dylib run-time with 
> > package
> >
> > This email was sent to you by someone outside the University.
> > You should only click on links or attachments if you are certain that the 
> > email is genuine and the content is safe.
> > If you read the next couple of sentences on that page, it says
> >
> > The following are links to libomp OpenMP run-time built from official LLVM 
> > release sources using Xcode compilers. They are signed and support macOS 
> > 10.13 (High Sierra) and higher. All tar-balls contain the system tree 
> > usr/local/lib and usr/local/include so the recommended installation is to 
> > type in Terminal:
> >
> >    curl -O 
> > https://urldefense.com/v3/__https://mac.r-project.org/openmp/openmp-14.0.6-darwin20-Release.tar.gz__;!!DZ3fjg!_OUXHENJ_6aGlU-humThmTaUR5okhDKW2EGEY49AjJ4AN8eXBWtZCWE3O01pnyxbRpGQDhCl8MMLThVBbWfUKf7B$<https://urldefense.com/v3/__https:/mac.r-project.org/openmp/openmp-14.0.6-darwin20-Release.tar.gz__;!!DZ3fjg!_OUXHENJ_6aGlU-humThmTaUR5okhDKW2EGEY49AjJ4AN8eXBWtZCWE3O01pnyxbRpGQDhCl8MMLThVBbWfUKf7B$>
> >    sudo tar fvxz openmp-14.0.6-darwin20-Release.tar.gz -C /
> >
> >
> > I think that is pretty clear? Note the -C / as part of the last line, that 
> > tells tar where to put it on the system.
> >
> > On Tue, Jun 25, 2024 at 8:20 AM Sparapani, Rodney via R-SIG-Mac 
> > <r-sig-mac@r-project.org<mailto:r-sig-mac@r-project.org>> wrote:
> > Hi Tim:
> >
> > /usr/local/lib it seems.  See the following page
> > https://urldefense.com/v3/__https://mac.r-project.org/openmp/__;!!DZ3fjg!_OUXHENJ_6aGlU-humThmTaUR5okhDKW2EGEY49AjJ4AN8eXBWtZCWE3O01pnyxbRpGQDhCl8MMLThVBbaQGheD_$<https://urldefense.com/v3/__https:/mac.r-project.org/openmp/__;!!DZ3fjg!_OUXHENJ_6aGlU-humThmTaUR5okhDKW2EGEY49AjJ4AN8eXBWtZCWE3O01pnyxbRpGQDhCl8MMLThVBbaQGheD_$>
> >
> > --
> > Rodney Sparapani, Associate Professor of Biostatistics, He/Him/His
> > Vice President, Wisconsin Chapter of the American Statistical Association
> > Institute for Health and Equity, Division of Biostatistics
> > Medical College of Wisconsin, Milwaukee Campus
> >
> > If this is outside of working hours, then please respond when convenient.
> >
> > From: R-SIG-Mac 
> > <r-sig-mac-boun...@r-project.org<mailto:r-sig-mac-boun...@r-project.org>> 
> > on behalf of Timothy Bates <tim.ba...@ed.ac.uk<mailto:tim.ba...@ed.ac.uk>>
> > Date: Monday, June 24, 2024 at 4:00 PM
> > To: R list <R-SIG-Mac@r-project.org<mailto:R-SIG-Mac@r-project.org>>
> > Subject: [R-SIG-Mac] procedure to ship libomp.dylib run-time with package
> > ATTENTION: This email originated from a sender outside of MCW. Use caution 
> > when clicking on links or opening attachments.
> > ________________________________
> >
> > At 
> > https://urldefense.com/v3/__https://mac.r-project.org/openmp/__;!!H8mHWRdzp34!4HZ0uFxJQ121gF_TnX99OuMlgIXM600pq8wCbWruoLsdLTtaFgRB5_gMopCtxD0N9M4tUOO-7hBGADHx1sk$<https://urldefense.com/v3/__https:/mac.r-project.org/openmp/__;!!H8mHWRdzp34!4HZ0uFxJQ121gF_TnX99OuMlgIXM600pq8wCbWruoLsdLTtaFgRB5_gMopCtxD0N9M4tUOO-7hBGADHx1sk$><https://urldefense.com/v3/__https:/mac.r-project.org/openmp/__;!!H8mHWRdzp34!4HZ0uFxJQ121gF_TnX99OuMlgIXM600pq8wCbWruoLsdLTtaFgRB5_gMopCtxD0N9M4tUOO-7hBGADHx1sk$%3chttps:/urldefense.com/v3/__https:/mac.r-project.org/openmp/__;!!H8mHWRdzp34!4HZ0uFxJQ121gF_TnX99OuMlgIXM600pq8wCbWruoLsdLTtaFgRB5_gMopCtxD0N9M4tUOO-7hBGADHx1sk$%3e>
> >   it  says
> > "any package you compile against libomp.dylib will need that run-time so 
> > you have to ship it with your package or have users install it”
> >
> > Are there  any  instructions on what to do/where to put libomp.dylib so it 
> > will be found?
> >
> > I’ve compiled a package (OpenMx) in which OpenMP is working locally but 
> > other users get the error:
> >
> > require(OpenMx)
> > Error: package or namespace load failed for ‘OpenMx’ in dyn.load(file, 
> > DLLpath = DLLpath, ...):
> > unable to load shared object 
> > '/Users/***/Library/R/x86_64/4.4/library/OpenMx/libs/OpenMx.so':
> >
> > dlopen(/Users/***/Library/R/x86_64/4.4/library/OpenMx/libs/OpenMx.so, 
> > 0x0006): Library not loaded: 
> > /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libomp.dylib
> >
> >
> > The University of Edinburgh is a charitable body, registered in Scotland, 
> > with registration number SC005336. Is e buidheann carthannais a th’ ann an 
> > Oilthigh Dhùn Èideann, clàraichte an Alba, àireamh clàraidh SC005336.
> > _______________________________________________
> > R-SIG-Mac mailing list
> > R-SIG-Mac@r-project.org<mailto:R-SIG-Mac@r-project.org>
> > https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-sig-mac__;!!H8mHWRdzp34!4HZ0uFxJQ121gF_TnX99OuMlgIXM600pq8wCbWruoLsdLTtaFgRB5_gMopCtxD0N9M4tUOO-7hBGdICDldE$<https://urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-sig-mac__;!!H8mHWRdzp34!4HZ0uFxJQ121gF_TnX99OuMlgIXM600pq8wCbWruoLsdLTtaFgRB5_gMopCtxD0N9M4tUOO-7hBGdICDldE$><https://urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-sig-mac__;!!H8mHWRdzp34!4HZ0uFxJQ121gF_TnX99OuMlgIXM600pq8wCbWruoLsdLTtaFgRB5_gMopCtxD0N9M4tUOO-7hBGdICDldE$%3chttps:/urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-sig-mac__;!!H8mHWRdzp34!4HZ0uFxJQ121gF_TnX99OuMlgIXM600pq8wCbWruoLsdLTtaFgRB5_gMopCtxD0N9M4tUOO-7hBGdICDldE$%3e>
> >
> >        [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-SIG-Mac mailing list
> > R-SIG-Mac@r-project.org<mailto:R-SIG-Mac@r-project.org>
> > https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-sig-mac__;!!DZ3fjg!_OUXHENJ_6aGlU-humThmTaUR5okhDKW2EGEY49AjJ4AN8eXBWtZCWE3O01pnyxbRpGQDhCl8MMLThVBbYOwLI1d$<https://urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-sig-mac__;!!DZ3fjg!_OUXHENJ_6aGlU-humThmTaUR5okhDKW2EGEY49AjJ4AN8eXBWtZCWE3O01pnyxbRpGQDhCl8MMLThVBbYOwLI1d$>
> >
> >
> > --
> > Best,
> > Kasper
> >
> >        [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-SIG-Mac mailing list
> > R-SIG-Mac@r-project.org
> > https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-sig-mac__;!!DZ3fjg!_OUXHENJ_6aGlU-humThmTaUR5okhDKW2EGEY49AjJ4AN8eXBWtZCWE3O01pnyxbRpGQDhCl8MMLThVBbYOwLI1d$<https://urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-sig-mac__;!!DZ3fjg!_OUXHENJ_6aGlU-humThmTaUR5okhDKW2EGEY49AjJ4AN8eXBWtZCWE3O01pnyxbRpGQDhCl8MMLThVBbYOwLI1d$>
> >
> > [[alternative HTML version deleted]]
> >
> > _______________________________________________
> > R-SIG-Mac mailing list
> > R-SIG-Mac@r-project.org
> > https://urldefense.com/v3/__https://stat.ethz.ch/mailman/listinfo/r-sig-mac__;!!DZ3fjg!9XPrFiayt1-V0BmNqWv4wn0V_G6ZIC6DgkviDYpRV4s-dmAnj9Qp_QFEHPG5dbO-Sk0IhdfC3lB0qeeJBDE2ann7kz0eS7A$<https://urldefense.com/v3/__https:/stat.ethz.ch/mailman/listinfo/r-sig-mac__;!!DZ3fjg!9XPrFiayt1-V0BmNqWv4wn0V_G6ZIC6DgkviDYpRV4s-dmAnj9Qp_QFEHPG5dbO-Sk0IhdfC3lB0qeeJBDE2ann7kz0eS7A$>


        [[alternative HTML version deleted]]

_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-sig-mac

Reply via email to