Skip to main content

Hillmapper C++ extension

Project description

HILLMAPPER

HILLMAPPER is a high-performance C++ extension (via PyBind11) that provides a fast, parallel hill-climbing algorithm implementation.

Features

  • Blazing fast C++ core compiled with PyBind11.
  • Provides find_optimal_bijection — a parallel hill-climbing optimizer.
  • Precompiled for Ubuntu (manylinux) and macOS (universal2).
  • Windows support coming soon.

Requirements

  • Python 3.11+
  • Runs on Ubuntu and macOS (x86_64 & Apple Silicon)

Installation

Install from PyPI

pip install hillmapper

Usage example

#!/usr/bin/env python3
# import it first!
from hillmapper import find_optimal_bijection


def main():
    # Frequency counters for Redset scansets
    redset_scanset_counters = [4, 2, 3]

    # Redset scansets (1-based table IDs, since C++ uses 1..N internally)
    redset_scansets = [
        [1, 2],   # Scanset 0
        [2, 3],   # Scanset 1
        [1, 3],   # Scanset 2
    ]

    # Benchmark scansets (also 1-based)
    tpcds_scansets = [
        [1, 2],   # Benchmark scanset 0
        [2, 3],   # Benchmark scanset 1
    ]

    # Map each Redset table (1-based) to the indices of the scansets it affects
    r_table_to_scansets = [
        [],       # index 0 unused (placeholder so tables match 1..N)
        [0, 2],   # Table 1 in scansets 0, 2
        [0, 1],   # Table 2 in scansets 0, 1
        [1, 2],   # Table 3 in scansets 1, 2
    ]

    n_redset_tables = 3  # Tables 1..3
    n_tpcds_tables = 2   # Tables 1..2

    best_distance, best_assignment = find_optimal_bijection(
        2,                          # n_threads
        50,                         # n_iterations_per_thread
        redset_scanset_counters,
        redset_scansets,
        tpcds_scansets,
        r_table_to_scansets,
        n_redset_tables,
        n_tpcds_tables
    )

    print("=== Hillmapper Optimization Demo ===")
    print(f"Best Manhattan distance: {best_distance}")
    print("Optimal table assignment (redset_table → tpcds_table):")
    for redset_table, tpcds_table in best_assignment.items():
        print(f"  Redset table {redset_table} → TPCDS table {tpcds_table}")


if __name__ == "__main__":
    main()

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.

