Skip to main content

Python Interface for the Karlsruhe Hypergraph Partitioning Framework (KaHyPar)

Project description

KaHyPar - Karlsruhe Hypergraph Partitioning

License Fossa Zenodo
License: GPL v3 FOSSA Status DOI
Linux & macOS Build Code Coverage Code Quality Coverity Scan Issues
Build Status codecov Codacy Badge Coverity Status Average time to resolve an issue

Table of Contents

What is a Hypergraph? What is Hypergraph Partitioning?

Hypergraphs are a generalization of graphs, where each (hyper)edge (also called net) can connect more than two vertices. The k-way hypergraph partitioning problem is the generalization of the well-known graph partitioning problem: partition the vertex set into k disjoint blocks of bounded size (at most 1 + ε times the average block size), while minimizing an objective function defined on the nets.

The two most prominent objective functions are the cut-net and the connectivity (or λ − 1) metrics. Cut-net is a straightforward generalization of the edge-cut objective in graph partitioning (i.e., minimizing the sum of the weights of those nets that connect more than one block). The connectivity metric additionally takes into account the actual number λ of blocks connected by a net. By summing the (λ − 1)-values of all nets, one accurately models the total communication volume of parallel sparse matrix-vector multiplication and once more gets a metric that reverts to edge-cut for plain graphs.

alt textalt text

What is KaHyPar?

KaHyPar is a multilevel hypergraph partitioning framework for optimizing the cut- and the (λ − 1)-metric. It supports both recursive bisection and direct k-way partitioning. As a multilevel algorithm, it consist of three phases: In the coarsening phase, the hypergraph is coarsened to obtain a hierarchy of smaller hypergraphs. After applying an initial partitioning algorithm to the smallest hypergraph in the second phase, coarsening is undone and, at each level, a local search method is used to improve the partition induced by the coarser level. KaHyPar instantiates the multilevel approach in its most extreme version, removing only a single vertex in every level of the hierarchy. By using this very fine grained n-level approach combined with strong local search heuristics, it computes solutions of very high quality. Its algorithms and detailed experimental results are presented in several research publications.

Additional Features

  • Hypergraph partitioning with variable block weights

    KaHyPar has support for variable block weights. If command line option --use-individual-part-weights=true is used, the partitioner tries to partition the hypergraph such that each block Vx has a weight of at most Bx, where Bx can be specified for each block individually using the command line parameter --part-weights= B1 B2 B3 ... Bk-1. Since the framework does not yet support perfectly balanced partitioning, upper bounds need to be slightly larger than the total weight of all vertices of the hypergraph. Note that this feature is still experimental.

  • Hypergraph partitioning with fixed vertices

    Hypergraph partitioning with fixed vertices is a variation of standard hypergraph partitioning. In this problem, there is an additional constraint on the block assignment of some vertices, i.e., some vertices are preassigned to specific blocks prior to partitioning with the condition that, after partitioning the remaining “free” vertices, the fixed vertices are still in the block that they were assigned to. The command line parameter --fixed / -f can be used to specify a fix file in hMetis fix file format. For a hypergraph with V vertices, the fix file consists of V lines - one for each vertex. The ith line either contains -1 to indicate that the vertex is free to move or <part id> to indicate that this vertex should be preassigned to block <part id>. Note that part ids start from 0.

    KaHyPar currently supports three different contraction policies for partitioning with fixed vertices:

    1. free_vertex_only allows all contractions in which the contraction partner is a free vertex, i.e., it allows contractions of vertex pairs where either both vertices are free, or one vertex is fixed and the other vertex is free.
    2. fixed_vertex_allowed additionally allows contractions of two fixed vertices provided that both are preassigned to the same block. Based on preliminary experiments, this is currently the default policy.
    3. equivalent_vertices only allows contractions of vertex pairs that consist of either two free vertices or two fixed vertices preassigned to the same block.
  • Evolutionary framework (KaHyPar-E)

    KaHyPar-E enhances KaHyPar with an evolutionary framework as described in our GECCO'18 publication. Given a fairly large amount of running time, this memetic multilevel algorithm performs better than repeated executions of nonevolutionary KaHyPar configurations, hMetis, and PaToH. The command line parameter --time-limit=xxx can be used to set the maximum running time (in seconds). Parameter --partition-evolutionary=true enables evolutionary partitioning.

  • Improving existing partitions

    KaHyPar uses direct k-way V-cycles to try to improve an existing partition specified via parameter --part-file=</path/to/file>. The maximum number of V-cycles can be controlled via parameter --vcycles=.

  • Partitioning directed acyclic hypergraphs

    While the code has not been merged into the main repository yet, there exists a fork that supports acyclic hypergraph partitioning. More details can be found in the corresponding conference publication.

