Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Internal error with CilkPlus directive

Nick_M_3
New Contributor I
407 Views

In build 13.1.2.183 and command

icpc -std=c++11 -g -O3 -xHost -align -ansi-alias -mcmodel=medium -DBLAS -fopenmp Cholesky.cpp -mkl -lm

the attached program gets:

": internal error: backend signals

compilation aborted for Cholesky.cpp (code 4)

0 Kudos
10 Replies
Georg_Z_Intel
Employee
407 Views
Hello, I cannot reproduce the fail. Would it be possible to provide a preprocessed file (icpc -P) to get rid of system header dependencies? Also, what system do you have? The effect of option "-xHost" depends on that. Thank you & best regards, Georg Zitzlsberger
0 Kudos
Nick_M_3
New Contributor I
407 Views

No problem, but it may not be for a little bit.  There was a bug in my code, incidentally, but such crashes aren't nice.

0 Kudos
Georg_Z_Intel
Employee
407 Views
Hello, even if the example is not correct internal errors like that should not occur. I'm chasing such errors once I see just a glimpse of them because they are hard to find again later. If you could provide some version of preprocessed output showing that error would be great. Best regards, Georg Zitzlsberger
0 Kudos
TimP
Honored Contributor III
407 Views

The internal error occurs as well with both the more recent compiler releases, at -O2 and above.  It is provoked by the erroneous use of pragma simd reduction, which ought to throw an error or warning message.

0 Kudos
Nick_M_3
New Contributor I
407 Views

Thanks very much.  Yes, that was the error - a cut-and-paste error :-)

0 Kudos
Georg_Z_Intel
Employee
407 Views
Thank you Tim for the reproducer. I've filed this as internal defect ticket DPD200389919 and update the thread once fixed. One note nonetheless. The problem is caused by the following use of #pragma simd, which is illegal: void cholesky_cilkplus (double a[size][size]) { for (int j = 0; j < size; ++j) { a[0:j] = 0.0; double x = a = sqrt(a-__sec_reduce_add(a[0:j]*a[0:j])); #pragma simd reduction(+:x) for (int i = j+1; i < size; ++i) a = (a - __sec_reduce_add(a[0:j]*a[0:j])) / x; } } The use of clause "reduction" is not allowed for "x". The reason is that variable "x" is not a reduction (left hand side). You should remove it to work (in this case). Best regards, Georg Zitzlsberger
0 Kudos
Georg_Z_Intel
Employee
407 Views

Hello,

I've just verified the fix of the reported problem with the latest update (Intel(R) Composer XE 2013 SP1 Update 2).

Best regards,

Georg Zitzlsberger

0 Kudos
TimP
Honored Contributor III
407 Views

I've had great difficulty in upgrading to 2012 SP1 update 2 on windows 8.1, possibly because I installed update 1 from the parallel studio installer.  I've noticed additional bug fixes in update 2.  I made progress at last by trying a full remove with the parallel studio installer, then running the cluster studio installer.  

Resulting ICL version string:

Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Ve
rsion 14.0.1.139 Build 20140130

This compiler, although quoting update 1, appears to have the update 2 stability fixes.

Although I had removed Parallel Studio, it came back after shutdown, with the Microsoft paths broken.  The cluster studio installation, however, seems to survive shutdown.

0 Kudos
Georg_Z_Intel
Employee
407 Views

Hello Tim,

If the version string is as you quoted, then it's still the old Update 1. The new one (Update 2) should be visible as:

Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 14.0.2.176 Build 20140130

Best regards,

Georg Zitzlsberger

0 Kudos
TimP
Honored Contributor III
407 Views
Georg Build date matches update 2 and it works stably for the first time since I began attempting this upgrade 10 days ago so inclined to leave as is. Thanks.
0 Kudos
Reply