hillmapper-0.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (189.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

hillmapper-0.1.1-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl (203.9 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ i686

hillmapper-0.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl (126.4 kB view details)

Uploaded PyPymacOS 11.0+ ARM64

hillmapper-0.1.1-cp313-cp313-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

hillmapper-0.1.1-cp313-cp313-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

hillmapper-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (95.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

hillmapper-0.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl (103.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686

hillmapper-0.1.1-cp313-cp313-macosx_11_0_arm64.whl (65.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

hillmapper-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

hillmapper-0.1.1-cp312-cp312-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

hillmapper-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (96.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

hillmapper-0.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl (104.0 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686

hillmapper-0.1.1-cp312-cp312-macosx_11_0_arm64.whl (65.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

hillmapper-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

hillmapper-0.1.1-cp311-cp311-musllinux_1_2_i686.whl (1.2 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

hillmapper-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (96.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

hillmapper-0.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl (104.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686

hillmapper-0.1.1-cp311-cp311-macosx_11_0_arm64.whl (64.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

File details

Details for the file hillmapper-0.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 18342a26dc84abc2edae5c810d576c204f4f44fa6693ec374cb4b0a21d0738ac
MD5 ee6eaf0ffb0211ea7305efddc85d5ca4
BLAKE2b-256 d9e8cc883e524d50a5e8bb4c30d02849e3a16be79aab90a1babf2967c78fc0f6

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-pp311-pypy311_pp73-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 85f33c62705941f31f79163ecd3da2d0f4c2c15bb0b34a7dbdc69435c91c77de
MD5 5c5f074ec9c4bac235605830db1aed08
BLAKE2b-256 45bf05f44eb102020df33d358d1fef90f3bc37d6e91572ddb98f574e04bb4358

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-pp311-pypy311_pp73-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d865c14eb5ae74e89f67da84f61743a32facf588486f34ae7e75250217ed469e
MD5 a693d1f91b0845d316cd1a5dafa00f29
BLAKE2b-256 b89d5e4dccfc532b6d18e7e179a123c8dace2721efd2638fdb106c707388fe86

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f74cdcc371b459f2807d34ea821aad05601b49ff21a5e044cbc599c28898e143
MD5 e2f6fb6102853ddce1ea924381b6864c
BLAKE2b-256 ff3b97c3e32e5cd4044f062425db27c552ae4293bfe6bb42c5dcc82a4e07ad13

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f27d082aa7adfe85435af2b1cc6a2993794382691fc32af805115e819fd76724
MD5 dffb2491ab8f3d496bfd21b25b93cad5
BLAKE2b-256 304917d3a14d1adc71bc4fc00ffdd28390149998d5abacc1a3c0c2adcb8ea277

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7f9b15fa8d045259c9002359cd5fada33db2ce01e7d9e4b4af00b972f0971c30
MD5 5080f58d77f919eed5adf8d873cbd3e4
BLAKE2b-256 09f1a23110b06c2f49a2a60be35aca3fe3f80fb4fa09fa129f5e1a286f4fe6af

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8b74386913dbda709566386e0689b8e45cd43f16e35017ec6327f24cecf82ed6
MD5 dde58e0d2e561a2af59dd4bb4d1977e7
BLAKE2b-256 b9e86b6093bdadfe66f33f31e815f68d5e24a6ef716bfcbe0fd89300169fa856

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4f8985b10ae85f7398dcf5fb7973503b13ada1685f42a3d0f4d6c942aff44745
MD5 12db181a6b5ae533231f793bf14f3962
BLAKE2b-256 d64594b5a71f946251e526a247c18c51d25d842d51ed39653d2af4aa63cd1072

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d4d94022a97d3d99373d69c85aade4d8c962c4318723e96f11d46fa496c40754
MD5 85fde076f2f2d07b71c3e2a613252364
BLAKE2b-256 9bafc37d7452edc155440831081be6f3200354193110a85621a848184d78ef42

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c701a8e0277c69f545400b885cfa8b085a66f5b29a8310870e462eddf15f1195
MD5 66170be64a1bbe4e0775d278d06c3d5e
BLAKE2b-256 8060072c90b240eff5b27e2f04ffa137f68fc3642962644da4192e747b7c9869

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8466d130d50de486d063db0d4ad37d90f9e6263caaeb83ba1b7b4350a145b40c
MD5 e9478598a9ce530aa42c541df4463d0e
BLAKE2b-256 ecee39258cdc05e1b02ea6cfc9ad8abc72728881739abb570623b4cb72ae19f6

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 be109179030934beb3a3196f755ebeb6dfcfad24ee207417adf0736d4a2ecd50
MD5 6ae58eb88ede890cad7dfb03ad7a498f
BLAKE2b-256 0a5705930056798d3f5d0c205772ad4ee335bfecc2da7f07e8b78abdec796e03

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 36f04a04640f017d8f6890fcba51fd5f62abc9f68856c69ddefc5b16473e7b51
MD5 3775f832ba4d1e00ff248b6c90174f27
BLAKE2b-256 6f3521d5bc82609753170c588cfda72ce92f703c4a69b67fafd3cc8d5baf24d9

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ce1b587889d3e50aa614e087d76fba6165f9f6658ae1ea803d1a65d0ba513d09
MD5 87fc46a0f86d0c50ce2878d179122671
BLAKE2b-256 c640e61206ffa82db5d6368ec1c7f211fda26f119b3a47e2061c97f7c86dadc8

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 22795e5ee08f9cc5586bee705264e709f6209517b09ca03ded239a8c262767d1
MD5 dddb9a4375049f6d168ac139db449757
BLAKE2b-256 3f6f754099c05f00ea54066bab923ebc347551ff7d545ccfebe10b585cd54714

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 8d62c96b1c7d081837c67b11df5dae069e31e497762dbc14ccb825790343f986
MD5 823f20cac33e62ff17c90eebc0218b98
BLAKE2b-256 87fa1e395ac54fd90c96553e8b66c620c283f3d21cb76d1f7248111a24557512

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 5742f9b4ef305315356b0583384cf6e9ae0a939338947977f650834704b186da
MD5 add36df6a480e9823036997d2d824cb9
BLAKE2b-256 853f4f93689abe8a534dd0d49c7983cf7a4ce887d89e30c6a27859b96577becb

See more details on using hashes here.

File details

Details for the file hillmapper-0.1.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for hillmapper-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 00e6d032773a5ef2d74aa35a6ace8a6c1b45aa31d4199519fec5cec8f806f856
MD5 4a3f1bcbc5df6bade2649e39d285c620
BLAKE2b-256 1437f1866f546ac33c3e9a4f9a36685f2c09aa3ab745ce69edebc6cba6a6ad52

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