Experimental Results

We use the performance profiles to compare KaHyPar to other partitioning algorithms in terms of solution quality. For a set of algorithms and a benchmark set containing instances, the performance ratio relates the cut computed by partitioner p for instance i to the smallest minimum cut of all algorithms, i.e.,

.

The performance profile of algorithm p is then given by the function

.

For connectivity optimization, the performance ratios are computed using the connectivity values instead of the cut values. The value of corresponds to the fraction of instances for which partitioner p computed the best solution, while is the probability that a performance ratio is within a factor of of the best possible ratio. Note that since performance profiles only allow to assess the performance of each algorithm relative to the best algorithm, the values cannot be used to rank algorithms (i.e., to determine which algorithm is the second best etc.).

In our experimental analysis, the performance profile plots are based on the best solutions (i.e., minimum connectivity/cut) each algorithm found for each instance. Furthermore, we choose parameters for all p, i, and such that a performance ratio if and only if algorithm p computed an infeasible solution for instance i, and if and only if the algorithm could not compute a solution for instance i within the given time limit. In our performance profile plots, performance ratios corresponding to infeasible solutions will be shown on the x-tick on the x-axis, while instances that could not be partitioned within the time limit are shown implicitly by a line that exits the plot below . Since the performance ratios are heavily right-skewed, the performance profile plots are divided into three segments with different ranges for parameter to reflect various areas of interest. The first segment highlights small values (), while the second segment contains results for all instances that are up to a factor of worse than the best possible ratio. The last segment contains all remaining ratios, i.e., instances for which some algorithms performed considerably worse than the best algorithm, instances for which algorithms produced infeasible solutions, and instances which could not be partitioned within the given time limit.

In the figures, we compare KaHyPar with PaToH in quality (PaToH-Q) and default mode (PaToH-D), the k-way (hMETIS-K) and the recursive bisection variant (hMETIS-R) of hMETIS 2.0 (p1), Zoltan using algebraic distance-based coarsening (Zoltan-AlgD), Mondriaan v.4.2.1 and the recently published HYPE algorithm.

Solution Quality Solution Quality

Running Time Running Time

Additional Resources

We provide additional resources for all KaHyPar-related publications:

kKaHyPar-SEA20 /
rKaHyPar-SEA20
SEA'20 Paper TR Slides Experimental Results
kKaHyPar /
rKaHyPar
- Dissertation - Slides Experimental Results
KaHyPar-MF /
KaHyPar-R-MF
SEA'18 /
JEA'19
SEA Paper /
JEA Paper
TR Slides Experimental Results:
SEA / JEA
KaHyPar-E (EvoHGP) GECCO'18 Paper TR Slides Experimental Results
KaHyPar-CA SEA'17 Paper - Slides Experimental Results
KaHyPar-K ALENEX'17 Paper - Slides Experimental Results
KaHyPar-R ALENEX'16 Paper TR Slides Experimental Results

Projects using KaHyPar

Requirements

The Karlsruhe Hypergraph Partitioning Framework requires:

  • A 64-bit operating system. Linux, Mac OS X and Windows (through the Windows Subsystem for Linux) are currently supported.
  • A modern, C++14-ready compiler such as g++ version 9 or higher or clang version 11.0.3 or higher.
  • The cmake build system.
  • The Boost.Program_options library and the boost header files. If you don't want to install boost yourself, you can add the -DKAHYPAR_USE_MINIMAL_BOOST=ON flag to the cmake command to download, extract, and build the necessary dependencies automatically.

Building KaHyPar

  1. Clone the repository including submodules:

    git clone --recursive git@github.com:kahypar/kahypar.git

  2. Create a build directory: mkdir build && cd build

  3. Run cmake: cmake .. -DCMAKE_BUILD_TYPE=RELEASE

  4. Run make: make

Testing and Profiling

Tests are automatically executed while project is built. Additionally a test target is provided. End-to-end integration tests can be started with: make integration_tests. Profiling can be enabled via cmake flag: -DENABLE_PROFILE=ON.

Running KaHyPar

The standalone program can be built via make KaHyPar. The binary will be located at: build/kahypar/application/.

