[R-SIG-Mac] symbol not found in flat namespace '___kmpc_critical'
Simon Urbanek
@|mon@urb@nek @end|ng |rom R-project@org
Mon May 1 04:59:10 CEST 2023
Given some of the misinformation in this thread I have to clarify a few things for posterity.
Firstly, the issue was very simple one - the package failed to link the omp library which is required and documented at https://mac.r-project.org/openmp/ -- the required flags are:
PKG_CPPFLAGS='-Xclang -fopenmp'
PKG_LIBS=-lomp
and the latter was missing in the package.
Any code using OpenMP must link to the OpenMP run-time library which provides the actual implementation, otherwise it doesn't work.
Second, there are no special compilers required, but the Apple driver don't accept the -fopenmp flag so it has to be specified as above, essentially working around the driver removing it - which is why this is considered experimental.
Finally, the only officially supported way is to use OpenMP flags provided by R. However, the macOS R releases are not built with OpenMP support, because the run-time is not part of macOS and current R doesn't know about the work-arounds. That said, in order to prepare for a possible OpenMP support on macOS, the R 4.3.0 release includes the LLVM OpenMP run-time compatible with Xcode 14.2. This is intended as a stepping stone where the possibly of OpenMP support using Apple compilers is can be tested. R itself currently does not have a provision to leverage this "non-standard" support, but it could be added in the future.
Cheers,
Simon
> On 1/05/2023, at 1:34 PM, Kasper Daniel Hansen <kasperdanielhansen using gmail.com> wrote:
>
> Rodney,
>
> I don't know much about OpenMP and macOS, but note that these days
> https://mac.r-project.org/tools/
> says
> "Additional information on the OpenMP page is available for those
> interested in OpenMP support which is not supported by Apple, but still
> possible with additional libraries."
> and links to
> https://mac.r-project.org/openmp/
>
> I _believe_ that this requires the _user_ (or the check/build system) of
> the package on macOS to install one of the custom clang compilers listed on
> the page. For this reason, I don't think it is trivial to get the
> package through CRAN or distribute the package if it links / uses OpenMP. I
> could be wrong of course, since it is not something I follow. I am guessing
> the best solution (which could be complicated) is to have a configure
> script which checks at build time whether the system supports OpenMP. This
> feels like something someone has thought about.
>
> Best,
> Kasper
>
>
>
>
> On Sat, Apr 29, 2023 at 6:32 PM Sparapani, Rodney via R-SIG-Mac <
> r-sig-mac using r-project.org> wrote:
>
>> Oh, that was totally self-inflicted.
>> I had commented out PKG_LIBS in Makevars.in
>> That does work on Linux with OpenMP somehow.
>> However, it does NOT with macOS. Thanks
>>
>> --
>> Rodney Sparapani, Associate Professor of Biostatistics, He/Him/His
>> Director, Wisconsin Chapter of the American Statistical Association
>> Institute for Health and Equity, Division of Biostatistics
>> Medical College of Wisconsin, Milwaukee Campus
>>
>>
>> From: R-SIG-Mac <r-sig-mac-bounces using r-project.org> on behalf of Sparapani,
>> Rodney via R-SIG-Mac <r-sig-mac using r-project.org>
>> Date: Saturday, April 29, 2023 at 4:18 PM
>> To: r-sig-mac using r-project.org <r-sig-mac using r-project.org>
>> Subject: [R-SIG-Mac] symbol not found in flat namespace '___kmpc_critical'
>> ATTENTION: This email originated from a sender outside of MCW. Use caution
>> when clicking on links or opening attachments.
>> ________________________________
>>
>> Hi Gang:
>>
>> After hours of debugging, I�m stuck and hoping that someone has an
>> idea of what the issue is here. Any hints/tips/etc. are greatly
>> appreciated!
>>
>> I�m getting this error from my CRAN package, nftbart. Right now, I�m
>> preparing for a new release: v1.6. However, I�m stumped by this error
>> message that I get when installing with OpenMP. Without OpenMP,
>> everything is fine; however, the package benefits greatly from OpenMP.
>>
>> I am getting the same results for R 4.2.3 and 4.3.0 RC. The source code is
>> on github at
>> https://urldefense.com/v3/__https://github.com/rsparapa/bnptools.git__;!!H8mHWRdzp34!4rScCMt0gCJ2ZzuZjzo9CEWXYOBECh814z0fzF0OiVjfFcc609ThiLvNcCYt4sIk7wrZhld1ErXx7PLOgKyTDw$
>> <
>> https://urldefense.com/v3/__https:/github.com/rsparapa/bnptools.git__;!!H8mHWRdzp34!4rScCMt0gCJ2ZzuZjzo9CEWXYOBECh814z0fzF0OiVjfFcc609ThiLvNcCYt4sIk7wrZhld1ErXx7PLOgKyTDw$
>>>
>>
>> So, to demonstrate, you just need to do something like this�
>>
>>
>> $ git clone
>> https://urldefense.com/v3/__https://github.com/rsparapa/bnptools.git__;!!H8mHWRdzp34!4rScCMt0gCJ2ZzuZjzo9CEWXYOBECh814z0fzF0OiVjfFcc609ThiLvNcCYt4sIk7wrZhld1ErXx7PLOgKyTDw$
>> <
>> https://urldefense.com/v3/__https:/github.com/rsparapa/bnptools.git__;!!H8mHWRdzp34!4rScCMt0gCJ2ZzuZjzo9CEWXYOBECh814z0fzF0OiVjfFcc609ThiLvNcCYt4sIk7wrZhld1ErXx7PLOgKyTDw$>
>> DIR
>>
>> $ cd DIR
>>
>> $ R CMD build nftbart
>>
>> $ R CMD INSTALL nftbart_1.6.tar.gz
>>
>> * installing to library
>> �/Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library�
>>
>> * installing *source* package �nftbart� ...
>>
>> ** using staged installation
>>
>> checking whether the C++ compiler works... yes
>>
>> checking for C++ compiler default output file name... a.out
>>
>> checking for suffix of executables...
>>
>> checking whether we are cross compiling... no
>>
>> checking for suffix of object files... o
>>
>> checking whether we are using the GNU C++ compiler... yes
>>
>> checking whether clang++ -arch x86_64 -std=gnu++17 accepts -g... yes
>>
>> checking for clang++ -arch x86_64 -std=gnu++17 option to support OpenMP...
>> -lomp -Xclang -fopenmp
>>
>> configure: creating ./config.status
>>
>> config.status: creating src/Makevars
>>
>> ** libs
>>
>> using C compiler: �Apple clang version 14.0.3 (clang-1403.0.22.14.1)�
>>
>> using C++ compiler: �Apple clang version 14.0.3 (clang-1403.0.22.14.1)�
>>
>> using SDK: ��
>>
>> clang -arch x86_64 -I"/Library/Frameworks/R.framework/Resources/include"
>> -DNDEBUG -lomp -Xclang -fopenmp
>> -I'/Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/Rcpp/include'
>> -I/opt/R/x86_64/include -fPIC -falign-functions=64 -Wall -g -O2 -c
>> init.c -o init.o
>>
>> clang++ -arch x86_64 -std=gnu++17
>> -I"/Library/Frameworks/R.framework/Resources/include" -DNDEBUG -lomp
>> -Xclang -fopenmp
>> -I'/Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/Rcpp/include'
>> -I/opt/R/x86_64/include -fPIC -falign-functions=64 -Wall -g -O2 -c
>> nftbart.cpp -o nftbart.o
>>
>> clang++ -arch x86_64 -std=gnu++17 -dynamiclib
>> -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module
>> -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib
>> -L/opt/R/x86_64/lib -o nftbart.so init.o nftbart.o
>> -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework
>> -Wl,CoreFoundation
>>
>> installing to
>> /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/00LOCK-nftbart/00new/nftbart/libs
>>
>> ** R
>>
>> ** data
>>
>> ** demo
>>
>> ** byte-compile and prepare package for lazy loading
>>
>> ** help
>>
>> *** installing help indices
>>
>> ** building package indices
>>
>> ** testing if installed package can be loaded from temporary location
>>
>> Error: package or namespace load failed for �nftbart� in dyn.load(file,
>> DLLpath = DLLpath, ...):
>>
>> unable to load shared object
>> '/Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/00LOCK-nftbart/00new/nftbart/libs/nftbart.so':
>>
>>
>> dlopen(/Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/00LOCK-nftbart/00new/nftbart/libs/nftbart.so,
>> 0x0006): symbol not found in flat namespace '___kmpc_critical'
>>
>> Error: loading failed
>>
>> Execution halted
>>
>> ERROR: loading failed
>>
>> * removing
>> �/Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/nftbart�
>>
>> * restoring previous
>> �/Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/library/nftbart�
>>
>>> sessionInfo()
>> R version 4.3.0 Patched (2023-04-27 r84338)
>> Platform: x86_64-apple-darwin20 (64-bit)
>> Running under: macOS Ventura 13.2.1
>>
>> Matrix products: default
>> BLAS:
>> /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRblas.0.dylib
>> LAPACK:
>> /Library/Frameworks/R.framework/Versions/4.3-x86_64/Resources/lib/libRlapack.dylib;
>> LAPACK version 3.11.0
>>
>> locale:
>> [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
>>
>> time zone: America/Chicago
>> tzcode source: internal
>>
>> attached base packages:
>> [1] stats graphics grDevices utils datasets methods base
>>
>> loaded via a namespace (and not attached):
>> [1] compiler_4.3.0
>>>
>>
>> OpenMP Build: LLVM 14.0.6
>>
>> $ codesign -d -vv /usr/local/lib/libomp.dylib
>>
>> Executable=/usr/local/lib/libomp.dylib
>>
>> Identifier=libomp
>>
>> Format=Mach-O universal (x86_64 arm64)
>>
>> CodeDirectory v=20400 size=6506 flags=0x0(none) hashes=198+2
>> location=embedded
>>
>> Signature size=8977
>>
>> Authority=Developer ID Application: Simon Urbanek (VZLD955F6P)
>>
>> Authority=Developer ID Certification Authority
>>
>> Authority=Apple Root CA
>>
>> Timestamp=Feb 5, 2023 at 4:26:54 PM
>>
>> Info.plist=not bound
>>
>> TeamIdentifier=VZLD955F6P
>>
>> Sealed Resources=none
>>
>> Internal requirements count=1 size=168
>>
>> --
>> Rodney Sparapani, Associate Professor of Biostatistics, He/Him/His
>> Director, Wisconsin Chapter of the American Statistical Association
>> Institute for Health and Equity, Division of Biostatistics
>> Medical College of Wisconsin, Milwaukee Campus
>>
>> [[alternative HTML version deleted]]
>>
>> [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-SIG-Mac mailing list
>> R-SIG-Mac using r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>
>
>
> --
> Best,
> Kasper
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-SIG-Mac mailing list
> R-SIG-Mac using r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>
More information about the R-SIG-Mac
mailing list