저는 Maxwell의 방정식을 C++로 풀기위한 과학 프로그램을 작성하고 있습니다. 데이터 병렬로 작업하고 OpenMP를 사용하여 프로그램을 병렬 처리하려고합니다. 그러나 OpenMP를 사용하여 for 루프를 병렬로 병렬 처리하면됩니다. 코드를 실행하면 프로그램이 SIGABRT를 얻습니다. 나는 잘못 알았다. 도와주세요. 다음과 같이 루프OpenMP를 사용하여 for 루프를 병렬로 만들 때 내 프로그램이 SIGABRT를 수신하는 이유는 무엇입니까?
은 다음과 같습니다
#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);
}
}
컴파일러는 기본적으로 엑스 코드 4.2와 함께 LLVM-GCC입니다.
도와주세요.
혹시이 문제를 해결 했습니까? 사자, llvm-gcc 및 OpenMP와 같은 이상한 문제가 있습니다. – hanno