KaHyPar has several configuration parameters. For a list of all possible parameters please run: ./KaHyPar --help. We use the hMetis format for the input hypergraph file as well as the partition output file.

The command line parameter --quiet=1 can be used to suppress all logging output. If you are using the library interfaces, adding quiet=1 to the corresponding .ini configuration file has the same effect.

Default / Most Recent Presets

We provide two default framework configurations - one for recursive bipartitioning (rKaHyPar) and one for direct k-way partitioning (kKaHyPar).

In general, we recommend using kKaHyPar as it performs better than rKaHyPar in terms of both running time and solution quality.

To start kKaHyPar optimizing the (connectivity - 1) objective run:

./KaHyPar -h <path-to-hgr> -k <# blocks> -e <imbalance (e.g. 0.03)> -o km1 -m direct -p ../../../config/km1_kKaHyPar_sea20.ini

To start kKaHyPar optimizing the cut net objective run:

./KaHyPar -h <path-to-hgr> -k <# blocks> -e <imbalance (e.g. 0.03)> -o cut -m direct -p ../../../config/cut_kKaHyPar_sea20.ini

To start rKaHyPar optimizing the (connectivity - 1) objective run:

./KaHyPar -h <path-to-hgr> -k <# blocks> -e <imbalance (e.g. 0.03)> -o km1 -m recursive -p ../../../config/km1_rKaHyPar_sea20.ini

To start rKaHyPar optimizing the cut net objective run:

./KaHyPar -h <path-to-hgr> -k <# blocks> -e <imbalance (e.g. 0.03)> -o cut -m recursive -p ../../../config/cut_rKaHyPar_sea20.ini

To start the memetic algorithm kKaHyPar-E optimizing the (connectivity - 1) objective run:

./KaHyPar -h <path-to-hgr> -k <# blocks> -e <imbalance (e.g. 0.03)> -o km1 -m direct -p ../../../config/km1_kKaHyPar-E_sea20.ini

Old Presets

Additionally, we provide different presets that correspond to the configurations used in the publications at ALENEX'16, ALENEX'17, SEA'17, SEA'18, GECCO'18, as well as in our JEA journal paper and in the dissertation of Sebastian Schlag. These configurations are located in the config/old_reference_configs folder. In order to use these configurations, you have to checkout KaHyPar release 1.1.0, since some old code as been removed in the most current release.

To start KaHyPar-MF (using flow-based refinement) optimizing the (connectivity - 1) objective using direct k-way mode run:

./KaHyPar -h <path-to-hgr> -k <# blocks> -e <imbalance (e.g. 0.03)> -o km1 -m direct -p ../../../config/old_reference_configs/km1_kahypar_mf_jea19.ini

To start KaHyPar-MF (using flow-based refinement) optimizing the cut-net objective using direct k-way mode run:

./KaHyPar -h <path-to-hgr> -k <# blocks> -e <imbalance (e.g. 0.03)> -o cut -m direct -p ../../../config/old_reference_configs/cut_kahypar_mf_jea19.ini

To start EvoHGP/KaHyPar-E optimizing the (connectivity - 1) objective using direct k-way mode run

 ./KaHyPar -h <path-to-hgr> -k <# blocks> -e <imbalance (e.g. 0.03)> -o km1 -m direct -p ../../../config/old_reference_configs/km1_direct_kway_gecco18.ini

Note that the configuration km1_direct_kway_gecco18.ini is based on KaHyPar-CA. However, KaHyPar-E also works with flow-based local improvements. In our JEA publication the km1_kahypar_e_mf_jea19.ini configuration was used.

To start KaHyPar-CA (using community-aware coarsening) optimizing the (connectivity - 1) objective using direct k-way mode run:

./KaHyPar -h <path-to-hgr> -k <# blocks> -e <imbalance (e.g. 0.03)> -o km1 -m direct -p ../../../config/old_reference_configs/km1_direct_kway_sea17.ini

To start KaHyPar in direct k-way mode (KaHyPar-K) optimizing the (connectivity - 1) objective run:

./KaHyPar -h <path-to-hgr> -k <# blocks> -e <imbalance (e.g. 0.03)> -o km1 -m direct -p ../../../config/old_reference_configs/km1_direct_kway_alenex17.ini

To start KaHyPar in recursive bisection mode (KaHyPar-R) optimizing the cut-net objective run:

./KaHyPar -h <path-to-hgr> -k <# blocks> -e <imbalance (e.g. 0.03)> -o cut -m recursive -p ../../../config/old_reference_configs/cut_rb_alenex16.ini

