Compatibility with Intel compilers

I was trying to build an app with the Intel compiler 19.1 (20200117) and CUDA, but got the error message

/usr/local/cuda-10.2/include/crt/host_config.h(110): error: #error directive: -- unsupported ICC configuration! Only ICC 15.0, ICC 16.0, ICC 17.0, ICC 18.0 and ICC 19.0 on Linux x86_64 are supported!

I have two questions:

  1. Is this message literally true? Does it mean that it wouldn’t work with, for example, icc 15.1? (Not sure that Intel actually released v15.1, it’s just a made-up example)
  2. Is there going to be future support for icc 19.1 in future releases of the CUDA drivers?
    Just for clarification, it’s not feasible for me to downgrade to icc 19.0 at this point.

When NVIDIA tells you that something is unsupported, they mean it. If you have any issue with an unsupported configuration, NVIDIA in its official capacity won’t render assistance.

Maybe, maybe not. Without running extensive compatibility tests and verifying the results, nobody can be sure. Code may not build at all due to errors, or code may build but behave in unintended ways. Based on historical observation I’d say there is a 50:50 chance it may work.

Historical precedent tells us that NVIDIA comments on future products only in the rarest of cases. BTW, the support has nothing to do with drivers, but with the tight integration of the CUDA tool chain with the host tool chain, icc in this case. The most frequent issues from what I have seen are incompatibilities between CUDA header files and host header files.

Why not? I have been a user of the Intel compilers (C/C++ and Fortran) for almost 25 years, and typically it is possible to move around between the minor revisions without breaking anything.

You may be able to use 19.0 as your CUDA host compiler and 19.1 for other C++ files unrelated to CUDA.

Hi @njuffa,
Thank you for your insight. It’s not that I don’t believe Nvidia as the message simply stated its support for major revisions, which sounded a bit odd (at least to me as I cannot recall many other packages with this strict constraint on minor revisions). You’re right, I should have used a different word instead of drivers (slip of the tongue or the fingers in this case).
The reason why I cannot downgrade to icc v19.0 is because I’m using a prepackaged bundle, which would render ‘apt’ or similar useless for this task.

NVIDIA tests various configurations. Those that complete testing successfully may be guarded in this fashion. Those that fall outside of these guards either are untested or were tested and failed for some reason.

No further information is provided or publicly available, and anyway the tools are meant to be used as-is. The restriction is intentional.

Since compiler testing is something that has to be updated for each new CUDA version, it’s possible/likely that newer CUDA versions may support versions of ICC newer than 19.0. Specific future roadmaps are generally not published in this forum.

How many of these other packages require tight integration of different tool chains from different vendors who are also competitors? The root cause of the strict constraints is CUDA’s feature of allowing host and device code in the same compilation unit, with identical sizes for all elementary data types etc.

This looked like a good idea when CUDA was created. I was in the room when we discussed this. And it probably helped get CUDA off the ground quickly in the early days. However, it clashes somewhat with modern tool chain release and adoption practices which were not in use back in 2005, creating a bit of a nuisance.

The CUDA Installation Guide for Linux spells out CUDA 10.2 compatibility with icc 19.0, not icc 19.x. The tool chain error message confirms this. You can try to decouple in the manner suggested by tera in #3.

I understand the concerns about intellectual property. My license is good only for Intel 19.1 (I don’t have any other reason to choose v19.1 over v19.0). I guess that, at this point, the best solution is to wait until the next CUDA revision (the present one has been there for a few weeks if my recollection is correct) and re-test. If that doesn’t work either, then it might be the moment to check out other Intel licenses. Thanks.