Я пишу научную программу для решения уравнения Максвелла с 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);
}
}
Компилятором является llvm-gcc, который поставляется с Xcode 4.2 по умолчанию.
Пожалуйста, помогите.