- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I am currently using Ubuntu 19.10 with the latest version of oneapi installed on it via APT. I can compile my code with it and it works. However, when I want to use -shared option to compile them and create a shared library to include in the R package, I get the following error:
/usr/bin/ld: /tmp/X.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: nonrepresentable section on output
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
And that is with all my individual files being compiled with the -fPIC option already. Any ideas I'm missing?
- Tags:
- General Support
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
We got your problem and we are working on it.
Just confirm for us that are you using OneAPI DPC++ Compiler 2021.1-beta05?
-Abhishek
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
If you are using DPCPP from the OneAPI-beta05 toolkit then there is one flag that you skipped while generating a shared library.
First, generate your .o file with dpcpp, Second when you are generating shared library from the .o file use following command:
dpcpp -shared -fPIC -o lib<filename>.so <filename>.o
It will successfully generate lib<filename>.so for you, then you can include it into your R packages.
I hope your problem gets resolved.
-Abhishek
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks a lot, Abhishek! That solved the linking problem. However, now I get another error at a later stage:
/opt/intel/inteloneapi/mkl/2021.1-beta05/lib/intel64/libmkl_sequential.so: undefined symbol: mkl_graph_mxv_plus_times_fp32_def_i32_i64_i64
And the same error holds even if I use TBB instead of Sequential
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Will you please elaborate on the error you are getting, which means you are getting it at compile time or at a time of executing the executable.
It would be great if you show me your compilation steps so that we can easily trace your error.
Warm Regards,
Abhishek
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Here is the output, after compiling all individual source files:
dpcpp -shared -L/opt/microsoft/ropen/3.5.3/lib64/R/lib -fPIC -L/opt/intel/inteloneapi/mkl/2021.1-beta05/lib/intel64 -lmkl_sycl -lmkl_intel_ilp64 -lmkl_core -lmkl_sequential -lsycl -lOpenCL -lpthread -lm -ldl -o ACTIONet.so ACTIONet.o RcppExports.o ACTIONet/misc/my_utils.o ACTIONet/enrichment/enrichment.o ACTIONet/enrichment/pseudobulk.o ACTIONet/enrichment/normalization.o ACTIONet/archetype_unification/unification.o ACTIONet/network_construction/build_network.o ACTIONet/visualization/colorspace.o ACTIONet/visualization/gradient.o ACTIONet/visualization/optimize.o ACTIONet/visualization/layout.o ACTIONet/visualization/sampler.o ACTIONet/decomposition/reduced_kernels.o ACTIONet/decomposition/SVD.o ACTIONet/decomposition/archetype_pruning.o ACTIONet/decomposition/AA.o ACTIONet/decomposition/ACTION.o -L/opt/microsoft/ropen/3.5.3/lib64/R/lib -lR
installing to /home/shahin/R/x86_64-pc-linux-gnu-library/3.5/ACTIONet/libs
** R
** data
** inst
** byte-compile and prepare package for lazy loading
** help
*** installing help indices
** building package indices
** testing if installed package can be loaded
Error: package or namespace load failed for ‘ACTIONet’ in dyn.load(file, DLLpath = DLLpath, ...):
unable to load shared object '/home/shahin/R/x86_64-pc-linux-gnu-library/3.5/ACTIONet/libs/ACTIONet.so':
/opt/intel/inteloneapi/mkl/2021.1-beta05/lib/intel64/libmkl_sequential.so: undefined symbol: mkl_graph_mxv_plus_times_fp32_def_i32_i64_i64
Error: loading failed
Execution halted
ERROR: loading failed
* removing ‘/home/shahin/R/x86_64-pc-linux-gnu-library/3.5/ACTIONet’
* restoring previous ‘/home/shahin/R/x86_64-pc-linux-gnu-library/3.5/ACTIONet’
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
We have also encountered such errors in some of our installations, so in your case, I will suggest you to please check the ACTIONet is correctly installed, sometimes there is also case that the installed package cannot find right repo. So if it is installed properly you can also try specifying the path of you installed libraries to the LD_LIBRARY_PATH again try running those commands.
It should resolve your issue. If you still have the error you can reach us out.
-Abhishek
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The library I am developing itself is called ACTIONet. " /opt/intel/inteloneapi/mkl/2021.1-beta05/lib/intel64/libmkl_sequential.so: undefined symbol: mkl_graph_mxv_plus_times_fp32_def_i32_i64_i64" to me sound like that the threading library in mkl is using this function and that is defined in another library that is not suggested to be linked by intel link advisor, which is "-L${MKLROOT}/lib/intel64 -lmkl_sycl -lmkl_intel_ilp64 -lmkl_core -lmkl_sequential -lsycl -lOpenCL -lpthread -lm -ldl"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ok, Is it possible for you to share the source code where you are getting errors so that we can try reproducing it from our end and then we will get back to you.
-Abhishek
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Just a quick update: Upon further tracing the issue, it looks like the issue is raised due to a conflict with the mkl_core library already included in MRAN (the version of R I am using to compile the code).
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Final update: It looks like "mkl_graph_mxv_plus_times_fp32_def_i32_i64_i64" is a new function implementation in mkl_core provided by the oneAPI that has not been in previous versions of MKL. MRAN by default has an older version of MKL that uses while compiling the package. By using static linking instead of dynamic I was able to explicitly incorporate the right library inside and have it compiled.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Will you please post your this issue on Intel® oneAPI Math Kernel Library & Intel® Math Kernel Library forum, they will be the best one to guide you on it.
I tried solving this problem, but I may not be the one who will give the exact solution to it, They will definitely solve your problem regarding the conflicts you are facing in mkl_core.
We hope your issue will get resolved as soon as possible.
Stay Healthy Stay Safe!
Warm Regards,
Abhishek
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
We hope your issue is resolved.
Will you please confirm if your issue related to this Forum is resolved?
Warm Regards,
Abhishek
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
We are closing this thread as your issue is been resolved.
Thank You
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page