Skip to content

Commit 2b6bd72

Browse files
authored
Merge pull request #171 from easy-graph/fix/windows-openmp-wheel
Fix Windows OpenMP wheel build
2 parents 146edf0 + a3b5cea commit 2b6bd72

3 files changed

Lines changed: 11 additions & 8 deletions

File tree

.github/workflows/wheel_publish.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@ jobs:
4545
uses: pypa/cibuildwheel@v2.23.3
4646
with:
4747
output-dir: dist/
48-
merge-multiple: true
4948

5049
- name: Upload wheels
5150
uses: actions/upload-artifact@v4
@@ -74,4 +73,3 @@ jobs:
7473
password: ${{ secrets.PYPI_API_TOKEN }}
7574
skip-existing: true
7675

77-

cpp_easygraph/functions/community/louvain.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,10 +312,10 @@ double modularity_optimization_parallel_simplified(const Graph_L& G, vector<int>
312312
}
313313

314314
if (best_comm != old_comm) {
315-
#pragma omp atomic update
315+
#pragma omp atomic
316316
comm_weights[old_comm] -= weight_all;
317317

318-
#pragma omp atomic update
318+
#pragma omp atomic
319319
comm_weights[best_comm] += weight_all;
320320

321321
membership[u - 1] = best_comm;
@@ -541,4 +541,4 @@ py::object cpp_louvain_communities(py::object G, py::object weight, py::object t
541541
}
542542

543543
return final_result;
544-
}
544+
}

cpp_easygraph/functions/community/modularity.cpp

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
#include <unordered_map>
33
#include <unordered_set>
44
#include <string>
5+
#include <cstddef>
56
#ifdef _OPENMP
67
#include <omp.h>
78
#else
@@ -18,8 +19,10 @@ void addVectorsInPlace(std::vector<double>& v1, std::vector<double>& v2) {
1819
throw std::invalid_argument("Vectors must have the same size for element-wise addition.");
1920
}
2021

22+
const std::ptrdiff_t n = static_cast<std::ptrdiff_t>(v1.size());
23+
2124
#pragma omp parallel for
22-
for (size_t i = 0; i < v1.size(); ++i) {
25+
for (std::ptrdiff_t i = 0; i < n; ++i) {
2326
double sum = v1[i] + v2[i];
2427
v1[i] = sum;
2528
v2[i] = sum;
@@ -32,8 +35,10 @@ double dotProduct(const std::vector<double>& v1, const std::vector<double>& v2)
3235
}
3336

3437
double result = 0.0;
38+
const std::ptrdiff_t n = static_cast<std::ptrdiff_t>(v1.size());
39+
3540
#pragma omp parallel for reduction(+:result)
36-
for (size_t i = 0; i < v1.size(); ++i) {
41+
for (std::ptrdiff_t i = 0; i < n; ++i) {
3742
result += v1[i] * v2[i];
3843
}
3944
return result;
@@ -205,4 +210,4 @@ py::object cpp_modularity(py::object G, py::object communities, py::object weigh
205210
double Q = e - sum_products;
206211

207212
return py::float_(Q);
208-
}
213+
}

0 commit comments

Comments
 (0)