OpenMP runtimes
See original GitHub issueThere are 3 variants,
- libgcc-ng - libgomp.so
- intel-openmp - libiomp5.so
- llvm-openmp - libomp.so
2 and 3 are basically the same. They share the same codebase. intel-openmp-2019.4-243
and llvm-openmp-8.0.0
have the same symbols except for kmp_compose_init
which is missing in llvm-openmp
. (No google hits on that symbol)
One advantage of LLVM and Intel’s openmp is that it is fork safe, while GNU’s is not.
LLVM’s openmp have two sets of symbols. GOMP ones and Intel ones. clang
generated code use the Intel symbols. The GOMP symbols are present in LLVM’s openmp which means we can swap the two implementations.
I checked libgcc-ng 7.3.0 and llvm-openmp 8.0.0 and the symbols in https://gist.github.com/isuruf/36851d30ef57153807a8bdd11812ee90 are missing. Most of these relate to OpenACC and target off-loading in OpenMP 4.5. (There are some symbols missing that should be fixed in LLVM side. For eg: https://reviews.llvm.org/D65714)
My question is are we okay with going the BLAS way and swapping these implementations under the hood? BLAS is working really well and I thought we could use the same strategy for openmp.
Issue Analytics
- State:
- Created 4 years ago
- Reactions:1
- Comments:23 (21 by maintainers)
Top GitHub Comments
@beckermr, they are covered by https://github.com/AnacondaRecipes/aggregate/blob/master/LICENSE.txt
No, but we can steal https://github.com/AnacondaRecipes/intel_repack-feedstock @scopatz said that NumFOCUS lawyer gave us a green light to redistribute MKL.