Skip to content

KaHIP v3.24

Choose a tag to compare

@schulzchristian schulzchristian released this 13 Mar 19:25
· 11 commits to master since this release

64-bit Edge Support

The C interface now supports 64-bit edges via a compile-time kahip_idx typedef (int64_t or int32_t). Compile with -D64BITMODE=On to enable.

Changes

  • All edge-related CSR arrays (xadj, adjncy, adjcwgt) and edge-valued outputs (edgecut, infinity_edge_weight) use kahip_idx in the public C interface
  • Internal EdgeID and EdgeWeight become signed int64_t in 64-bit mode
  • UNSAFE_metis_style methods return kahip_idx*
  • MPI broadcast uses conditional MPI_INT64_T/MPI_INT types
  • Node-related parameters (n, vwgt, nparts, part) remain int
  • Added kahip_sizeof_idx() to query index width at runtime (returns 4 or 8)

Windows Support

  • KaHIP now builds on Windows with MSVC (no MPI, library + interface only)
  • Added Windows CI workflow via GitHub Actions
  • Platform guards for POSIX-specific headers (regex.h, sys/mman.h, execinfo.h)
  • Windows pip wheels now available on PyPI (Python 3.9-3.14)

pkg-config Support

  • KaHIP and ParHIP are now discoverable via pkg-config (merged PR #134)

Build & CI

  • Updated cibuildwheel to v3.4.0, GitHub Actions to v5 with Node.js 24
  • Added Python 3.13 and 3.14 wheel builds, dropped EOL Python 3.8

Bug Fixes

  • Fixed type mismatch in tabu_moves_queue.h (declaration vs definition of minValue)
  • Fixed edge_evaluator.cpp using EdgeID instead of PartitionID for partition vectors
  • Fixed CMake target_compile_definitions syntax (merged PR #135)