All preset parameters can be overwritten by using the corresponding command line options.

Input Validation

When creating a hypergraph KaHyPar validates that the input is actually a correct hypergraph, otherwise printing an error and aborting. This applies to hgr input files, the C interface and the Python interface. The runtime cost of the validation should be negligible in almost all cases. However, the input validation can also be disabled using the cmake flag -DKAHYPAR_INPUT_VALIDATION=OFF.

Additionally, warnings are printed for non-fatal issues (e.g. hyperedges with duplicate pins). To treat non-fatal issues as hard errors instead, use the cmake flag -DKAHYPAR_INPUT_VALIDATION_PROMOTE_WARNINGS_TO_ERRORS=ON.

Using the Library Interfaces

The C-Style Interface

We provide a simple C-style interface to use KaHyPar as a library. Note that this interface is not thread-safe yet. However there are some existing workarounds. The library can be built and installed via

make install.library

and can be used like this:

#include <memory>
#include <vector>
#include <iostream>

#include <libkahypar.h>

int main(int argc, char* argv[]) {

  kahypar_context_t* context = kahypar_context_new();
  kahypar_configure_context_from_file(context, "/path/to/config.ini");
  
  kahypar_set_seed(context, 42);

  const kahypar_hypernode_id_t num_vertices = 7;
  const kahypar_hyperedge_id_t num_hyperedges = 4;

  std::unique_ptr<kahypar_hyperedge_weight_t[]> hyperedge_weights = std::make_unique<kahypar_hyperedge_weight_t[]>(4);

  // force the cut to contain hyperedge 0 and 2
  hyperedge_weights[0] = 1;  hyperedge_weights[1] = 1000;
  hyperedge_weights[2] = 1;  hyperedge_weights[3] = 1000;

  std::unique_ptr<size_t[]> hyperedge_indices = std::make_unique<size_t[]>(5);

  hyperedge_indices[0] = 0; hyperedge_indices[1] = 2;
  hyperedge_indices[2] = 6; hyperedge_indices[3] = 9;
  hyperedge_indices[4] = 12;

  std::unique_ptr<kahypar_hyperedge_id_t[]> hyperedges = std::make_unique<kahypar_hyperedge_id_t[]>(12);

  // hypergraph from hMetis manual page 14
  hyperedges[0] = 0;  hyperedges[1] = 2;
  hyperedges[2] = 0;  hyperedges[3] = 1;
  hyperedges[4] = 3;  hyperedges[5] = 4;
  hyperedges[6] = 3;  hyperedges[7] = 4;
  hyperedges[8] = 6;  hyperedges[9] = 2;
  hyperedges[10] = 5; hyperedges[11] = 6;

  const double imbalance = 0.03;
  const kahypar_partition_id_t k = 2;

  kahypar_hyperedge_weight_t objective = 0;

  std::vector<kahypar_partition_id_t> partition(num_vertices, -1);

  kahypar_partition(num_vertices, num_hyperedges,
       	            imbalance, k,
               	    /*vertex_weights */ nullptr, hyperedge_weights.get(),
               	    hyperedge_indices.get(), hyperedges.get(),
       	            &objective, context, partition.data());

  for(int i = 0; i != num_vertices; ++i) {
    std::cout << i << ":" << partition[i] << std::endl;
  }

  kahypar_context_free(context);
}

To compile the program using g++ run:

g++ -std=c++14 -DNDEBUG -O3 -I/usr/local/include -L/usr/local/lib program.cc -o program -lkahypar

Note: If boost is not found during linking, you might need to add -L/path/to/boost/lib -I/path/to/boost/include -lboost_program_options to the command.

To remove the library from your system use the provided uninstall target:

make uninstall-kahypar

The Python Interface

To compile the Python interface, do the following:

  1. Create a build directory: mkdir build && cd build
  2. If you have boost installed on your system, run cmake: cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DKAHYPAR_PYTHON_INTERFACE=1. If you don't have boost installed, run: cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DKAHYPAR_PYTHON_INTERFACE=1 -DKAHYPAR_USE_MINIMAL_BOOST=ON instead. This will download, extract, and build the necessary dependencies automatically.
  3. Go to libary folder: cd python
  4. Compile the libarary: make
  5. Copy the libary to your site-packages directory: cp kahypar.so <path-to-site-packages>

After that you can use the KaHyPar libary like this:

