-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Intel oneAPI DPC++/C++ Compiler support #229
base: main
Are you sure you want to change the base?
Conversation
Hey Gianmario, Thanks for this PR, this looks like a great start to adding Intel compiler support! I've had a little play around with this locally and was expecting there to be numerous issues in downstream repositories. It may take some time and effort but ideally, we'd look to address these issues by raising pull requests addressing the issues and be good citizens of the open-source world :) Hopefully, we could spearhead Morpheus into a leading example of using the Intel Compiler over time. I've previously used this compiler (an older version) a lot for generating high-performance computing libraries using vector instruction sets, and have plans for using this approach for things like physics, collision detection, matrix computation when we start getting into some of the interesting work with this project. For now, let's try to keep track of the issues we discover and need to address as we go. Dependency issues for Intel compiler support:
Also, the next issue we'd need to address for this is the issue of CI support for github actions. When I installed the Intel Compiler in my Ubuntu WSL on Windows it took about 45 minutes to install so is not practical to run on a CI every time. However, I have some ideas here around building containerises build environments which we can use for github action so that we could provide containers with all of the required build tools. In fact, I've gone as far as creating a project for this, aimed at being a Python tool which uses Jinja2 templates to generate dockerfile which then build into containers: https://github.com/Twon/Bebe. However, I've not made progress on this yet, but just a heads up on intended directions for how to solve this. Of course, let me know if you have any other ideas. Does that all sound reasonable? Btw, sorry for the delay coming back to you, last week in Hawaii at the ISO C++ meeting was intense, and I'm still recovering from jet lag this week and working towards a deadline of November 21st to take our paper to electronic polling to be sent to LWG. Hopefully, be back on track next week! Cheers, |
Totally agree. I will start to do it then. I have some newbie questions about how to proceed 😄
I am not an expert at all but it seems a very good tool. Since it is probably specifically tailored for Intel CPUs I believe there is also a potential to use it extensively for low latency applications. It doesn't seem a very popular compiler tho! Maybe it's just a relatively new thing and human nature is to naturally for consolidated habits. Anyway, sounds like a very interesting roadmap and a big rabbit hole to go down. It will be a lot of fun.
Let's talk about how practically approach those two dependencies. About
About this dependency how would you approach the fix? Because I believe it is not possible to debug the build process. I think that I have to fork the repository locally and try to build it with Intel compiler until it works. Or maybe it is quicker to manually modify the header file in local
I totally agree that 45 minutes is not an acceptable time for a CI job. Once we resolved all the dependencies and we are able to build it successfully I will try to find if there is some custom tool/action which can help to overcome this issue.
No worries, thank you for all the suggestions. |
Update: |
Thanks for the update. This project was also affected when |
Looks like Conan might require extending in places to support the Intel compiler: |
Right, I tried to make a proposal, let's see what they think. |
Hello Antony,
This is a draft PR to integrate the build process with the Intel oneAPI DPC++/C++ Compiler #58 #218.
Initially in my mind I had the following integration process:
No joy. I started with the first step and immediately had to fight with compilation issues. Below the steps done (starting from a clean repository situation):
settings.yml
file in order to add versions of the intel-cc compilerpython -m venv .venv
.venv\Scripts\activate.bat
pip install -r ./requirements.txt
conan profile detect --force
conan config install ./.conan
conan install ./ -pr:h .conan2/profiles/intel/2023.2/x64-libstdc++-release -pr:b .conan2/profiles/intel/2023.2/x64-libstdc++-release --build missing -c tools.cmake.cmaketoolchain:generator="Ninja Multi-Config"
Immediately getting error message about package
ms-gsl/4.0.0
:the Intel oneAPI compiler is not available for the package, here is a code snippet of the Conan recipe where it is triggering the error:
Only for testing purposes I by-passed this error by excluding the
ms-gls
package from the requirements inconanfile.py
.Then we start to get errors in the compile process because it seems that the required dependencies are not supporting the compiler.
This is what happens for package
glbinding/3.1.0
(6 of 30 to be installed) where we get the compilation error "Unsupported compiler":If we investigate the source file
glbinding_features.h
it seems a compiler macro issue; in fact in my opinion the Intel oneAPI DPC++/C++ Compiler should be supported because the compiler macro signature__INTEL_LLVM_COMPILER
is there and should trigger the instructiondefine GLBINDING_COMPILER_IS_IntelLLVM 1
:who knows where is the catch here... The execution then jumps at row 361 and the error message is triggered:
So, not sure what we have to do here. I have the feeling that most of the Conan packages are mainly supporting the "big three" compilers and that the support for the Intel compiler is currently more a matter of luck than of a real intention 😄
Which is your opinion? How do we have to approach this?
Thanks.
Cheers
Gianmario