Initial OpenMP support#25937
Conversation
|
To clarify, I have tested this by compiling + linking a program requiring openmp |
sbc100
left a comment
There was a problem hiding this comment.
I assume the contents of system/lib/libomp is coming from an upstream repo?
Can you using git submodule for this and put it in third_party/ maybe?
Yess, it is from llvm. Since all the other llvm libraries are in this location, it made sense to put it here. Do you want the entire LLVM repository as a submodule? It seems a bit overkill, at that point the other libraries can also be pulled from there |
Oh i see, I didn't realize this was from llvm. I that case the import approach your took does seem reasonable. |
|
Failing tests:
For the last two I would like to disable the tests, but I don't know how. Ruff issues can be easily fixed ofc |
|
Hi @JAicewizard @sbc100, Thanks a lot for working on this. I along with many other folks would surely be interested in this use case. My use case revolves around being able to run OpenMP based code in a REPL format in the browser using clang-repl (try out basic C++ usecases here). Being able to support OpenMP in the previous link would be great. |
|
Is there a timeline, when we can expect emscripten to support OpenMP ? |
|
I am just waiting on the maintainers for what I am supposed to do with the failing tests |
Let's tag @sbc100 who should be able to help us here ! |
JAicewizard
left a comment
There was a problem hiding this comment.
Whats resolved is fixed locally, will test the other changes before resolving and pushing
|
We have openmp working with clang-repl now natively. Check this C++ notebook out for running openmp in a repl format. This is built on xeus-cpp, the C++ Jupyter kernel that is powered by clang-repl. Here's me drawing the mandelbrot plot with a speed up offered by openmp Xues-cpp also offers wasm kernels alongside native kernels that work completely in the browser. Check : https://compiler-research.org/xeus-cpp/lab/index.html So to have the same example through in the wasm kernel, we would like to have support for OpenMp through emscripten. |
|
@JAicewizard Hi, thanks for working on this. From the logs of the failing tests, it seems like it's just toolchain drift (LLVM 23 vs expected 22). |
|
@JAicewizard @sbc100 I rebased and resolved the failing tests in this PR Can you review? |
|
Thank you very much! I am currently overcome by events, and last time rebasing was quite a lot more work than expected. I will take a quick look later today at your PR, but any step towards getting this merged is highly appreciated! |
This makes
emccrecognize-fopenmp, and links it as needed.When updating openmp, it neesd to be compiled. This is not strictly neccesary, but we need to invoke cmake in order to generate the headers. When compiling openemp, we need to make use of cmake as well, as the build system is quite long and complicated. I am sure it can be done another way using ninja, and I encourage others to implement this, but I do not have the capacity right now to make this happen.
Fixes: #13892
Fixes: #17637