import os
import kahypar as kahypar

num_nodes = 7
num_nets = 4

hyperedge_indices = [0,2,6,9,12]
hyperedges = [0,2,0,1,3,4,3,4,6,2,5,6]

node_weights = [1,2,3,4,5,6,7]
edge_weights = [11,22,33,44]

k=2

hypergraph = kahypar.Hypergraph(num_nodes, num_nets, hyperedge_indices, hyperedges, k, edge_weights, node_weights)

context = kahypar.Context()
context.loadINIconfiguration("<path/to/config>/km1_kKaHyPar_sea20.ini")

context.setK(k)
context.setEpsilon(0.03)

kahypar.partition(hypergraph, context)

For more information about the python library functionality, please see: module.cpp

We also provide a precompiled version as a PyPI version , which can be installed via:

python3 -m pip install --index-url https://pypi.org/simple/ --no-deps kahypar

The Julia Interface

Thanks to Jordan Jalving (@jalving) KaHyPar now also offers a Julia interface, which can currently be found here: kahypar/KaHyPar.jl.

The corresponding dependency can be installed via:

using Pkg
Pkg.add(PackageSpec(url="https://github.com/jalving/KaHyPar.jl.git"))
Pkg.test("KaHyPar")

After that, you can use KaHyPar to partition your hypergraphs like this:

using KaHyPar
using SparseArrays

I = [1,3,1,2,4,5,4,5,7,3,6,7]
J = [1,1,2,2,2,2,3,3,3,4,4,4]
V = Int.(ones(length(I)))

A = sparse(I,J,V)

h = KaHyPar.hypergraph(A)

KaHyPar.partition(h,2,configuration = :edge_cut)

KaHyPar.partition(h,2,configuration = :connectivity)

KaHyPar.partition(h,2,configuration = joinpath(@__DIR__,"../src/config/km1_kKaHyPar_sea20.ini"))

The Java Interface

Romain Wallon has created a Java interface for KaHyPar. Please refer to the readme for a detailed description on how to build and use the interface.

Bug Reports

We encourage you to report any problems with KaHyPar via the github issue tracking system of the project.

Licensing

KaHyPar is free software provided under the GNU General Public License (GPLv3). For more information see the COPYING file. We distribute this framework freely to foster the use and development of hypergraph partitioning tools. If you use KaHyPar in an academic setting please cite the appropriate papers. If you are interested in a commercial license, please contact me.

// Overall KaHyPar framework
@phdthesis{DBLP:phd/dnb/Schlag20,
  author    = {Sebastian Schlag},
  title     = {High-Quality Hypergraph Partitioning},
  school    = {Karlsruhe Institute of Technology, Germany},
  year      = {2020}
}

@article{10.1145/3529090, 
  author = {Schlag, Sebastian and 
            Heuer, Tobias and 
            Gottesb\"{u}ren, Lars and 
            Akhremtsev, Yaroslav and 
            Schulz, Christian and 
            Sanders, Peter}, 
  title = {High-Quality Hypergraph Partitioning}, 
  url = {https://doi.org/10.1145/3529090}, 
  doi = {10.1145/3529090}, 
  journal = {ACM J. Exp. Algorithmics},
  year = {2022}, 
  month = {mar}
}

// KaHyPar-R
@inproceedings{shhmss2016alenex,
 author    = {Sebastian Schlag and
              Vitali Henne and
              Tobias Heuer and
              Henning Meyerhenke and
              Peter Sanders and
              Christian Schulz},
 title     = {k-way Hypergraph Partitioning via \emph{n}-Level Recursive
              Bisection},
 booktitle = {18th Workshop on Algorithm Engineering and Experiments, (ALENEX 2016)},
 pages     = {53--67},
 year      = {2016},
}

// KaHyPar-K
@inproceedings{ahss2017alenex,
 author    = {Yaroslav Akhremtsev and
              Tobias Heuer and
              Peter Sanders and
              Sebastian Schlag},
 title     = {Engineering a direct \emph{k}-way Hypergraph Partitioning Algorithm},
 booktitle = {19th Workshop on Algorithm Engineering and Experiments, (ALENEX 2017)},
 pages     = {28--42},
 year      = {2017},
}

// KaHyPar-CA
@inproceedings{hs2017sea,
 author    = {Tobias Heuer and
              Sebastian Schlag},
 title     = {Improving Coarsening Schemes for Hypergraph Partitioning by Exploiting Community Structure},
 booktitle = {16th International Symposium on Experimental Algorithms, (SEA 2017)},
 pages     = {21:1--21:19},
 year      = {2017},
}

// KaHyPar-MF
@inproceedings{heuer_et_al:LIPIcs:2018:8936,
 author ={Tobias Heuer and Peter Sanders and Sebastian Schlag},
 title ={{Network Flow-Based Refinement for Multilevel Hypergraph Partitioning}},
 booktitle ={17th International Symposium on Experimental Algorithms  (SEA 2018)},
 pages ={1:1--1:19},
 year ={2018}
}


@article{KaHyPar-MF-JEA,
  author = {Heuer, T. and Sanders, P. and Schlag, S.},
  title = {Network Flow-Based Refinement for Multilevel Hypergraph Partitioning},
  journal = {ACM Journal of Experimental Algorithmics (JEA)}},
  volume = {24},
  number = {1},
  month = {09},
  year = {2019},
  pages = {2.3:1--2.3:36},
  publisher = {ACM}
}

