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.6.dev3-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.6.dev3-cp314-cp314-musllinux_1_2_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

kahypar-1.3.6.dev3-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.6.dev3-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.6.dev3-cp314-cp314-macosx_11_0_arm64.whl (897.5 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.15+ x86-64

kahypar-1.3.6.dev3-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.6.dev3-cp313-cp313-musllinux_1_2_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

kahypar-1.3.6.dev3-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.6.dev3-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.6.dev3-cp313-cp313-macosx_11_0_arm64.whl (897.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.13+ x86-64

kahypar-1.3.6.dev3-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.6.dev3-cp312-cp312-musllinux_1_2_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

kahypar-1.3.6.dev3-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.6.dev3-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.6.dev3-cp312-cp312-macosx_11_0_arm64.whl (897.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

kahypar-1.3.6.dev3-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.6.dev3-cp311-cp311-musllinux_1_2_aarch64.whl (2.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

kahypar-1.3.6.dev3-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.6.dev3-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.6.dev3-cp311-cp311-macosx_11_0_arm64.whl (896.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.9+ x86-64

kahypar-1.3.6.dev3-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.6.dev3-cp310-cp310-musllinux_1_2_aarch64.whl (2.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

kahypar-1.3.6.dev3-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.6.dev3-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.6.dev3-cp310-cp310-macosx_11_0_arm64.whl (895.5 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

kahypar-1.3.6.dev3-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.6.dev3-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3367c0145eece5012a271acc7a2a0f0f723278fc8b312f43fa71c04e0650b6ae
MD5 1232829d0d5abd37bb2c0a5fe6b97748
BLAKE2b-256 4925a9484358b17a6ea95a6bd4eb37890bfa479ad09737ce59da8d2b128aaf9e

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 168ace8245915a5fd78a4b502074f7eb5bf8fd34bdae4889eb85f5c55ef5769c
MD5 465c8246645777ffb2acb62881fcdb04
BLAKE2b-256 ea950900045784765f7fcc02ab4efaa5140db66d288e98e8376215bcfd2068ae

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 0b79d1b9b29ed9907491fac3518d481745aa167100a7d849cc5c12cadb83c6fd
MD5 f925da36350b1257e18db2c4b6198d75
BLAKE2b-256 ef686ad778e61a61afd7d714250324f20fb2d35f17b9a118b2bd8d981894c3eb

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 67092064d819736c13566df98ea02ffe17e5265fc611ff049c622d7e49db11a5
MD5 a5e3555ba9e4d617fdca8040b78432d8
BLAKE2b-256 ad6fa36074055b74fc226262065fa0e99eae4e915076e6b296986795b84e0505

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cb6b597405b3c58f7c865a8b58c4812c3dfd879756529418231aef0df685a88c
MD5 cc1b64f4ee7b74045a13d733d0c7167b
BLAKE2b-256 3745a4cb404b08f47e2580da1e72d4582029ebe6476880b4d81219ab6078a732

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 44a7a6ce6f4e6dd4104f4c80b54e9598252f151b22c48195bb401e0e21d40408
MD5 8ee8cae63962c27c7e982138ba563599
BLAKE2b-256 bd36ded5660658ce2135e73a9723c20f0f154df5dcf72784f6eb8d380ee59f5b

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ab2fce855689db7cb73012db5feab84f2e7bf67cb9dfe3e32cf4ae221c923dec
MD5 8b2571cbfb43ac2aa16db58ada01b4ce
BLAKE2b-256 8c77ca0ff74c4f8f4565ff856dc213e4d6d8374f7398d406e441de29456becb7

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 87fe24c75b72cadac3ad95308daa075063ced6f2a65eff4d2d0c6c2fe2cb922e
MD5 563bbcbe83823c3cb5152e3cfd19a2d1
BLAKE2b-256 10094b099b1948c19ede707f5521cd0545d74b33d276f2d27376c2448cf09f5a

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 f0c7f206b4428805bb84512d64d3f941966f39be8f0a18dafb8d59db777fa24a
MD5 316ab2ae725faf8b1077f47cbdf8210f
BLAKE2b-256 e61cad25941d8500c7ce0fce83ed181bbb992286eb212ba264f893eb6c9a7af9

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 ace6319bb3e9ef4fd2f6d017c0406878373e05a97b9cbf8eb162a006f788558e
MD5 40b0b0af36090e8044a8738dd7843ff7
BLAKE2b-256 4e5556d9d9a8757a8d75e90a7e08df937e62e9c41db335f48064f42b38f269a9

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c6559e645ac452a54145f5ccebc53d3086efbe8db69a3635eca2784315e7654f
MD5 ebe604a94f6064d47ec3645c1d424f2c
BLAKE2b-256 09363433d68a43f5618dd3dd89f25526839a1a7e46895cec98511f4d03c38d5e

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ebe290f4a143654d5de153ae2113cbae58d76f8ba1b2890b1190400b71a5132e
MD5 99ac9db5f56c1242c011423eae3c0ece
BLAKE2b-256 2bbb895867f02fbcaea669a22df05d2d5267f461817d238e0926d216bcc482c2

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0c6d4f092cbb8384329a09a683ab23eeb816ca185375382470827bf14bc8a6db
MD5 521acc9734e56f842b2ca2685def3190
BLAKE2b-256 e8ab70c22c5ef1fa2c16a27616a92afe63e641c59d450e50f5a73854b51c5335

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f018868702d15b2d703da89b847189d419986fafde58f0b61dff63ece1e486f4
MD5 315eda07108ae60a6342eb6ea05b2678
BLAKE2b-256 d4a1990ba337c99a4ed9deff760faf9d3de890405d17c33b7c7cefbb900a9374

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 7bc86275ac808a3b3798c0e3cc974b009a1a3180e1553862994e7d7aa276e240
MD5 ac3d7137673e9847fa7f0e4df1b390ee
BLAKE2b-256 e77d2f50c85793a2f42845097fd15474fe4ff8dfeae969f6350335e557e5acc7

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 6633a63f603ea495efd833c7cce531edb1b16e3c868baf881290c036e0d78610
MD5 33945e6bf42e2da76f54f14d6ca949d0
BLAKE2b-256 012606f74b096cba2f1078ea3683d0d9fef0ab6102dd17c2ca437e24b15b2128

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 31a9c184f2377a433297a22d6458480a09acbda6e5f53e65b75d220664530ce4
MD5 94fc16b0ec44a2727576e94c12ec3249
BLAKE2b-256 3634147c0686b33b81ca605fc861c2d0c24e0ba879a477774b3825e9ad247376

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 197a5f4681bb14549af82b341a7762799db8a1098c2d7e6f2f82a06ded2681ba
MD5 0c2dca9da2d8e6a6a75c88b2f8311acc
BLAKE2b-256 136119f14ac4e3e4d296781b8b885c98e3a1ba5b7b2d84bdbcaf245c6da56298

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 abaf08f0b3f26cb9a0735f6c5e99e3713eb1c972f76a66792979422ec940affb
MD5 810d52135015762c0bf2a1949a93e2ad
BLAKE2b-256 9fb6bde85cd948f9c6f273a61e12c5045b1b8c8fc7092237388e0719adb03412

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ebf8bb19768ff8cd4fd59187818b468f6a4eb2d1fe7282ba872d758c199ffc85
MD5 83ee2687dbe6dba0718d43885cb53b71
BLAKE2b-256 c20852abac8f595aeb55b459d5e7d0ef9e9d12df7534fca263f687c9f717a4c6

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 1f4b2076ee085022f8f4e67a9361537680bc8c3ff99eaee19dbf60e0f7ef2707
MD5 ce89d3d552f05aab524fa2f04dd17d10
BLAKE2b-256 0382f61784dfe7fae48ec6fe6478647e942efd4bfef09bbe89c8306f5fade5c1

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 7e339dfe43292feceba0e88adfd527f3ea9534f2d74b2daa561ed09962f9e514
MD5 346b69417a9cda009ea21f41ad7d2231
BLAKE2b-256 e7287292300bc04b527f8ad63ac463645f1366f47b2103f84516bfbe4104b1c2

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c289d8efbe143d90c34841250e360bcd74874d02ac9db1352cd29ca4791472e3
MD5 0d41e5eb4000771aab773d92daede7ba
BLAKE2b-256 6a921426ca6cea488d759163e72cc8fd9a6118602cd44b5496dcf83052d0dc82

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 696790966a9287aadf0c743789694a3888b443b70dd2e54c62d0e832dfec73cc
MD5 3d339d6b9f7be122fd413eed05f1c1a2
BLAKE2b-256 a80e03ed8d59b6bff608039b55126bef4e0c1ab488f064436a38850ce013d7e2

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 0a3e383a09ff1505bbd4bc7e5f3d61d43748d79260391d558a36b9084c659e3d
MD5 332fee4e28482c2f38b617a57c0497eb
BLAKE2b-256 4b1c34aba9bf406fd3da5e9ed55d22c863f5d86ba0d399b1a384f1bd903314b3

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4f4954a739329d26816229d344bcb8b3c384fedc0f21972ae575f297da4f91fb
MD5 e29fa757b1d43a0ee6193ba5fa81a0e2
BLAKE2b-256 6ed63c8e28a4e8104fa9cd37cbd3cc5201c423f3973570f4b5101076c694f8f1

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 eb62c100fa86f41d0d56e1a56ed0ac20bbb4418853a70afc2830512e6e17959b
MD5 c76b5dda7c675bcd88eaae18f8a76fe5
BLAKE2b-256 82c09b2b9d4841fe1278e4a13ad9136b4e4339a4ad0c51e7898a54a9b1fc6d27

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl
Algorithm Hash digest
SHA256 d7e94544201a5f779c9a503f66b4c621f76ac2064beee66c481a6fcb96f35281
MD5 b32ea7579255ae316822fd5c1910718d
BLAKE2b-256 6ebb12e5090d43db3b8359c3f8f0479481d69bc7016d0be287d57fc59498ee93

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 57008e462356a0b1f0d2e930a06d4e290f05c314dcd90e5ada27008a555111d3
MD5 4b27fb80e7585661c0bc5ca96f679329
BLAKE2b-256 52fba0c05aebc407a87a3b63ccadc0b86d9b351dbb511eeb2b98ed6ea7c988f3

See more details on using hashes here.

File details

Details for the file kahypar-1.3.6.dev3-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for kahypar-1.3.6.dev3-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 d74d279e2047a87e54b2e18d5ce2c1dbb070c2cd18930175610586e466beac1d
MD5 c05d3237f5304856b1c1d0f9443039d3
BLAKE2b-256 1c7ab9dda5dbff7d045a29cedc09d3a35ae2ea926a35b3815ea3f9ff3996ddad

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