英特尔编译器:错误“IL walk中的未知类型”是什么意思?

时间:2013-11-21 13:35:25

标签: c++ c++11 icc

我在我的项目中首次尝试使用英特尔编译器(icpc),该项目是使用GCC开发的。在几个源文件之后,它会遇到一个错误,这个错误并没有告诉我多少:

/export/home/i11pcmh235/intel/bin/icpc -o .buildO/distmeasures/AlgebraicDistance.o -c -std=c++11 -Wall -c -fmessage-length=0 -fPIC -fopenmp -O3 -DNDEBUG -I/home/i11/cls/workspace/gtest/include src/distmeasures/AlgebraicDistance.cpp
src/community/PLM.cpp(147): internal error: assertion failed: unknown type in IL walk (shared/cfe/edgcpfe/walk_entry.h, line 1015)

            });
             ^

compilation aborted for src/community/PLM.cpp (code 4)

有人可以向我解释一下吗?

我的编译器标志好吗?我只是尝试使用与GCC相同的那些。

有问题的代码段如下所示:

#pragma omp atomic read
                        C = zeta[u];

//                      TRACE("Processing neighborhood of node " << u << ", which is in cluster " << C);
                        G.forNeighborsOf(u, [&](node v) {
#pragma omp atomic read
                                D = zeta[v];
//                              TRACE("Neighbor " << v << ", which is still in cluster " << zeta[v]);
                                if (D != C) { // consider only nodes in other clusters (and implicitly only nodes other than u)
                                        double delta = deltaMod(u, C, D);
                                        if (delta > deltaBest) {
                                                deltaBest = delta;
                                                best = D;
                                        }
                                }
                        });

1 个答案:

答案 0 :(得分:4)

内部错误通常意味着您遇到了编译器错误。也就是说,bug存在于编译器中,而不是代码中。 IL是编译器 - 编写者,代表“中间语言”,编译器操作的内部表示,用于生成代码。

你必须看看英特尔是否已修复它,和/或提交错误报告。