compiler stuck in loop (11.0.83)

compiler stuck in loop (11.0.83)

(This seems a very similar problem to http://software.intel.com/en-us/forums/showthread.php?t=62903 although that is reported as fixed in 11.0.072)

I have an MD4 implementation (hopefully attached as md4.cpp) which causes the compiler to hang when invoked as:

icpc -c md4.cpp

This is on 64-bit Linux (Debian)

The gdb backtrace on the mcpcom process is:

(gdb) where
#0 0x0000000000cbe444 in hlo_Contains_Iv ()
#1 0x0000000000cbe916 in hlo_Contains_Iv ()
#2 0x0000000000cbea3f in hlo_Contains_Iv ()
#3 0x0000000000cbe4b8 in hlo_Contains_Iv ()
[ ... repeats ... ]
#79 0x0000000000cbe4b8 in hlo_Contains_Iv ()
#80 0x0000000000cbe916 in hlo_Contains_Iv ()
#81 0x0000000000cc9576 in HLO_Contains_Iv_P ()
#82 0x0000000000cd4242 in hlo_traceback_p ()
#83 0x0000000000cd542b in hlo_expr_trace_for_use ()
#84 0x0000000000cbec70 in hlo_Symbolic_Additive ()
#85 0x0000000000cbbee7 in hlo_Scalar_Reference ()
#86 0x0000000000cc59e0 in hlo_Coeffs ()
#87 0x0000000000cb9722 in HLO_Convert_Scalar ()
#88 0x0000000000cba473 in hlo_Map_Recursive ()
#89 0x0000000000cba347 in hlo_Map_Recursive ()
#90 0x0000000000cba347 in hlo_Map_Recursive ()
#91 0x0000000000cba347 in hlo_Map_Recursive ()
#92 0x0000000000cb8aa0 in HLO_Map_Symbolics ()
#93 0x0000000000ca5690 in HLO_Driver ()
---Type to continue, or q to quit---
#94 0x0000000000ca3d57 in HLO_Proton_Meta_Driver ()
#95 0x00000000008422a2 in PHASE2_CSI_Part2 ()
#96 0x00000000008478c9 in PHASE2_Routine_End ()
#97 0x0000000000fe4c54 in IPO_Compile_Routine ()
#98 0x0000000000fece45 in IPO_Layout_Driver ()
#99 0x0000000000fe7e5f in ipo_Routine_Driver ()
#100 0x0000000000fe932e in IPO_Phase2_Begin ()
#101 0x0000000000848f86 in PHASE2_IPO_Begin ()
#102 0x0000000000452941 in main ()

AttachmentSize
Download md4.cpp4.8 KB
6 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Quoting - Anthony Heading

icpc -c md4.cpp

This is on 64-bit Linux (Debian)

For me, on openSuSE 10.3 x86_64, the 11.x icpc compilers, and g++, agree that failure to declare memcmp, memcpy, and memset in the scopes where they are used constitutes a fatal error. Is your compiler error message file readable?

Quoting - tim18

For me, on openSuSE 10.3 x86_64, the 11.x icpc compilers, and g++, agree that failure to declare memcmp, memcpy, and memset in the scopes where they are used constitutes a fatal error. Is your compiler error message file readable?

Ah yeah -- collateral damage while stripping down the test case; interesting though that icpc for me isn't getting far enough to have noticed that.

Add the obvious #include at the top, and it compiles with g++

icpc still hangs though, with no diagnostics at all

A

Digging a bit more deeply over a morning cup of coffee, it looks like a problem with exponential compile time rather than a strictly infinite loop: commenting out all 48 calls to round1/round2/round3 in MD4::mix() lets the code compile. But leaving in the first of them:

N Time
=============
0 0.26s
1 0.26s
2 0.27s
3 0.28s
4 0.28s
5 0.29s
6 0.30s
7 0.35s
8 0.51s
9 1.43s
10 5.56s
11 24.24s
12 110.03s
13 493.72s

I could compile it in FC8 without any issue.

$ time icc -c md4.cpp

real 0m0.331s
user 0m0.282s
sys 0m0.049s

$ time gcc -c md4.cpp

real 0m0.173s
user 0m0.132s
sys 0m0.026s

$ uname -a
Linux maya8 2.6.23.1-42.fc8 #1 SMP Tue Oct 30 13:18:33 EDT 2007 x86_64 x86_64 x86_64 GNU/Linux

$ icc -V
Intel C Intel 64 Compiler Professional for applications running on Intel 64, Version 11.0 Build 20090131 Package ID: l_cproc_p_11.0.081
Copyright (C) 1985-2009 Intel Corporation. All rights reserved.

Quoting - Om Sachan (Intel)

I could compile it in FC8 without any issue.

Strange. Anyhow, the problem appears to be gone with 11.1.064

Login to leave a comment.