DrTimothyAldenDavis / GraphBLAS

SuiteSparse:GraphBLAS: graph algorithms in the language of linear algebra. For production: (default) STABLE branch. Code development: ask me for the right branch before submitting a PR. video intro: https://youtu.be/Tj5y6d7FegI .
http://faculty.cse.tamu.edu/davis/GraphBLAS.html
Other
364 stars 63 forks source link

Build failing with intel oneAPI compilers #128

Open jfgrimm opened 2 years ago

jfgrimm commented 2 years ago

When trying to build SuiteSparse newer than 5.8.1 with either intel compilers version 2021.2.0 or 2021.4.0, the build fails whilst building GraphBLAS with:

/dev/shm/jfg508/SuiteSparse/5.11.0/intel-2021b-METIS-5.1.0/SuiteSparse-5.11.0/GraphBLAS/Source/Template/GB_AxB_dot4_cij.c(77) (col. 17): internal error: 04010002_12229

This error doesn't seem occur with older (pre-oneAPI) intel compilers

DrTimothyAldenDavis commented 2 years ago

That sounds like an Intel compiler bug. Is this the icx compiler? What platform are you using? I will likely need help from Intel to track this down, and I'll need these details. I have used Intel 2022 compilers for GraphBLAS and it works just fine, on Ubuntu linux (both 20.04 and 18.04 if I recall).

Can you try the latest 2022 icx compiler? If that fixes the problem, then it must have been a bug in the 2021.x icx compiler. If so, then I would like to know so I can tell users that GraphBLAS requires either a recent gcc (I think 6.x or later, or whatever), or icx 2022 or later.

DrTimothyAldenDavis commented 2 years ago

I haven't tried icx 2021.x or earlier.

jfgrimm commented 2 years ago

this is on a centos 7.9 system (skylake), using the icc/icpc compiler. have had no issues when using GCC, will give the 2022.x compilers a shot

DrTimothyAldenDavis commented 2 years ago

Thanks. If switching to the 2022.x compilers resolves it, then I'll put a note in the user guide and I'll try checking the compiler version in the cmake script. Can you try both icc and icx? The latter generates faster code, as compared to icc, so icx is the preferred intel compiler.

jfgrimm commented 2 years ago

Using the 2022.x compilers didn't solve the issue for me; icc still fails with identical error messages. I've also had no luck with icx, which actually fails slightly sooner -- I've thrown the error message and supplementary files in a gist.

DrTimothyAldenDavis commented 2 years ago

Thanks for the details. I'm trying icx 2022.0.0 just now, on GraphBLAS v7.0.2 (here, not in the SuiteSparse github repo), on an Ubuntu 20.04 system (Intel Xeon broadwell). It compiles just fine. SuiteSparse 5.11.0 contains GraphBLAS v6.2.5 which is identical to v7.0.2 in regards to this file, but I tried it there too. Works fine.

I'm also trying out v7.0.2 on my Linux laptop, which is Ubuntu 18.04.6 with icx 2022.0.0. It's still compiling but it compiled that file just fine.

It looks like this bug needs to be submitted here: https://software.intel.com/en-us/support/priority-support but I can't replicate it myself.

DrTimothyAldenDavis commented 2 years ago

I also don't have Priority Support from Intel.

DrTimothyAldenDavis commented 2 years ago

@tgmattso : can you take a look at this icx compiler bug? And perhaps connect me with someone at Intel who I can report an icx compiler bug to?

DrTimothyAldenDavis commented 2 years ago

icx 2022.0.0 worked just fine on my Ubuntu 18.04 laptop.

The error message says something about a premature EOF. Could it be that your filesystem ran out of space?

jfgrimm commented 2 years ago

Thanks for looking into this :) Space is no issue, and I can reproduce the error after wiping the build directory and re-downloading sources. I don't see why it would build on ubuntu and not centos; perhaps the issue is the icx version in combination with system compiler?

jfgrimm commented 2 years ago

yup that's it I hit the above issues when the intel compilers are built on GCC 11.2.0 w/ binutils 2.37, but it builds successfully when using either icx built against GCC 9.3.0 w/ binutils 2.34. icc fails in either case on Source/Template/GB_AxB_dot4_cij.c(77) (col. 17): internal error: 04010002_12229

DrTimothyAldenDavis commented 2 years ago

So there are two compiler bugs? icx fails when trying to use binutils 2.37 but not 2.34, and icc fails all the time?

jfgrimm commented 2 years ago

yes, looks that way