c++ - 当我使用 OpenMP 并行执行 for 循环时,为什么我的程序会收到 SIGABRT?

标签 c++ osx-lion openmp xcode4.2 llvm-gcc

我正在编写一个用 C++ 求解麦克斯韦方程的科学程序。数据并行任务,我想使用 OpenMP 使程序并行。但是当我使用 OpenMP 在函数中并行化 for 循环时。当我运行我的代码时,程序会收到 SIGABRT。我找不到出错的地方。请帮忙。

for循环如下:

#pragma omp parallel for

for (int i = 0; i < totalNoOfElementsInSecondMesh; i++) {

    FEMSecondMeshElement2D *secondMeshElement = (FEMSecondMeshElement2D *)mesh->secondMeshFEMElement(i);

    if (secondMeshElement->elementType == FEMDelectricElement) {

        if (solutionType == TE) 
            calculateEzFieldForDielectricElement(secondMeshElement, i, currentSecondMeshIndex, nextFirstMeshIndex);
        else
            calculateHzFieldForDielectricElement(secondMeshElement, i, currentSecondMeshIndex, nextFirstMeshIndex);

    } else if (secondMeshElement->elementType == FEMXPMLDielectricElement) {

        if (solutionType == TE) 
            calculateEzFieldForDielectricPMLElement((FEMPMLSecondMeshElement2D *)secondMeshElement, i, currentSecondMeshIndex, nextFirstMeshIndex);
        else
            calculateHzFieldForDielectricPMLElement((FEMPMLSecondMeshElement2D *)secondMeshElement, i, currentSecondMeshIndex, nextFirstMeshIndex);

    }

}

编译器是 Xcode 4.2 默认自带的 llvm-gcc。

请帮忙。

最佳答案

您可能在 Lion 上遇到了编译器问题。请参阅此链接:

https://plus.google.com/101546077160053841119/posts/9h35WKKqffL

您可以从该页面上的链接下载为 Lion 预编译的 gcc 4.7,这似乎工作正常。

关于c++ - 当我使用 OpenMP 并行执行 for 循环时,为什么我的程序会收到 SIGABRT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8094858/

相关文章:

python - pip 在 Mac OS X Lion 上安装 django 超时

c - OpenMP任务的任务调度点

c++ - 尝试使用 x86 asm SSSE3 将大端转换为小端

c++ - 如何从C++中两次继承的基类调用隐藏方法?

c++ 通过 GDB 而不是 xCode 接收段错误——需要帮助调试

javascript - 在 Safari 中禁用 flex 滚动

macos - OS X Lion 中具有自动保存和版本功能的 Shoebox/Library 应用程序

c - 如何在openmp嵌套for循环中实现break函数

c++ - OpenMP - 主指令中的并行区域

c++ - VS2015 : Error List doesn't get cleared on new build