// KaHyPar-E (EvoHGP)
@inproceedings{Andre:2018:MMH:3205455.3205475,
 author = {Robin Andre and Sebastian Schlag and Christian Schulz},
 title = {Memetic Multilevel Hypergraph Partitioning},
 booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference},
 series = {GECCO '18},
 year = {2018},
 pages = {347--354},
 numpages = {8}
}

// KaHyPar-SEA20 (KaHyPar-HFC)
@InProceedings{gottesbren_et_al:LIPIcs:2020:12085,
author = {Lars Gottesb{\"u}ren and Michael Hamann and Sebastian Schlag and Dorothea Wagner},
title =	{{Advanced Flow-Based Multilevel Hypergraph Partitioning}},
booktitle = {18th International Symposium on Experimental Algorithms (SEA)},
pages =	{11:1--11:15},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
year =	{2020}
}

Contributing

If you are interested in contributing to the KaHyPar framework feel free to contact me or create an issue on the issue tracking system.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

kahypar-1.3.7-cp314-cp314-musllinux_1_2_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

kahypar-1.3.7-cp314-cp314-musllinux_1_2_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

kahypar-1.3.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

kahypar-1.3.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

kahypar-1.3.7-cp314-cp314-macosx_11_0_arm64.whl (897.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

kahypar-1.3.7-cp314-cp314-macosx_10_15_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

kahypar-1.3.7-cp313-cp313-musllinux_1_2_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

kahypar-1.3.7-cp313-cp313-musllinux_1_2_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

kahypar-1.3.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

kahypar-1.3.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

kahypar-1.3.7-cp313-cp313-macosx_11_0_arm64.whl (897.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

kahypar-1.3.7-cp313-cp313-macosx_10_13_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

kahypar-1.3.7-cp312-cp312-musllinux_1_2_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

kahypar-1.3.7-cp312-cp312-musllinux_1_2_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

kahypar-1.3.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

kahypar-1.3.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

kahypar-1.3.7-cp312-cp312-macosx_11_0_arm64.whl (897.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

kahypar-1.3.7-cp312-cp312-macosx_10_13_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

kahypar-1.3.7-cp311-cp311-musllinux_1_2_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

kahypar-1.3.7-cp311-cp311-musllinux_1_2_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

kahypar-1.3.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

kahypar-1.3.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

kahypar-1.3.7-cp311-cp311-macosx_11_0_arm64.whl (896.5 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

kahypar-1.3.7-cp311-cp311-macosx_10_9_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

kahypar-1.3.7-cp310-cp310-musllinux_1_2_x86_64.whl (2.6 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

kahypar-1.3.7-cp310-cp310-musllinux_1_2_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

kahypar-1.3.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

kahypar-1.3.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

kahypar-1.3.7-cp310-cp310-macosx_11_0_arm64.whl (895.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

kahypar-1.3.7-cp310-cp310-macosx_10_9_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10macOS 10.9+ x86-64

File details

Details for the file kahypar-1.3.7-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9b3ad7421885e7030901769ad1dfc9cba7456f6d0b4eb5956dc48046365075ab
MD5 1d3c33f4191a6e9913149aacf6efa1a1
BLAKE2b-256 e2940bd16be99937036ce4680635a641fcd3c8579d3145351849eb820e89de85

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 be5b4896311265b9c1e94cd79ef678c8ec726f1b78b8d073debe041fab356c52
MD5 eb48793e0c3f8d2e36e1d05681f3b0fc
BLAKE2b-256 fc8c5ae2a2670ca802164eb9106ac3aedf035d64b20fae180019b09ead0bded4

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 87ad5db0ac46af79cce412a1f7e9fd97cde3b8c94c25567427bf6efc3892a874
MD5 3b3cc67d05c313cc41bb77c1c7ac40e0
BLAKE2b-256 1b563270fe6e034d2bbac5aae99e1671bdfdd327b11003935e58460cea67738c

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 6ed902bac7fa815413fc2477d9f274c756a5ca90cf0924b8af0cbb7b3b514c4f
MD5 9a404f8de49103f08ddf7dc5cdd339e6
BLAKE2b-256 b9872ed7f63dc8a530077394e8d78c217b4563410d9fdbef2821d97fda4a34f9

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dd6b0fa683bbbb9a87533f31ae823e87a43eacf582466ce1b88871f5008b653f
MD5 0697d1b525568da179460174bf8f32cb
BLAKE2b-256 93f79b8303f7af45d0ab1f4bdbeef3a93e777dea662f6af441f656a007d73571

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 6838f9a964ec4be4d3371ea34830f56cd79705396cd85ff33a83328ee4f98809
MD5 53c2a2a8146af739aaa8f76c6d784bd8
BLAKE2b-256 1cde490252c96cb82631f4b82c8e2fade9edd1dca352c4f2c2c0ea73856253dd

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 349eed80dcc6633e43c3a62aea8de3b75546e37644735fdb516c6a35abea4ae1
MD5 4bc5bbc24608a9cc98998d0bd52ba4c6
BLAKE2b-256 1f3d50f4aa7a89d5b023e8caf3432edc2fc8c2012af579199539a6a2555349a7

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 0bb730e3004311578909bfd60efd06c397077ed1a2a03eee4f05f508fca8759e
MD5 4f69a4903c148b294908b6190adfd1ce
BLAKE2b-256 1e559253513aaa01ec7a34118863e89eb46edfa16c8d0b140fa489b3bad2f3e6

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 fe8034e7f4c75dbec324340e1999b1a2516e61b44792f7d8a7cd81349e032b74
MD5 1bd13b14f5e96536966ff7d17c5ea691
BLAKE2b-256 bcb3ae616300dafc8534fba5497dace380350ec5cb96ebcf4d43fc1ece94013b

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 8dee612d201434e2bcfd02fa318e5b59329b683fc106d8d812b372f979f5a042
MD5 84e5f7b44d06c263e4b70a3f8a1ad13f
BLAKE2b-256 a9b88d64239c11c69aac5a3614b21b3cd84867afe30c4172de049b20d5173cc6

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 dbc9d08e4278f683f1d7d57f75205bb801f589e62fd296afd03f7453b6516f30
MD5 0bd22ed02f628d96fffe64654eef1142
BLAKE2b-256 48a05429411bb6fbc279c574fae2f404439b13c037587305babfb83ea05b1b0e

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 0c37e09f7598d7b6111f9cfd038095397ef0fe07523dfdc91add165b8aa31aae
MD5 7b19dbc608fb879e2c802757e8905b65
BLAKE2b-256 98d108ba72c10e634f1829d6cb28b972acd83a79061be3151ebba2680c77be72

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 7c26148a39dd6077257afd90cbe10cba6ac73f80bf80fa590ec600c3ce8dfa76
MD5 390a0e9c7050e72367cdeb35344a0a33
BLAKE2b-256 3264ab4c7388343cee0f59b976e09ccc1211921875d1bc9b023a163ac791abd0

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 b4a8a616fccd10c2b6e756711466908024594d9778ca173605363663b3557b1b
MD5 cd80720176dc5a1d43fc66bb61018e01
BLAKE2b-256 ea85e6aa57ff95260729d8e2ac2d2bd832ca5ce86540e2f9dd535303900eb01e

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 0dce7a14b55efceeb8d66fd457981ffd32a255137fb33f680a143e199fddf846
MD5 59864d9ef589bf364bfb7c06221b7636
BLAKE2b-256 f3a30b774720aabfd13729306c89b7db1551a32f1cc006d8f872540c8dae50fd

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 969a9e0b78e375ea235243fb1a7d1491ce3494fb941bc6446ce88d7986ecfdfb
MD5 9f0fdc467e8a38f7d144a999ad8a5af0
BLAKE2b-256 171713372542d379825595f0220c22e6243db947a8aeb9fbcbd3de3a23df0ae4

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 473e26b909e2f3bb8716b6bb618cff772d0c09f280025b3f21a79d3ebe899678
MD5 c62e921d7d970357fc46eac5ee94846b
BLAKE2b-256 ac885276e178ee6e8031c10033a1c4167e795f8e1e7bf35e298d05ed20a539b0

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 177246a9cafb1c3c516c3fe3a60232688f88adcf1c551785be8e204c1524c807
MD5 4bbae1e206f53e5ab805f7f4f5865567
BLAKE2b-256 3eab8e22eeffe9429091f3f3cd8893df8ef967aabf02a29d2225b9ce6bfe3940

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 eae9825a8ae3533f79839cafeeeebc2f798b583168bf1ea37c102fa74b12f344
MD5 15e66ac23c45155e375cbfd4ae84a79b
BLAKE2b-256 cfbc1ef843d523885dd604962013883391bf5dd72484b5f528538fafe2adb4e8

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8bc1e3a098400b884a0e6fcc380fe1fba80189504e9148c9f2ad41708fa82a89
MD5 7c508151618a15d663f1c95c3a042f50
BLAKE2b-256 d6b60d63407aaecbc3afd94dbf0489093f471ea53958619911dd639ba1e4184f

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 019e8ad2d48051280f29e6ce782b6a00e07e49c84ca7594bccd782e26ab5f156
MD5 5c145b818d6bf2c6a43a453c6a4909fd
BLAKE2b-256 ac61113d63a545b195423b927c74c967e6c96bc7f8626ac9a624e00ce86235d2

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 9bbd04a0f525eac4bb1f9dcfcb3ff316e57ebfeef45179b2d2f15229a753de46
MD5 8042210b9358fc3babd68f7cdd2f668a
BLAKE2b-256 90ef5b7f7fa0027517d8be2b717698b976188ab5d066c37200f5a26e5c8f960e

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ff660dc9c01ff9fa2e072cf639ca4961368f338a6440051541bbd5f5df35064b
MD5 97543353a9e5c1a7855e935da8778738
BLAKE2b-256 d66992f30438700af9646b63537eed752e16f37a4a09898ca034676d35e77eee

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f77ff7ead4c37c338f83370fac7d7a587789c09f79cfbd06b63285f9ae951400
MD5 db2b5dd944a1405a0dcea43228c0d8bb
BLAKE2b-256 38769508f86e4a15f732dc250599c00b1233a04d57ddcc2aed3822e4ced2a29f

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 da0a80bf9ef6f6653fad8d27abd172bc82333315faf032e6ca275a6b4e624826
MD5 c78f14aa052da753586f36fdc5a60e96
BLAKE2b-256 02cc5d892bf48ac9aa625e6bf691a83521c8d339134c6d53ff09ffef4df48a79

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 8a18f7a489f4256d2f69708d55c13ff4ff1bbbfaec2e039b372110d3d80ef290
MD5 cc26690e613cdd7724ca4d468310c159
BLAKE2b-256 07d16b794c170f22b48e341761e18db82600a90c87e1ff3572874e8886b6a708

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 a3a5cd55d8074fbb1e9e165556df87468b229f8dcc3943fba30474f80fe460ff
MD5 053466a9de990bc04e7942f61e6709d9
BLAKE2b-256 0f5f0451cde7cac9d05a0a1a60f52bfc7306c78aa7dfec1312caf1f2c96e3ccf

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 f10bc3fef7e38ca4d3dbcec325a7e0ce8df4aaddd370d7f921e49a990bc63d8a
MD5 03e3383415a645644970c8416795afec
BLAKE2b-256 494d24d4eb4b88b913943c3afe906871be1d0e4d5089905b415c37cf1c76a249

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 07f22fd28c3464227de64c10fd0b617382605cea0f6738a7b3061e32392403ab
MD5 f86e559c2cf11652da48a1ac3e91885b
BLAKE2b-256 f5b512db81e3734690fa7add2627a85b4205f8fd41269f105bf53fb5a4a5483e

See more details on using hashes here.

File details

Details for the file kahypar-1.3.7-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.7-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 de31d924e6432941da770cb553bc96ef8d92ac1992aa79a3561ca5c1db8cf0be
MD5 3724b239fc0e5ac38d2cffa9ddfdd7e4
BLAKE2b-256 1b6c371dcb638d9aaca1bacd43f94bdce3ee3f8c8478b4414bd2fe742ef8ec09

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