From a5330e41123879e6030084c5c0f0284a3ae33b1b Mon Sep 17 00:00:00 2001 From: Curve Date: Sun, 17 Mar 2024 01:14:38 +0100 Subject: [PATCH] fix(openmp): parallel for should use signed type --- include/viennaps/cellSet/csDenseCellSet.hpp | 4 ++-- include/viennaps/cellSet/csSegmentCells.hpp | 2 +- include/viennaps/cellSet/csTracing.hpp | 8 ++++---- include/viennaps/psMeanFreePath.hpp | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/include/viennaps/cellSet/csDenseCellSet.hpp b/include/viennaps/cellSet/csDenseCellSet.hpp index 093f91d6..f896a0a2 100644 --- a/include/viennaps/cellSet/csDenseCellSet.hpp +++ b/include/viennaps/cellSet/csDenseCellSet.hpp @@ -569,7 +569,7 @@ template class csDenseCellSet { } #pragma omp parallel for - for (unsigned cellIdx = 0; cellIdx < numCells; cellIdx++) { + for (int cellIdx = 0; cellIdx < numCells; cellIdx++) { auto coord = nodes[cells[cellIdx][0]]; for (int i = 0; i < D; i++) { coord[i] += gridDelta / 2.; @@ -669,7 +669,7 @@ template class csDenseCellSet { auto numMaterials = materialMap->size(); #pragma omp parallel for - for (size_t i = 0; i < matIds->size(); i++) { + for (ssize_t i = 0; i < matIds->size(); i++) { int materialId = static_cast(matIds->at(i)); if (!cellSetAboveSurface) materialId--; diff --git a/include/viennaps/cellSet/csSegmentCells.hpp b/include/viennaps/cellSet/csSegmentCells.hpp index 7ed1b616..2f4c48bf 100644 --- a/include/viennaps/cellSet/csSegmentCells.hpp +++ b/include/viennaps/cellSet/csSegmentCells.hpp @@ -37,7 +37,7 @@ template class csSegmentCells { auto materials = cellSet->getScalarData("Material"); #pragma omp parallel for - for (unsigned i = 0; i < materials->size(); ++i) { + for (int i = 0; i < materials->size(); ++i) { if (!psMaterialMap::isMaterial(materials->at(i), bulkMaterial)) { auto neighbors = cellSet->getNeighbors(i); for (auto n : neighbors) { diff --git a/include/viennaps/cellSet/csTracing.hpp b/include/viennaps/cellSet/csTracing.hpp index ba9db410..46d788f0 100644 --- a/include/viennaps/cellSet/csTracing.hpp +++ b/include/viennaps/cellSet/csTracing.hpp @@ -140,7 +140,7 @@ template class csTracing { std::vector average(data->size(), 0.); #pragma omp parallel for - for (size_t i = 0; i < data->size(); i++) { + for (ssize_t i = 0; i < data->size(); i++) { if (data->at(i) < 0) { average[i] = -1.; continue; @@ -177,7 +177,7 @@ template class csTracing { } #pragma omp parallel for - for (size_t i = 0; i < data->size(); i++) { + for (ssize_t i = 0; i < data->size(); i++) { data->at(i) = average[i]; } } @@ -190,7 +190,7 @@ template class csTracing { std::vector average(data->size(), 0.); #pragma omp parallel for - for (size_t i = 0; i < data->size(); i++) { + for (ssize_t i = 0; i < data->size(); i++) { if (materialIds->at(i) != materialId) continue; @@ -220,7 +220,7 @@ template class csTracing { } #pragma omp parallel for - for (size_t i = 0; i < data->size(); i++) { + for (ssize_t i = 0; i < data->size(); i++) { data->at(i) = average[i]; } } diff --git a/include/viennaps/psMeanFreePath.hpp b/include/viennaps/psMeanFreePath.hpp index 272a2c0c..8c29683c 100644 --- a/include/viennaps/psMeanFreePath.hpp +++ b/include/viennaps/psMeanFreePath.hpp @@ -185,7 +185,7 @@ template class psMeanFreePath { std::vector result(numCells, 0); for (const auto &data : threadLocalData) { #pragma omp parallel for - for (unsigned i = 0; i < numCells; ++i) { + for (int i = 0; i < numCells; ++i) { result[i] += data[i]; } } @@ -194,14 +194,14 @@ template class psMeanFreePath { std::vector hitCounts(numCells, 0); for (const auto &data : threadLocalHitCount) { #pragma omp parallel for - for (unsigned i = 0; i < numCells; ++i) { + for (int i = 0; i < numCells; ++i) { hitCounts[i] += data[i]; } } // normalize data #pragma omp parallel for - for (unsigned i = 0; i < numCells; ++i) { + for (int i = 0; i < numCells; ++i) { if (hitCounts[i] > 0) result[i] = result[i] / hitCounts[i]; else @@ -212,7 +212,7 @@ template class psMeanFreePath { auto finalResult = cellSet->addScalarData("MeanFreePath"); materialIds = cellSet->getScalarData("Material"); #pragma omp parallel for - for (unsigned i = 0; i < numCells; i++) { + for (int i = 0; i < numCells; i++) { if (!psMaterialMap::isMaterial(materialIds->at(i), material)) continue;