Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion .github/workflows/python.yml
Original file line number Diff line number Diff line change
Expand Up @@ -214,14 +214,18 @@ jobs:
uses: actions/setup-python@v6
with:
python-version: '3.11'
architecture: 'arm64'
cache: 'pip'

- name: Setup LLVM for Windows ARM64 (NOT WORKING/FIXME)
if: false # ${{ matrix.os == 'windows-11-arm' }}
uses: ./.github/windows_arm64_steps

- name: Build wheels
uses: pypa/cibuildwheel@v3.2.1
uses: pypa/cibuildwheel@v3.3.0
env:
CIBW_TEST_ENVIRONMENT: PYTHONUNBUFFERED=1
CIBW_PROJECT_REQUIRES_PYTHON: ${{ matrix.os == 'windows-11-arm' && '>=3.11' || '' }}
with:
package-dir: python
output-dir: wheelhouse
Expand Down
25 changes: 15 additions & 10 deletions c/hv.c
Original file line number Diff line number Diff line change
Expand Up @@ -360,14 +360,6 @@ hv_recursive(dlnode_t * restrict list, dimension_t dim, size_t c,
const double * restrict ref, double * restrict bound)
{
ASSUME(c > 1);
ASSUME(dim >= STOP_DIMENSION);
if (dim == STOP_DIMENSION) {
/*---------------------------------------
base case of dimension 4
--------------------------------------*/
return fpli_hv4d(list, c);
}
ASSUME(dim > STOP_DIMENSION);
/* ------------------------------------------------------
General case for dimensions higher than 4D
------------------------------------------------------ */
Expand Down Expand Up @@ -434,7 +426,13 @@ hv_recursive(dlnode_t * restrict list, dimension_t dim, size_t c,
DEBUG1(debug_counter[1]++);
hypera = p1_prev->area[d_stop];
} else {
hypera = hv_recursive(list, dim - 1, c, ref, bound);
ASSUME(dim - 1 >= STOP_DIMENSION);
if (dim - 1 == STOP_DIMENSION) {
// base case of dimension 4.
hypera = fpli_hv4d(list, c);
} else {
hypera = hv_recursive(list, dim - 1, c, ref, bound);
}
/* At this point, p1 is the point with the highest value in
dimension dim in the list: If it is dominated in dimension
dim-1, then it is also dominated in dimension dim. */
Expand Down Expand Up @@ -503,7 +501,14 @@ fpli_hv_ge5d(dlnode_t * restrict list, dimension_t dim, size_t c,
p1->vol[d_stop] = hyperv;
assert(p1->ignore == 0);
c++;
double hypera = hv_recursive(list, dim - 1, c, ref, bound);
double hypera;
ASSUME(dim - 1 >= STOP_DIMENSION);
if (dim - 1 == STOP_DIMENSION) {
// base case of dimension 4.
hypera = fpli_hv4d(list, c);
} else {
hypera = hv_recursive(list, dim - 1, c, ref, bound);
}
/* At this point, p1 is the point with the highest value in
dimension dim in the list: If it is dominated in dimension
dim-1, then it is also dominated in dimension dim. */
Expand Down
3 changes: 2 additions & 1 deletion c/hv4d_priv.h
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ update_links(dlnode_t * restrict list, dlnode_t * restrict newp)
_attr_optimize_finite_math
__attribute__((hot))
static bool
restart_base_setup_z_and_closest(dlnode_t * restrict list, dlnode_t * restrict newp)
restart_base_setup_z_and_closest(dlnode_t * list, dlnode_t * newp)
{
// FIXME: This is the most expensive function in the HV4D+ algorithm.
const double newx[] = { newp->x[0], newp->x[1], newp->x[2], newp->x[3] };
Expand Down Expand Up @@ -236,6 +236,7 @@ hv4dplusU(dlnode_t * list)
assert(new_v > 0);
volume += new_v;
add_to_z(newp);
assert((list+1)->next[0] == list->next[0]->next[0]);
update_links(list, newp);
}
// FIXME: It newp was dominated, can we accumulate the height and update
Expand Down
8 changes: 5 additions & 3 deletions python/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -102,17 +102,19 @@ package-dir = { "" = "src" }
py_limited_api = "cp310"

[tool.cibuildwheel]
build = [ "cp310-*", "cp311*-win_arm64" ]
skip = [
"*_ppc64le",
"*_s390x",
"*_i686", # Skip 32-bit builds
"cp314t-*", # Skip free-threaded builds
"*_i686", # Skip 32-bit builds
"cp314t-*", # Skip free-threaded builds
"cp310*-win_arm64", # Skip cp310 on Windows ARM64 (buggy packages)
]
build-verbosity = 2
# Will cause the wheel to be installed with these optional-dependencies
test-extras = [ "test" ]
test-command = [
"pytest --doctest-modules --doctest-continue-on-failure {package}/tests {package}/src/moocore/_moocore.py",
"pytest -vvv -s --doctest-modules --doctest-continue-on-failure {package}/tests {package}/src/moocore/_moocore.py",
]
#test-skip = "*-*linux_{aarch64,ppc64le,s390x}"

Expand Down
Loading