Skip to main content

Karlsruhe High Quality Graph Partitioning Framework

Project description

KaHIP v3.24 License: MIT C++ CMake Build Codacy Badge GitHub Release PyPI version Homebrew Linux macOS GitHub Stars GitHub Issues Last Commit arXiv arXiv arXiv arXiv arXiv arXiv arXiv arXiv Agent-Ready Heidelberg University

KaHIP Logo

The graph partitioning framework KaHIP -- High Quality Partitioning. Part of the KaHIP organization.

The graph partitioning problem asks for a division of a graph's node set into k equally sized blocks such that the number of edges that run between the blocks is minimized. KaHIP is a family of graph partitioning programs. It includes KaFFPa (Karlsruhe Fast Flow Partitioner), which is a multilevel graph partitioning algorithm, in its variants Strong, Eco and Fast, KaFFPaE (KaFFPaEvolutionary), which is a parallel evolutionary algorithm that uses KaFFPa to provide combine and mutation operations, as well as KaBaPE which extends the evolutionary algorithm. Moreover, specialized techniques are included to partition road networks (Buffoon), to output a vertex separator from a given partition as well as techniques geared towards the efficient partitioning of social networks. Here is an overview of our framework:

framework overview

NEW in v3.24:

64-bit Edge Support: The C interface now supports 64-bit edges via a compile-time kahip_idx typedef. Compile with -D64BITMODE=On to enable int64_t for all edge-related arrays and values (xadj, adjncy, adjcwgt, edgecut). Node-related parameters remain int.

NEW in v3.23:

Homebrew Support: KaHIP can now be installed via Homebrew on macOS and Linux using

brew install KaHIP/kahip/kahip

NEW in v3.21:

KaFFPa can now be used with pip. Simply run

pip install kahip

and use the example Python code below.

NEW in v3.14:

Support for Python: KaHIP can now also be used in Python. See below how to do that.

Hierarchical Partitionings: KaHIP can compute hierarchial partitionings. All you have to do is specify the hierarchy and KaHIP is ready to go and does the multisection as you specified.

Node Ordering Algorithms: Many applications rely on time-intensive matrix operations, such as factorization, which can be sped up significantly for large sparse matrices by interpreting the matrix as a sparse graph and computing a node ordering that minimizes the so-called fill-in. Here, we added new algorithms to compute fill-in reduced orderings in graphs.

ILPs For Even Higher Quality: ILPs typically don't scale to large instances. We adapt them to heuristically improve a given partition. We do so by defining a much smaller model that allows us to use symmetry breaking and other techniques that make the approach scalable. We include ILPs that can be used as a post-processing step to improve high-quality partitions even further. The codes are now included in KaHIP.

TCMalloc: we added the possibility to link against TCMalloc. Depending on your system, this can yield an overall faster algorithm since it provides faster malloc operations.

Faster IO: we added an option to kaffpa (option --mmap_io) that speedsup the IO of text files significantly -- sometimes by an order of magnitude.

Added Support for Vertex and Edge Weights in ParHIP: we extended the IO functionality of ParHIP to read weighted graphs in the METIS format.

Global Multisection Mapping: we added global multisection n-to-1 process mapping algorithms. This computes better process mapping for parallel applications if information about the system hierarchy/architecture is known.

Determinism in ParHIP: we added an option to run ParHIP deterministically, i.e. two runs of ParHIP using the same seed will always return the same result.

Version Flag: we added an option to output the version that you are currently using, use the --version option of the programs.

NEW in v2.10:

ParHIP (Parallel High Quality Partitioning): Our distributed memory parallel partitioning techniques are designed to partition hierarchically structured networks such as web graphs or social networks.

Mapping Algorithms: Our new algorithms to map the blocks onto processors to minimize overall communication time based on hierarchical partitionings of the task graph and fast local search algorithms.

Edge Partitioning Algorithms: Our new algorithms to compute edge partitionings of graphs.

Main org site:

https://github.com/kahip/

Installation Notes

Install via Homebrew

brew install KaHIP/kahip/kahip

If open-mpi fails to build from source (non-standard Homebrew prefix), either install it separately first:

brew install open-mpi
brew install KaHIP/kahip/kahip

or set the compiler explicitly:

export HOMEBREW_CC=gcc-15
export HOMEBREW_CXX=g++-15
brew install KaHIP/kahip/kahip

Downloading KaHIP:

You can download KaHIP with the following command line:

git clone https://github.com/KaHIP/KaHIP

Compiling KaHIP:

Before you can start, you need to install the following software packages:

  • if you want to use parallel algorithms contained within the framework (e.g. ParHIP), you need OpenMPI (https://www.open-mpi.org/). If you don't want to run ParHIP, you can easily get rid of this dependency.

Once you installed the packages, just type

./compile_withcmake.sh 

In this case, all binaries, libraries and headers are in the folder ./deploy/

Note that this script detects the amount of available cores on your machine and uses all of them for the compilation process. If you don't want that, set the variable NCORES to the number of cores that you would like to use for compilation.

Alternatively use the standard cmake build process:

mkdir build
cd build 
cmake ../ -DCMAKE_BUILD_TYPE=Release     
make 
cd ..

In this case, the binaries, libraries and headers are in the folder ./build as well as ./build/parallel/parallel_src/

We also provide the option to link against TCMalloc. If you have it installed, run cmake with the additional option -DUSE_TCMALLOC=On.

By default node ordering programs are also compiled. If you have Metis installed, the build script also compiles a faster node ordering program that uses reductions before calling Metis ND. Note that Metis requires GKlib (https://github.com/KarypisLab/GKlib).

If you use the option -DUSE_ILP=On and you have Gurobi installed, the build script compiles the ILP programs to improve a given partition ilp_improve and an exact solver ilp_exact. Alternatively, you can also pass these options to ./compile_withmake.sh for example:

./compile_withcmake -DUSE_ILP=On

We also provide an option to support 64-bit edges. In order to use this, compile KaHIP with the option -D64BITMODE=On. When enabled, the C interface uses kahip_idx (typedef for int64_t) instead of int32_t for all edge-related arrays and values (xadj, adjncy, adjcwgt, edgecut, infinity_edge_weight). Node-related parameters (n, vwgt, nparts, part) remain int. No additional flags are needed; -D64BITMODE=On enables both the internal 64-bit edge types and the public kahip_idx typedef.

Lastly, we provide an option for determinism in ParHIP, e.g. two runs with the same seed will give you the same result. Note however that this option can reduce the quality of partitions, as initial partitioning algorithms do not use sophisticated memetic algorithms, but only multilevel algorithms to compute initial partitionings. ONLY use this option if you use ParHIP as a tool. Do not use this option if you want to make quality comparisons against ParHIP. To make use of this option, run

./compile_withcmake -DDETERMINISTIC_PARHIP=On

Running Programs

For a description of the graph format (and an extensive description of all other programs) please have a look into the manual. We give short examples here.

Overview of Programs and Usecase

Default Partitioning Problem

These programs and configurations take a graph and partition it more or less sequentially. We list here kaffpa and kaffpaE (the evolutionary framework) and their configurations. In general, the configurations are such that you can invest a lot of time into solution quality using the memetic algorithm. The memetic algorithm can also be run in parallel using MPI. In general, the more time and resources you invest, the better will be the quality of your partition. We have a lot of trade-offs, contact us if you are unsure what works best for your application. For a description of the algorithm have a look at the references that we list in the manual.

Use Case Input Programs
Graph Format graphchecker
Evaluate Partitions evaluator
Fast Partitioning Meshes kaffpa preconfiguration set to fast
Good Partitioning Meshes kaffpa preconfiguration set to eco
Very Good Partitioning Meshes kaffpa preconfiguration set to strong
Highest Quality Meshes kaffpaE, use mpirun, large time limit
Fast Partitioning Social kaffpa preconfiguration set to fsocial
Good Partitioning Social kaffpa preconfiguration set to esocial
Very Good Partitioning Social kaffpa preconfiguration set to ssocial
Highest Quality Social kaffpaE, use mpirun, large time limit, preconfiguration ssocial
Even Higher Quality kaffpaE, use mpirun, large time limit, use the options --mh_enable_tabu_search, --mh_enable_kabapE

Example Runs

./deploy/graphchecker ./examples/rgg_n_2_15_s0.graph 
./deploy/kaffpa ./examples/rgg_n_2_15_s0.graph --k 4  --preconfiguration=strong
mpirun -n 24 ./deploy/kaffpaE ./examples/rgg_n_2_15_s0.graph --k 4  --time_limit=3600 --mh_enable_tabu_search --mh_enable_kabapE 

Distributed Memory Parallel Partitioning

A large part of the project is distributed memory parallel algorithms designed for networks having a hierarchical cluster structure such as web graphs or social networks. Unfortunately, previous parallel graph partitioners originally developed for more regular mesh-like networks do not work well for complex networks. Here we address this problem by parallelizing and adapting the label propagation technique originally developed for graph clustering. By introducing size constraints, label propagation becomes applicable for both the coarsening and the refinement phase of multilevel graph partitioning. This way we exploit the hierarchical cluster structure present in many complex networks. We obtain very high quality by applying a highly parallel evolutionary algorithm to the coarsest graph. The resulting system is both more scalable and achieves higher quality than state-of-the-art systems like ParMetis or PT-Scotch.

Our distributed memory parallel algorithm can read binary files as well as standard Metis graph format files. Binary files are, in general, much more scalable than reading text files in parallel applications. The way to go here is to convert the Metis file into a binary file first (ending .bgf) and then load this one.

Use Case Programs
Parallel Partitioning parhip, graph2binary, graph2binary_external, toolbox
Distributed Memory Parallel, Mesh parhip with preconfigs ecomesh, fastmesh, ultrafastmesh
Distributed Memory Parallel, Social parhip with preconfigs ecosocial, fastsocial, ultrafastsocial
Convert Metis to Binary graph2binary, graph2binary_external
Evaluate and Convert Partitions toolbox

Example Runs

./deploy/graph2binary examples/rgg_n_2_15_s0.graph examples/rgg_n_2_15_s0.bgf
mpirun -n 24 ./deploy/parhip ./examples/rgg_n_2_15_s0.graph --k 4 --preconfiguration=fastmesh
mpirun -n 24 ./deploy/parhip ./examples/rgg_n_2_15_s0.bgf --k 4 --preconfiguration=fastmesh

Node Separators

The node separator problem asks to partition the node set of a graph into three sets A, B and S such that the removal of S disconnects A and B. We use flow-based and localized local search algorithms within a multilevel framework to compute node separators. KaHIP can also compute node separators. It can do so with a standard node separator (2-way), but it can also compute k-way node separators.

Use Case Programs
2-Way Separators node_separator
KWay Separators use kaffpa to create k-partition, then partition_to_vertex_separator to create a separator

Example Runs

./deploy/node_separator examples/rgg_n_2_15_s0.graph

Node Ordering

Applications such as factorization can be sped up significantly for large sparse matrices by interpreting the matrix as a sparse graph and computing a node ordering that minimizes the so-called fill-in. By applying both new and existing data reduction rules exhaustively before nested dissection, we obtain improved quality and at the same time large improvements in running time on a variety of instances. If METIS is installed, the build script also compiles the fast_node_ordering program, which runs reductions before running Metis to compute an ordering. The programs are also available through the library.

Use Case Programs
Node Ordering node_ordering (with different preconfigurations)
Fast Node Ordering fast_node_ordering

Example Runs

./deploy/node_ordering examples/rgg_n_2_15_s0.graph
./deploy/fast_node_ordering examples/rgg_n_2_15_s0.graph

Edge Partitioning

Edge-centric distributed computations have appeared as a recent technique to improve the shortcomings of think- like-a-vertex algorithms on large scale-free networks. In order to increase parallelism on this model, edge partitioning -- partitioning edges into roughly equally sized blocks -- has emerged as an alternative to traditional (node-based) graph partitioning. We include a fast parallel and sequential split-and-connect graph construction algorithm that yields high-quality edge partitions in a scalable way. Our technique scales to networks with billions of edges, and runs efficiently on thousands of PEs.

Use Case Programs
Edge Partitioning edge_partitioning, distributed_edge_partitioning

Example Runs

./deploy/edge_partitioning ./examples/rgg_n_2_15_s0.graph --k 4 --preconfiguration=fast
mpirun -n 4 ./deploy/distributed_edge_partitioning ./examples/rgg_n_2_15_s0.bgf --k 4 --preconfiguration=fastsocial 

Process Mapping

Communication and topology aware process mapping is a powerful approach to reduce communication time in parallel applications with known communication patterns on large, distributed memory systems. We address the problem as a quadratic assignment problem (QAP), and include algorithms to construct initial mappings of processes to processors as well as fast local search algorithms to further improve the mappings. By exploiting assumptions that typically hold for applications and modern supercomputer systems such as sparse communication patterns and hierarchically organized communication systems, we arrive at significantly more powerful algorithms for these special QAPs. Our multilevel construction algorithms employ perfectly balanced graph partitioning techniques and excessively exploit the given communication system hierarchy. Since v3.0 we included global multisection algorithms that directly partition the input network along the specified hierarchy to obtain an n-to-1 mapping and afterwards call 1-to-1 mapping algorithms to even further improve the mapping.

Use Case Programs
Mapping to Processor Networks kaffpa, and use enable_mapping option with resp. perconfigurations
Global Multisection global_multisection with resp. perconfigurations

Example Runs

./deploy/kaffpa examples/rgg_n_2_15_s0.graph --k 256 --preconfiguration=eco --enable_mapping --hierarchy_parameter_string=4:8:8 --distance_parameter_string=1:10:100
./deploy/global_multisection examples/rgg_n_2_15_s0.graph --preconfiguration=eco  --hierarchy_parameter_string=4:3:3:3 --distance_parameter_string=1:10:100:200

ILP (Exact Solver) and ILP Improvements

We provide an ILP as well as an ILP to improve a given partition. We extend the neighborhood of the combination problem for multiple local searches by employing integer linear programming. This enables us to find even more complex combinations and hence to further improve solutions. However, out of the box those the ILPs for the problem typically do not scale to large inputs, in particular because the graph partitioning problem has a very large amount of symmetry -- given a partition of the graph, each permutation of the block IDs gives a solution having the same objective and balance. We define a much smaller graph, called model, and solve the graph partitioning problem on the model to optimality by the integer linear program. Besides other things, this model enables us to use symmetry breaking, which allows us to scale to much larger inputs. In order to compile these programs you need to run cmake in the build process above as cmake ../ -DCMAKE_BUILD_TYPE=Release -DUSE_ILP=On or run ./compile_withcmake -DUSE_ILP=On.

Use Case Programs
Exact Solver ilp_exact
Improvement via ILP ilp_improve

Example Runs

./deploy/ilp_improve ./examples/rgg_n_2_15_s0.graph --k 4 --input_partition=tmppartition4
./deploy/ilp_exact ./examples/example_weighted.graph  --k 3

Linking the KaHIP Library

KaHIP also offers libraries and interfaces to link the algorithms directly to your code. We explain the details of the interface in the manual. Below we list an example program that links the kahip library. This example can also be found in misc/example_library_call/.

#include <iostream>
#include <sstream>

#include "kaHIP_interface.h"


int main(int argn, char **argv) {

        std::cout <<  "partitioning graph from the manual"  << std::endl;

        int n              = 5;
        kahip_idx* xadj    = new kahip_idx[6];
        xadj[0] = 0; xadj[1] = 2; xadj[2] = 5; xadj[3] = 7; xadj[4] = 9; xadj[5] = 12;

        kahip_idx* adjncy  = new kahip_idx[12];
        adjncy[0]  = 1; adjncy[1]  = 4; adjncy[2]  = 0; adjncy[3]  = 2; adjncy[4]  = 4; adjncy[5]  = 1;
        adjncy[6]  = 3; adjncy[7]  = 2; adjncy[8]  = 4; adjncy[9]  = 0; adjncy[10] = 1; adjncy[11] = 3;

        double imbalance   = 0.03;
        int* part          = new int[n];
        kahip_idx edge_cut = 0;
        int nparts         = 2;
        int* vwgt          = NULL;
        kahip_idx* adjcwgt = NULL;

        kaffpa(&n, vwgt, xadj, adjcwgt, adjncy, &nparts, &imbalance, false, 0, ECO, &edge_cut, part);

        std::cout <<  "edge cut " <<  edge_cut  << std::endl;
}

Using KaHIP in Python

KaHIP can also be used in Python. The easiest way is to install it using pip:

pip install kahip

Alterantively, if you want to use latest commit in Python first run

python3 -m pip install pybind11

Then run

./compile_withcmake.sh BUILDPYTHONMODULE

to build the Python model. This will build the Python module and also put an example callkahipfrompython.py into the deploy folder. You can run this by typing the following in the deploy folder:

python3 callkahipfrompython.py 

Note that we only provide preliminary support, i.e. you may need to change some paths to Python inside the compile_withcmake file. An example can also be found below:

import kahip

#build adjacency array representation of the graph
xadj           = [0,2,5,7,9,12]
adjncy         = [1,4,0,2,4,1,3,2,4,0,1,3]
vwgt           = [1,1,1,1,1]
adjcwgt        = [1,1,1,1,1,1,1,1,1,1,1,1]
supress_output = 0
imbalance      = 0.03
nblocks        = 2 
seed           = 0

# set mode 
#const int FAST           = 0;
#const int ECO            = 1;
#const int STRONG         = 2;
#const int FASTSOCIAL     = 3;
#const int ECOSOCIAL      = 4;
#const int STRONGSOCIAL   = 5;
mode = 0 

edgecut, blocks = kahip.kaffpa(vwgt, xadj, adjcwgt, 
                              adjncy,  nblocks, imbalance, 
                              supress_output, seed, mode)

print(edgecut)
print(blocks)

Alternatively, you can use the kahip_graph class to construct graphs programmatically:

import kahip

# Create graph using kahip_graph class
g = kahip.kahip_graph()
g.set_num_nodes(5)
g.add_undirected_edge(0, 1, 2)
g.add_undirected_edge(1, 2, 1)
g.add_undirected_edge(2, 3, 3)
g.add_undirected_edge(3, 4, 1)
g.set_weight(0, 2)  # Set node weight

# Convert to CSR format and partition
vwgt, xadj, adjcwgt, adjncy = g.get_csr_arrays()
edgecut, blocks = kahip.kaffpa(vwgt, xadj, adjcwgt, adjncy, 2, 0.03, 0, 0, 0)

print(f"Edgecut: {edgecut}")
print(f"Blocks: {blocks}")

Licence

The program is licenced under MIT licence. If you publish results using our algorithms, please acknowledge our work by quoting the following paper:

@inproceedings{sandersschulz2013,
             AUTHOR = {Sanders, Peter and Schulz, Christian},
             TITLE = {{Think Locally, Act Globally: Highly Balanced Graph Partitioning}},
             BOOKTITLE = {Proceedings of the 12th International Symposium on Experimental Algorithms (SEA'13)},
             SERIES = {LNCS},
             PUBLISHER = {Springer},
             YEAR = {2013},
             VOLUME = {7933},
             PAGES = {164--175}
}

If you use our parallel partitioner ParHIP please also cite the following paper:

@inproceedings{meyerhenkesandersschulz2017,
             AUTHOR = {Meyerhenke, Henning and Sanders, Peter and Schulz, Christian},
             TITLE = {{Parallel Graph Partitioning for Complex Networks}},
             JOURNAL = {IEEE Transactions on Parallel and Distributed Systems (TPDS)},
             VOLUME = {28},
             NUMBER = {9},
             PAGES = {2625--2638},
             YEAR = {2017}
}

If you use mapping algorithm please also cite the following paper:

@article{vonkirchbachschulztraeff2020,
             AUTHOR = {von Kirchbach, Konrad and Schulz, Christian and Tr{\"{a}}ff, Jesper Larsson},
             TITLE = {{Better Process Mapping and Sparse Quadratic Assignment}},
             JOURNAL = {ACM Journal of Experimental Algorithmics},
             VOLUME = {25},
             PAGES = {1--37},
             YEAR = {2020},
             DOI = {10.1145/3409667}
}

If you use global multisection mapping please also cite the following paper:

@inproceedings{fonsecafaraj2020mapping,
             AUTHOR = {Fonseca Faraj, Marcelo and van der Grinten, Alexander and Meyerhenke, Henning and Tr{\"{a}}ff, Jesper Larsson and Schulz, Christian},
             TITLE = {{High-Quality Hierarchical Process Mapping}},
             BOOKTITLE = {Proceedings of the 18th International Symposium on Experimental Algorithms (SEA'20)},
             SERIES = {LIPIcs},
             VOLUME = {160},
             PAGES = {4:1--4:15},
             YEAR = {2020},
             DOI = {10.4230/LIPIcs.SEA.2020.4}
}

If you use shared-memory parallel partitioning (mt-KaHIP) please also cite the following paper:

@article{akhremtsevsandersschulz2020,
             AUTHOR = {Akhremtsev, Yaroslav and Sanders, Peter and Schulz, Christian},
             TITLE = {{High-Quality Shared-Memory Graph Partitioning}},
             JOURNAL = {IEEE Transactions on Parallel and Distributed Systems},
             VOLUME = {31},
             NUMBER = {11},
             PAGES = {2710--2722},
             YEAR = {2020},
             DOI = {10.1109/TPDS.2020.3001645}
}

If you use edge partitioning algorithms please also cite the following paper:

@inproceedings{edgepartitioning2019,
             AUTHOR = {Schlag, Sebastian and Schulz, Christian and Seemaier, Daniel and Strash, Darren},
             TITLE = {{Scalable Edge Partitioning}},
             BOOKTITLE = {Proceedings of the 21th Workshop on Algorithm Engineering and Experimentation (ALENEX)},
             PUBLISHER = {SIAM},
             PAGES = {211--225},
             YEAR = {2019}
}

If you use node ordering algorithms please also cite the following paper:

@inproceedings{ostschulzstrash2021,
  author    = {Wolfgang Ost and Christian Schulz and Darren Strash},
  title     = {Engineering Data Reduction for Nested Dissection},
  booktitle = {Proceedings of the 19th Workshop on Algorithm Engineering and Experimentation (ALENEX'21)},
  pages     = {113--126},
  publisher = {SIAM},
  year      = {2021},
  doi       = {10.1137/1.9781611976472.9}
}

If you use ILP algorithms to improve a partition please also cite the following paper:

@article{henzingernoeschulz2020,
  author    = {Alexandra Henzinger and Alexander Noe and Christian Schulz},
  title     = {ILP-based Local Search for Graph Partitioning},
  journal   = {ACM Journal of Experimental Algorithmics},
  volume    = {25},
  pages     = {1--26},
  year      = {2020},
  doi       = {10.1145/3398634}
}

Project Contributors (sorted by last name)

Yaroslav Akhremtsev

Adil Chhabra

Marcelo Fonseca Faraj

Roland Glantz

Alexandra Henzinger

Dennis Luxen

Henning Meyerhenke

Alexander Noe

Mark Olesen

Lara Ost

Ilya Safro

Peter Sanders

Hayk Sargsyan

Sebastian Schlag

Christian Schulz (maintainer)

Daniel Seemaier

Darren Strash

Alexander Svozil

Jesper Larsson Träff

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kahip-3.24.tar.gz (2.4 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

kahip-3.24-cp314-cp314-win_amd64.whl (3.6 MB view details)

Uploaded CPython 3.14Windows x86-64

kahip-3.24-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

kahip-3.24-cp314-cp314-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

kahip-3.24-cp313-cp313-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.13Windows x86-64

kahip-3.24-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

kahip-3.24-cp313-cp313-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

kahip-3.24-cp312-cp312-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.12Windows x86-64

kahip-3.24-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

kahip-3.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

kahip-3.24-cp312-cp312-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

kahip-3.24-cp311-cp311-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.11Windows x86-64

kahip-3.24-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

kahip-3.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

kahip-3.24-cp311-cp311-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

kahip-3.24-cp310-cp310-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.10Windows x86-64

kahip-3.24-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

kahip-3.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

kahip-3.24-cp310-cp310-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

kahip-3.24-cp39-cp39-win_amd64.whl (3.5 MB view details)

Uploaded CPython 3.9Windows x86-64

kahip-3.24-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (9.1 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

kahip-3.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

kahip-3.24-cp39-cp39-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

kahip-3.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (8.5 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

kahip-3.24-cp38-cp38-macosx_11_0_arm64.whl (3.9 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

File details

Details for the file kahip-3.24.tar.gz.

File metadata

  • Download URL: kahip-3.24.tar.gz
  • Upload date:
  • Size: 2.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kahip-3.24.tar.gz
Algorithm Hash digest
SHA256 1b832469a9d05f2dbbccab8157587c34f9bb3e17e1dc25b5717bfe832ce1d39f
MD5 1cd1b1cbd593232cd7f0fd4d35e11580
BLAKE2b-256 3517dc772fe0bfff589adfdedb46fbdc08cd59062df548ce139b8cd7e7d01010

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: kahip-3.24-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.6 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kahip-3.24-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f41fd66166167274b3dd1c618b5ed7bf7ddc2062c1ea5b115903289f1b568973
MD5 6ccccf007898b67b93f707483831f126
BLAKE2b-256 b3de3c92bc98f9175425ce7f228951ef710fc9baf1d9ee998b00c8b70c388f71

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b736f6302db2e8bf2ee08c95150a3f2fa1f25a081e391ab39acb8257384e83f8
MD5 874dc6ef47e758f09eea4c487e3c1451
BLAKE2b-256 afc2bc2f5bda93d5e70429e026efc03f92a9214fbe0f35ca8bb84a334f4bccb9

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 56168c58bb67960a2b1bb3912dd200aaed15d38066795c7972eb4d8aee5686e4
MD5 d5644f6f391bab0b2b078af45270e3bb
BLAKE2b-256 56b3e0280581e0806478b0e176091c1f869e867c6fbe85079e9efe16ab48f051

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: kahip-3.24-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kahip-3.24-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 bbbdf540294a09b5be0d67706daed30ff82f9fee208dc1a54d8cf5ee2bd3cfde
MD5 1345fa43851f71f555a20ddb33ebf281
BLAKE2b-256 bd5c518541398b26ce298c3d612526ecd832e407e90e6c5da49f1d03ad667990

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 6d47e5f45821391cc95a6fd72c70b67dc4690db01ce65b61a9cb221ca8fedbea
MD5 a09d1a0483731de5d2567737224cc9a9
BLAKE2b-256 4dbaeff4183ba88353f18ad0a742cdefbfa683ecaca93732a4056e3fa4801f27

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 916aa7ae6ce5ef073f523d9af2b031b0cd2c8263879008b91d7c7cfafb2a160f
MD5 e67abc55876d0cedbe1a92af6af6f52f
BLAKE2b-256 b3f64d6b4b5acf8fe12d751975d69d1a23acce7817e327d463002b5a06be45c5

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: kahip-3.24-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kahip-3.24-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 2358d93bde2b1fbf3f331e1618291527f7070acda02d61c42b7a489969d83293
MD5 e7adb99e4cf07d3b5df3f4575dacacfa
BLAKE2b-256 dc25348227eee8b36a2a515432ccd6f166fc4ded231136cf47d55e5bce68bb6e

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 ec0fb7af9b5a0b70eb485db97f0c986dbddfdc6a7d121c975a861e7390529eb8
MD5 45c1082c8b9c9d262fe2c5f015720a5f
BLAKE2b-256 0c46a71975298f05e66f55e53c3b9e484e0c5107a5a5ed9d82acd039d6942c22

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 950d9cdc36bacf7fa48d1de1ce32fe14658f371cc3eebaa3cafeb581567dfc37
MD5 a147bfe0cc3f15c654fcb78dae6a887d
BLAKE2b-256 883fadd118a37e56863ebf1ebb4b3d86615699d38325dd17ad7f28ec505a4984

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c3abfeb734e89ead5f0e853d7d479a504b66ac44ba6abe371f8be2f1a1ed7484
MD5 b08b454ccdeca1ec5a15056ac44c7812
BLAKE2b-256 bd2593665d8a3ddcf806c6bdc023913052f83058943daead29ba6b6de3cf8feb

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: kahip-3.24-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kahip-3.24-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 d31007085c85651008472aaf546cbaf1495d9f2aa862f9a806baf5ad65195e0e
MD5 8fb749fd53916ffbef91813c88115269
BLAKE2b-256 9e8986411ab2ceaa8e91a7d3cef95c7127ec9ee29a2a6536acf6e858eda4c79a

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a695188af50b230fa9639d738b612ddd7c415ebd4b81f54ad7769249bfabc84d
MD5 2d1d4746111140cc09c9bd3fc749ac36
BLAKE2b-256 3d30897cc917f0c5cde99a0750cf7059416134fed9dbfc957fce10bb2722e2b4

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9faf4bc1aa66a957385a7071a35313e9cf6ce91042fdf364f35582157fa3e482
MD5 f095c0de1a496580c98c5511e9f66562
BLAKE2b-256 d632c906788cb18e8cf96f80ee9fd7985172b011ea99e9c5fc4cf2058e2dbf3a

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 490b744067f662b5e58e09b7ce32ff84aa3571092fc12ef8c0b844f7db33d54d
MD5 1e997cc03c9477e2ea3c3b6f8d1d2e54
BLAKE2b-256 df21fc3569000ffb9d218ed37c15d7d1460c85d3062e06a68d089aff8bbba27c

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: kahip-3.24-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kahip-3.24-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 598707c9f6cd250ed59fb4ad132ce6adcb20206c5b166b55b035d46eb0576bf0
MD5 d9587f73251b6d0f23dc7a0929472cca
BLAKE2b-256 c9952d6500fd73d85d67fdb0abbef7738f5a3ed83010065c6580ca74b9225753

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 daea6592d923115cb5111b5bc37ebcf4b682c83a2a0e35893e6d6af9215a2ce2
MD5 9003dcb8b05bc2582c976f9a2cde2648
BLAKE2b-256 b7aaad930e6a3dfea7645c07a28aeeb7fdfca59f2944268d3ce2a6e8b06f5397

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 17d10e335a8fe7d330e7d18869c59a8b8892e91f588a4137122aae5695c4556e
MD5 32507dc21a207bb21af27b1ffc32215b
BLAKE2b-256 f80420e1753fd59856babf23f8135268d9e458257449017be48102da6ede1f19

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff756fc603c9536a1f4a118b81edf0985218af1a0537b0b134340ee0d4594d6f
MD5 29ac592ec61924c72ca451977317af17
BLAKE2b-256 29614da81c4d46e654cc14590909542c988e7835c92e879a9a4995f4c91ca952

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: kahip-3.24-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kahip-3.24-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 03ee33d79d0e4c9d0b6b65bb0f7d5d3d8aa140b825820a95d4337b5d8aa140c4
MD5 73d8419e401c1fa6f1506d1d7b6f77a0
BLAKE2b-256 3ab3aae555b23a56db54f2b327c2518bb4acb48892317e8be193e3d61f4859bc

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b13ce77a324ecfa631974de6c4239923232e1c433b62f1b032ea252402154b95
MD5 51489f62dcfab9900649e4235c944145
BLAKE2b-256 3367257be4e150aacd8a5a76f9add9d08ff6a0e6a6c61cfa9256ba5815ea466f

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3138a40820dd7a2d78018644e2565a460780cfa19cb90254ce09d15bf1b60cf9
MD5 66e768f2f4518f5c83181d3d03c7c7d8
BLAKE2b-256 1885808fa8e7f9410586e61b9fa4f50c6149353f1c21e95306ebaf5c124f1c90

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: kahip-3.24-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kahip-3.24-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6b3deae6f469f2d9be0bafbe74c03d5d428c2a5f1205f99862141ce728bff158
MD5 7524d09d0c14d70e5322fdf311d81915
BLAKE2b-256 7c834d05eccb329d6f623912bf6cfb8297fa43273cae8fcb3a320960f82b4664

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kahip-3.24-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 74b3928bc5efde1c710cd6f96ca36eb2b89666304ca1cc735104363880ee8998
MD5 c5525897f6e0ddadaa93f859f1971899
BLAKE2b-256 3f5b518fe57443c72a03742de46ffb4daaa2040edd63177c20c4e98a65ac9d65

See more details on using hashes here.

File details

Details for the file kahip-3.24-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: kahip-3.24-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.8, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for kahip-3.24-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 efaecf914c2fa641fc21b934d62bc23e2fed1fe3359516285bc9f1613bc6e276
MD5 3d2fcc1ff5b5fa7056f3275a97fcc915
BLAKE2b-256 a4e15cd94461e1e8f6a4cbbd5de1f2ae2b47d14e01b80175467df7a7a5375e32

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page