Skip to content
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

is it possible to have intel compiler in manylinux docker image? #1096

Closed
QINQINKONG opened this issue May 15, 2021 · 5 comments
Closed

is it possible to have intel compiler in manylinux docker image? #1096

QINQINKONG opened this issue May 15, 2021 · 5 comments
Labels

Comments

@QINQINKONG
Copy link

Hi. I'm trying to use manylinux docker container to distribute a python package with a C extension compiled by cython. Since my code works fine if compiled by intel compiler, but not good (the scipy.optimize.brentq function cannot converge sometimes) if compiled by gcc compiler. Also icc is faster than gcc in my case. So I would like to distribute a precompiled binary using intel compiler. However, it seems that we don't have intel compiler in manylinux docker container. Is it possible to install it? Or does it still comply to the manylinux policy if I use intel compiler?

Thanks!

@matthew-brett
Copy link
Contributor

I think your only option will be to make such an image yourself, by building on top of an existing Manylinux image, or installing the compiler on the fly in your build.

The resulting wheel will have some Intel license implications, as you'll inevitably end up shipping their run-time routines somehow - so you might want to work out some way of warning your installing users what they are consenting to. I haven't looked into this in a while, but you might want to check whether the user of your wheel has to agree not to disassemble the binary code or redistribute the code, and whether you, the distributor, are liable for Intel's legal costs if someone sues them as a result of using your software.

@QINQINKONG
Copy link
Author

Thanks for the so quick reply! I can try to make this image myself. Also, does it mean that using intel compiler doesn't violate the manylinux policy, and I would be still able to upload the generated wheel onto PyPi?

@QINQINKONG
Copy link
Author

I think your only option will be to make such an image yourself, by building on top of an existing Manylinux image, or installing the compiler on the fly in your build.

The resulting wheel will have some Intel license implications, as you'll inevitably end up shipping their run-time routines somehow - so you might want to work out some way of warning your installing users what they are consenting to. I haven't looked into this in a while, but you might want to check whether the user of your wheel has to agree not to disassemble the binary code or redistribute the code, and whether you, the distributor, are liable for Intel's legal costs if someone sues them as a result of using your software.

Thanks for the so quick reply! I can try to make this image myself. Also, does it mean that using intel compiler doesn't violate the manylinux policy, and I would be still able to upload the generated wheel onto PyPi?

@mayeut
Copy link
Member

mayeut commented May 15, 2021

To extend a bit on what @matthew-brett wrote (all of which I agree with):

Also, does it mean that using intel compiler doesn't violate the manylinux policy, and I would be still able to upload the generated wheel onto PyPi?

If it passes the auditwheel check, you're good to go but you'll have to try. The dependency stuff with auditwheel might be an issue if you're not allowed to redistribute intel libraries or modify them (because auditwheel WILL modify them). No way to tell this without testing it I guess.

@QINQINKONG
Copy link
Author

To extend a bit on what @matthew-brett wrote (all of which I agree with):

  • Intel is publishing some of its runtime libraries On PyPI: https://pypi.org/user/IntelAutomationEngineering/ (search for "-rt" packages)
    Wether or not they are redistributing these for convenience or for legal reason given the license (i.e. you shall depend on them and can't redistribute them) is something you should also look into.
  • auditwheel doesn't know how to handle those dependencies: pypa/auditwheel#250

Also, does it mean that using intel compiler doesn't violate the manylinux policy, and I would be still able to upload the generated wheel onto PyPi?

If it passes the auditwheel check, you're good to go but you'll have to try. The dependency stuff with auditwheel might be an issue if you're not allowed to redistribute intel libraries or modify them (because auditwheel WILL modify them). No way to tell this without testing it I guess.

Thanks for the answer. I just had a look at the intel end user licenses. It's more complicated than I thought! I will definitely pay attention to the license issue if I finally decided to use intel compiler.

@mayeut mayeut closed this as completed Aug 1, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants