-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
compilation with GCC-9 on OSX Catalina #2303
Comments
Any warnings earlier in the build, particularly around building of the sgemm kernel, or any chance you could rebuild with the additional option DEBUG=1 (which should hopefully provide a better backtrace) ? |
Please find attached the compilation log and the warnings and errors during compilation. I used DEBUG=1 option defined in the Makefile.rule. The compilation looks OK, but the verification of the compiled library fails. OPENBLAS_NUM_THREADS=1 OMP_NUM_THREADS=1 ./sblat2 < ./sblat2.dat produces the following error: The line 124 of the sblat2.f is: This line of Fortran looks ok for me... Removing the "STATUS = 'NEW' " option propagates the error to a later position, and finally ends with a general segmentation fault. Also, the folliwing error is there: Program received signal SIGSEGV: Segmentation fault - invalid memory reference. Backtrace for this error: |
STATUS='NEW' is valid fortran, it will generate a runtime error when the file already exists (SUMMRY is SBLAT2.SUMM here, all the BLAS2 and 3 tests produce corresponding .SUMM files). Strange that the backtrace for the sblat1 crash would not contain function names with DEBUG=1, which adds the -g option to the compiler flags. Could be all steps are inside libc or some other system library for which no debugging information is available though. |
Not reproducible on Linux with gcc 9.2.0 either (and valgrind does not find any signs of illegal memory accesses there). Travis CI shows no suspicious build warnings but unfortunately does not appear to offer Haswell cpu features to its osx instances. A dynamic_arch build with nehalem for the build host target runs all tests without fault, though some of the results are intermixed with runtime warnings about IEEE fp signals for division-by-zero. (I beiieve these are caused by generic test code in LAPACK that deliberately performs a division by zero to see if the system handles it in a standard-conforming way.) |
The latest upgrade of OSX- Catalina discontinues all 32-bit applications. This means that all 32-bit applications and libraries will not function correctly. This was the reason why many of the famous software (MS Word, Mathematica, etc.) released special updates/releases to comply with this drastic change of the new OSX. I wonder if the reported issue is somehow connected with this change of the new OSX. |
Thanks for the pointer, but I do not see how this could be related. (If anything one might argue that it could make INTERFACE64 a requirement if it also implied changing all int to long). BTW does a build without the INTERFACE64=1 work on your system ? |
No. Leaving everything in the Makefile.rule by default gives a similar result. Can it be related to avx512? machdep.cpu.features: FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE MCA CMOV PAT PSE36 CLFSH DS ACPI MMX FXSR SSE SSE2 SS HTT TM PBE SSE3 PCLMULQDQ DTES64 MON DSCPL VMX SMX EST TM2 SSSE3 FMA CX16 TPR PDCM SSE4.1 SSE4.2 x2APIC MOVBE POPCNT AES PCID XSAVE OSXSAVE SEGLIM64 TSCTMR AVX1.0 RDRAND F16C |
Could it be picking up a wrong dynamic library at runtime ? (It is a long shot, but the sblat1 binary is linked dynamically against libgfortran.so etc). Another thing to try would be specfiying a TARGET like SANDYBRIDGE or NEHALEM to check if the problem is linked to specific gemm kernel features, e.g. AVX2 (I am now trying to build for Sandybridge on Travis in the hope that the virtual |
No, not AVX512 (that would be "SkylakeX" target, i.e. recent Xeon cpu. Yours appears to be correctly autodetected as having AVX2 (Haswell, Kaby Lake or similar refreshes of the original Haswell architecture). I assume you are building on actual hardware, or is the build running in a virtual machine ? |
No. I build it on my laptop. Here are the libraries which are linked dynamically to sblat1 and sblat2 tests: otool -L sblat1 Other test programs have the same dependencies. I installed the GCC-9 via MacPorts. |
Hmm, I wonder about the libgfortran.3.dylib - normally gcc 9.x comes with libgfortran version 5 (at least on Linux, but I do not see why OSX would be different). Do you have a libgfortran.5.dylib somewhere on your system as well ? |
TARGET=SANDYBRIDGE build completed on Travis just now, all tests passing without any warning (not even the "IEEE... is signalling" seen from the dynamic_arch build). |
Oh, I think the problem is solved now. It was my problem. sblat1: The issue is solved and may be closed. Thank you for the support and for your time. |
Compilation of the v0.3.7 and latest develop branch (commit eb2eddf) is not successful on OSX -10.15.1 (Catalina). XCode 11.2.
GNU Fortran (MacPorts gcc9 9.2.0_1) 9.2.0
One important selected option: "INTERFACE64 = 1", was set in Makefile.rule. Everything else was by default.
The following error appeared:
The text was updated successfully, but these errors were encountered: