Skip to main content

High-performance sparse matrix RK4 solver for quantum excitation dynamics

Project description

Excitation RK4 Sparse

量子力学的な励起ダイナミクスを計算するための疎行列ベースのRK4ソルバー。

機能

  • CSR形式の疎行列サポート
  • OpenMPによる並列化(動的スケジューリング最適化)
  • 複数の実装バリエーション
    • Python実装: 開発・デバッグ用
    • Numba実装: 小次元での高速化
    • Eigen実装: 標準的なC++実装
    • Eigen_Cached実装: 大次元での最適化
    • Eigen_Direct_CSR実装: 小次元での最高性能
    • SuiteSparse実装: メモリ効率重視
    • SuiteSparse-MKL実装: Intel MKLによる最速実装
  • 包括的なベンチマーク機能
    • 実装間の詳細な性能比較
    • 次元別最適化推奨
    • メモリ使用量・CPU使用率分析
  • メモリ最適化
    • キャッシュライン境界を考慮したアライメント
    • 疎行列パターンの再利用

バージョン情報

  • 現在のバージョン: v0.2.6
  • ステータス: 安定版
  • 最終更新: 2025-07-18
  • 新機能: 複数実装の統合、詳細なベンチマーク分析

必要条件

  • Python 3.10以上
  • C++17対応コンパイラ
  • CMake 3.16以上
  • pybind11
  • Eigen3
  • OpenMP(推奨)
  • オプション: Intel MKL(SuiteSparse-MKL版を使用する場合)

インストール

pip install(推奨)

pip install rk4-sparse-cpp

この場合、rk4_sparseモジュールがsite-packagesにインストールされます。

開発用インストール

git clone https://github.com/1160-hrk/excitation-rk4-sparse.git
cd excitation-rk4-sparse

# Eigen版のビルド(デフォルト)
./tools/build.sh --clean

# SuiteSparse-MKL版のビルド(オプション)
./build_suitesparse.sh

# Pythonパッケージのインストール
pip install -e .

# または、直接パスを追加して使用
# sys.path.append('python')

クイックテスト

# 2準位系のテスト
python examples/python/two_level_excitation.py

# 調和振動子のベンチマーク
python examples/python/benchmark_ho.py

使用例

基本的な使用法

# pip installでインストールした場合
from rk4_sparse import (
    rk4_sparse_py, 
    rk4_sparse_eigen, 
    rk4_sparse_eigen_cached,
    rk4_sparse_eigen_direct_csr,
    rk4_sparse_suitesparse,
    rk4_sparse_suitesparse_mkl,
    benchmark_implementations
)

# 開発用インストールの場合
# import sys
# import os
# sys.path.append(os.path.join(os.path.dirname(__file__), 'python'))
# from rk4_sparse import *

# Python実装(開発・デバッグ用)
result_py = rk4_sparse_py(H0, mux, muy, Ex, Ey, psi0, dt, return_traj, stride, renorm)

# Eigen版(標準的なC++実装)
result_eigen = rk4_sparse_eigen(H0, mux, muy, Ex, Ey, psi0, dt, return_traj, stride, renorm)

# Eigen_Cached版(大次元での最適化)
if rk4_sparse_eigen_cached is not None:
    result_cached = rk4_sparse_eigen_cached(H0, mux, muy, Ex, Ey, psi0, dt, return_traj, stride, renorm)

# Eigen_Direct_CSR版(小次元での最高性能)
if rk4_sparse_eigen_direct_csr is not None:
    result_direct = rk4_sparse_eigen_direct_csr(H0, mux, muy, Ex, Ey, psi0, dt, return_traj, stride, renorm)

# SuiteSparse版(メモリ効率重視)
if rk4_sparse_suitesparse is not None:
    result_suitesparse = rk4_sparse_suitesparse(H0, mux, muy, Ex, Ey, psi0, dt, return_traj, stride, renorm)

# SuiteSparse-MKL版(最速、Intel MKL利用)
if rk4_sparse_suitesparse_mkl is not None:
    result_mkl = rk4_sparse_suitesparse_mkl(H0, mux, muy, Ex, Ey, psi0, dt, return_traj, stride, renorm)

# 実装間のベンチマーク
results = benchmark_implementations(H0, mux, muy, Ex, Ey, psi0, dt, return_traj, stride, renorm, num_runs=5)

# 利用可能な実装の確認
print(f"Eigen available: {rk4_sparse_eigen is not None}")
print(f"Eigen_Cached available: {rk4_sparse_eigen_cached is not None}")
print(f"Eigen_Direct_CSR available: {rk4_sparse_eigen_direct_csr is not None}")
print(f"SuiteSparse available: {rk4_sparse_suitesparse is not None}")
print(f"SuiteSparse-MKL available: {rk4_sparse_suitesparse_mkl is not None}")

### 例題
すべての例は`examples/python/`ディレクトリにあります

1. **基本例**
```bash
python examples/python/two_level_excitation.py  # 2準位励起(Python/C++比較)
  1. ベンチマーク
python examples/python/benchmark_ho.py         # 調和振動子系での全実装比較
  1. 詳細分析
# ベンチマーク結果の詳細分析
python examples/python/analyze_benchmark_results.py

ベンチマーク

最新の性能結果(2025年1月)

実装別性能比較

実装 小次元(<128) 中次元(128-1024) 大次元(>1024) メモリ効率 推奨用途
Eigen_Direct_CSR 最高 良好 劣化 小次元リアルタイム
Eigen_Cached 良好 良好 最高 汎用・大次元
Eigen 良好 良好 良好 標準
SuiteSparse 良好 良好 良好 最高 メモリ制約環境
Numba 良好 劣化 不可 小次元のみ
Python 基準 基準 基準 開発・デバッグ

高速化倍率(Python基準)

  • 小次元(2-64): 100倍以上の高速化
  • 中次元(128-512): 10-50倍の高速化
  • 大次元(1024+): 1-5倍の高速化

ベンチマーク実行

# 全実装の比較
python examples/python/benchmark_ho.py

# 2準位系のテスト
python examples/python/two_level_excitation.py

# 詳細分析
python examples/python/analyze_benchmark_results.py

プログラム内での比較

# 実装間の速度比較
results = benchmark_implementations(H0, mux, muy, Ex, Ey, psi0, dt, True, 1, False, 5)
for result in results:
    print(f"{result.implementation}: {result.total_time:.6f}秒 (Eigen比: {result.speedup_vs_eigen:.3f}x)")

性能

詳細な性能比較(2025年1月)

実行時間比較(ミリ秒)

次元 Python Numba Eigen Eigen_Cached Eigen_Direct_CSR SuiteSparse
2 11.75 0.17 0.075 0.076 0.071 0.081
4 12.18 0.26 0.090 0.089 0.086 0.091
8 12.90 0.44 0.118 0.121 0.132 0.123
16 12.60 1.20 0.179 0.188 0.178 0.180
32 12.65 3.72 0.304 0.308 0.302 0.307
64 13.70 14.28 0.554 0.526 0.549 0.539
128 15.09 59.99 1.104 1.056 1.072 1.052
256 18.80 271.33 2.299 2.622 2.858 2.204
512 28.41 994.41 5.792 5.059 8.504 7.052
1024 38.49 3954.5 14.785 10.704 14.288 14.944
2048 66.62 - 34.796 22.810 - 32.717
4096 103.88 - 86.663 42.129 - 86.115

高速化倍率(Python基準)

次元 Numba Eigen Eigen_Cached Eigen_Direct_CSR SuiteSparse
2 67.4x 155.9x 154.0x 164.8x 145.3x
4 46.5x 134.8x 136.8x 141.7x 133.2x
8 29.2x 109.1x 106.3x 97.9x 105.2x
16 10.5x 70.4x 67.1x 70.7x 70.2x
32 3.4x 41.7x 41.1x 41.9x 41.3x
64 1.0x 24.7x 26.0x 25.0x 25.4x
128 0.3x 13.7x 14.3x 14.1x 14.3x
256 0.07x 8.2x 7.2x 6.6x 8.5x
512 0.03x 4.9x 5.6x 3.3x 4.0x
1024 0.01x 2.6x 3.6x 2.7x 2.6x
2048 - 1.9x 2.9x - 2.0x
4096 - 1.2x 2.5x - 1.2x

最適化の特徴

v0.2.6での主要改善

  1. 複数実装の統合: 6つの異なる実装バリエーション
  2. キャッシュ最適化: 大次元での顕著な性能向上(最大50%改善)
  3. 次元別最適化: 用途に応じた最適実装の自動選択
  4. 詳細なベンチマーク: 包括的な性能分析機能

コア技術

  1. メモリアライメント

    • キャッシュライン境界(64バイト)に合わせたアライメント
    • 作業バッファの効率的な配置
  2. 適応的並列化

    • 閾値ベースの条件分岐(10,000要素以上で並列化)
    • 静的スケジューリング最適化
  3. 疎行列最適化

    • 非ゼロパターンの事前計算とキャッシュ
    • データ構造の再利用
    • 効率的な行列-ベクトル積
  4. 実装別最適化

    • Eigen_Direct_CSR: 小次元での直接CSR操作
    • Eigen_Cached: 大次元でのキャッシュ効果活用
    • SuiteSparse: メモリ効率重視の最適化

ドキュメント

包括的なドキュメントが利用可能です:

ライセンス

MITライセンス

作者

  • Hiroki Tsusaka
  • IIS, UTokyo
  • tsusaka4research "at" gmail.com
pip install -e .

Project details


Download files

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

Source Distribution

rk4_sparse_cpp-0.2.9.tar.gz (2.8 MB view details)

Uploaded Source

Built Distributions

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

rk4_sparse_cpp-0.2.9-cp313-cp313-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

rk4_sparse_cpp-0.2.9-cp313-cp313-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

rk4_sparse_cpp-0.2.9-cp313-cp313-manylinux_2_28_x86_64.whl (353.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.9-cp313-cp313-manylinux_2_28_aarch64.whl (307.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

rk4_sparse_cpp-0.2.9-cp312-cp312-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

rk4_sparse_cpp-0.2.9-cp312-cp312-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

rk4_sparse_cpp-0.2.9-cp312-cp312-manylinux_2_28_x86_64.whl (353.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.9-cp312-cp312-manylinux_2_28_aarch64.whl (307.3 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

rk4_sparse_cpp-0.2.9-cp311-cp311-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

rk4_sparse_cpp-0.2.9-cp311-cp311-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

rk4_sparse_cpp-0.2.9-cp311-cp311-manylinux_2_28_x86_64.whl (349.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.9-cp311-cp311-manylinux_2_28_aarch64.whl (305.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

rk4_sparse_cpp-0.2.9-cp310-cp310-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

rk4_sparse_cpp-0.2.9-cp310-cp310-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

rk4_sparse_cpp-0.2.9-cp310-cp310-manylinux_2_28_x86_64.whl (348.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.9-cp310-cp310-manylinux_2_28_aarch64.whl (305.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

rk4_sparse_cpp-0.2.9-cp39-cp39-musllinux_1_2_x86_64.whl (1.4 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

rk4_sparse_cpp-0.2.9-cp39-cp39-musllinux_1_2_aarch64.whl (1.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

rk4_sparse_cpp-0.2.9-cp39-cp39-manylinux_2_28_x86_64.whl (347.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.9-cp39-cp39-manylinux_2_28_aarch64.whl (305.7 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

File details

Details for the file rk4_sparse_cpp-0.2.9.tar.gz.

File metadata

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

File hashes

Hashes for rk4_sparse_cpp-0.2.9.tar.gz
Algorithm Hash digest
SHA256 74ce073dac13d9209ff97db1de6377a1b50156f1ff530cc4937268522d848d57
MD5 a5d9c0f9377e8004632c6c599920ece7
BLAKE2b-256 0b955925987f58f91e39826072823374ee13b8ed36762b579a9000c0d475d833

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 57887802196143277d3eb3676e6f1db65f62d656ba079252bb2f3300b5dec0d2
MD5 2cfef65b6ec3030ee328b1c669bf2c9f
BLAKE2b-256 b50a4a7c05a9d45d5bc1a37dc1b13ef7f0ca63d247013ffae7b86d6cdd00b70a

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 56c012fe5a88b3e829681dcbe0c805a2f21dec7dfa5ae7e22b3f845f6e7958da
MD5 be205739e641f4476391c72b259cd031
BLAKE2b-256 1fada5e2bd45387253e2790aa193ba57cf1b72f8960e9bde7701454246f78639

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 16698ea6215fa808dcca20c572127f1d4c7ebdab95791e3632f9865bf143844d
MD5 3b771dbb5094025398906e7621311647
BLAKE2b-256 833de744b161f9514cbea998adac335cd6da83184bf26d8bf6c4185e71e37306

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d195f9d220b6415bf5202fef24ca62c47424a1dbf59e3d5b08e771a7bda4781c
MD5 c4b6a0eda907adf2d027c94b8c2b0df0
BLAKE2b-256 623b4bba667d94db9eb2c5fb9f71b95ecc1b598f2df72cd94c79ee3a5763b65b

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b2091516b9a6b4d3776493c21582def4c52ea8705b65735fbede484553e1c07d
MD5 60fa25f927ad68fd39f0010ac882f8cf
BLAKE2b-256 168734f2ec9f6a007e57101e9439168ce41cab44fd8833da861c6e4e35f5f2f6

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1ff591b2ae63561eedc070c0b793e3ed6b0bcbddb5ae943647295b567e2be79a
MD5 1d5186f0cdfc8a1496ed357b0ee2389c
BLAKE2b-256 8e3919c3e0fae77f02e2679e53dbcf7ab3e2ae56770257f2f3b3b8b6bfa5f968

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c41f770075222e259054c6880aabecd736b582f28fe0039f7b2fbd674486f65a
MD5 4ac4f2b7cda36b72ce364871eb9119d4
BLAKE2b-256 a2b2829242cc245af854f2e832bc9bb6117270d367ca906abf9701d9d316f305

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2cc80dcb3c9054f5bcdd4783c19f08a2d017b524f222c7b6bb886487e1c33334
MD5 664341e1bab95bcffa221ec439bf6284
BLAKE2b-256 5a78ec04b0fd7c7050b1770e9c4ffc891fe857425a9a4cff4e68bf7377d72a1c

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 61c238f83b9bbe2228bcdd90f194ed0aa136e19ddbb7c726aa1dbcee32bb2a1b
MD5 33751ad58422d3274c35d4804d62f48f
BLAKE2b-256 b66159df073e8307d48f01710fd20003e1a93a56e30b2ad92df02ead9291bc36

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4abe1f6e8ed333289cb061e133257a2abc1dc9ee486aa9c8d2cc8092fd7baed1
MD5 a605317bb3211769ecd95f8ef8dd8db3
BLAKE2b-256 883740c34488565a8c0fffce864b614df071fa90d43b3ad25818602f41a1f7bc

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a5d97743580bc4ed7bc33589c625af919824142b3e75edaa9fdfaeef98d14605
MD5 9b6cc0e6870ab74e85b8d09a5434f5f9
BLAKE2b-256 1ca90db9605cae83daa8555bb112748ad12c7048862d25af6c9701f20e164547

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2f0587fb1311b613335986eef0ba181000ef1493e24231e14c1c694279900246
MD5 3961c723c23aa9db98e47a237cb7f7ec
BLAKE2b-256 d6916b18a4a53eafc75a685ff41adbe852911d78b0b05969abdeae14685cfe08

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d0d718a21055f19b3a643a5774b459ef35174c2f9262b69eca03ef4478a68349
MD5 1f319b6da3d3ae2ad7a7be1cc1cce4ac
BLAKE2b-256 26d22fc08446c284c7f7c6340068ae4fd78cf0801216f53086086155777ce218

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6802fa023a8deb51b59cba5a611dea426a3a30ad6985dd0c01ac46eabb687cf7
MD5 5981efa26a17909f41101583cf57856f
BLAKE2b-256 68412c737785f8dd466ec8c3e5fbaf24015a767db6d679f01bff334edb22d65a

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 22573d210ba136c3fd76f5f7b4eadcf6510be1a7c42b8f9720ae7c2b7d4191ae
MD5 6ff9de3ffc3974ff5bd2c7c0efce5b00
BLAKE2b-256 75b30bcf951fff11b3b13aa94838d4e6210a5c93556ba784d3c68b52ea7347b9

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 f79124596ce124fe9c0d20040073163361d55932ede0830efc3265425e1a5abb
MD5 5afbc856e49f6a9ac1152c2414cc130b
BLAKE2b-256 b9bb229ce35c9d075a1c7fc8b5810d87d5848c0e2a41b02de4adb9dcc48fc67b

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ba64fe5ec8d9d58e67c955a0b2991529eccd853e8b204f6b4d9c9de3c3c33e4e
MD5 60bf55ca73a41a1c8d832ae98494495f
BLAKE2b-256 39972c0272522d2ccf707c567af78fc4a27233b57ba67f235454ee4ee0becb24

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 74bc3d05312329d3bdab48e73bdcd8b34b843870c5abd5c367ad8d72983349ce
MD5 6e377b8ea704391befc295516c3bfa4a
BLAKE2b-256 4522a7283a4335aa361b740f1a505158f1a699f15855982d553651d7a71d52ee

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8db26be3923aaa1fd56992025834cc3e434d6882245ee064b1b72a4ebf493c24
MD5 7a29c3c24b96e457e013c07736825275
BLAKE2b-256 151bb6afd005d19fffb9d13cac404a9c2f55aaf8147a9cb4e47579a36118bc07

See more details on using hashes here.

File details

Details for the file rk4_sparse_cpp-0.2.9-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.9-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e4c8bda226d4cb02fa71c9a37aa6421bfc0da34a5735ee232075c825fd21bece
MD5 0177aa5896d95043f3edbb6e845b8397
BLAKE2b-256 68348344f0d9c8394bcd04e704b0bebf86ae95a8250a6fd299a65c68072705e5

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