Skip to main content

High-performance sparse matrix RK4 solver for quantum excitation dynamics

Project description

Excitation RK4 Sparse

CI PyPI version Python 3.9+ License: MIT C++17

量子力学的な励起ダイナミクスを計算するための疎行列ベースの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.10.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.10-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.10-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.10-cp313-cp313-manylinux_2_28_x86_64.whl (356.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.10-cp313-cp313-manylinux_2_28_aarch64.whl (311.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

rk4_sparse_cpp-0.2.10-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.10-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.10-cp312-cp312-manylinux_2_28_x86_64.whl (356.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.10-cp312-cp312-manylinux_2_28_aarch64.whl (310.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

rk4_sparse_cpp-0.2.10-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.10-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.10-cp311-cp311-manylinux_2_28_x86_64.whl (352.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.10-cp311-cp311-manylinux_2_28_aarch64.whl (309.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

rk4_sparse_cpp-0.2.10-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.10-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.10-cp310-cp310-manylinux_2_28_x86_64.whl (351.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.10-cp310-cp310-manylinux_2_28_aarch64.whl (308.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

rk4_sparse_cpp-0.2.10-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.10-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.10-cp39-cp39-manylinux_2_28_x86_64.whl (351.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.10-cp39-cp39-manylinux_2_28_aarch64.whl (309.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

File details

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

File metadata

  • Download URL: rk4_sparse_cpp-0.2.10.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.10.tar.gz
Algorithm Hash digest
SHA256 60493127245b4ae387f2b6b6b39c6f7962ad320dcb60f86eddae75748dba37cd
MD5 07ec03bbea2757b1197d471f24e1a608
BLAKE2b-256 488d73b34570c6267392fe08e3d0baf8e611649eb20251770150fab7ffc6c4b8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 582a7c9d9d010a3c456818e713a8a9ea3ebc7e2745cd52d0195418d8c2ad3ceb
MD5 42aea7afd110c50e0667ed0e740ee724
BLAKE2b-256 440a4feeae5235df8ba75374c466fabe3c29adb61e97763b214e827da2aa30c5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4819ecb6487f3127a8b9ac03c9f43b6313e45e70c40a91831d984da487871722
MD5 7ba5763402cfb908951e8bad3b3f3d50
BLAKE2b-256 789dd597d4a7bf51bca2fd3a252d514673073d94692023a75b99e29219939c0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 50b8eeedf8a94773197199793c6242071c93cd9f9e2a148986f20d2907e46fe4
MD5 cd4275ef6d7d7c7f45e2cf51b82c890c
BLAKE2b-256 df3f86325af9dc74ef5f554dc35a685ee42da6a1be7a2f5b276df8affb8594e0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a2cd2bebc6f2c10e069a992ae9b6556957fc82e3261a40e4fcff3e720f3ba46a
MD5 c2b755dd96c23541fd10adb7bab03b6d
BLAKE2b-256 d741e4c99a9b3364755829b899e75a8c5a4ee69b484efd9215a1aa038089d529

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 c47eaabf8c48947727d74b55e85fc54f39700cdcf7baea85b50610907cb60b3c
MD5 68427fa831f344c48a7af81d2d602f66
BLAKE2b-256 918affa4b26b79eae60551c3a4c2d6594131c023b80e14de68c61b7bb887e7a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6f18405a058a8a8ffea6fda71e54ebb8f7e9fade9fd1c7852649ce17a899a033
MD5 8068a7a7d09991cf20bf380397ac6a7a
BLAKE2b-256 a7eb0c77eae2cef4978a6e00afa4904ed6b716968265f9ef22301e9d28cc8e87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9a043a089ae05aa02c9e426b5be617cd5523c0cf7697afc6def18857188b3f5f
MD5 3ccee1bca5c2d443e15a7f0d96599294
BLAKE2b-256 54a092d829b3b4890e656a75b2fc84c74317ea0ca59f62344401220c810e2360

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 51d082265bf8583e9cd00f615bdf1a90b5a17dd3f6ee872e3f35383c19f91478
MD5 47cc544c6dd87223f595dc2ba4ec945d
BLAKE2b-256 a8a23428b32838c5fb21a628e1f325b5879e1b4d56b5726643c2c7917157bbf4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 318c331e65e9275fec5a82df6101fcb55d04d0a6ab42d0a66ff434c84c3f6059
MD5 54446c8339ac5234dc1a9478d3fa3039
BLAKE2b-256 513a02f69cd3897e4ff25a88277d9acb1662e5e55726d114f4683fab668d90d0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f9f5a36bc3fe36239f8091740d925b38945ceea9cbe3ca76112417fd11e03ab4
MD5 ff4506facbca07a0aeca3597a16dc591
BLAKE2b-256 c809d61e9e8aba08a066974b38a47efb9978377438584df7981672390ddf87e9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 070f2838005a1a69ecd8fd424d9efd9b1748782e1f29043c29b29c0eea418947
MD5 eced35350007e93208e03bbe9d74efff
BLAKE2b-256 b5ebdcf895c9d4f1f62fdd6dccfa189034ab0997012431aeb1045445418e9385

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b5474340acad1f7c6607dfcd41c5aed467d82fede007522337bb878672c860d0
MD5 6edbb8b2da4ab4598a146b1dccf7ccb1
BLAKE2b-256 df9ef20cd16a65cb3684630f7c5e148befe6d36b300545f39add8a676be50c70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3378b27dc6cd0d9aefc26c697877c433e483ec10cc47c7e628262cb4e40c0e9e
MD5 55137d4ada7152999fdeb63c69569456
BLAKE2b-256 480e36866b20bfd08fa05981ae893f71df4b054ef781a90dfbadf61e3c436658

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7b348bf01ed5b826292127f8f02de5249a0ffee6b2e124c1bd4bafd964f4479a
MD5 174e579a9976fe9ff9e4f8100ee8e432
BLAKE2b-256 33e600c2ceec9058b069837e1b6d47c1e8af92284f4caf022f5ea2c504b06c70

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2adf48b2cbd6664199e7ae2b6cd1ff0ae01032664f9b9d00fab22445b26244b1
MD5 ec40985ebf3072b597ba9f723ae87ff1
BLAKE2b-256 17f11bb263bdef18b13c2fdc4342088172170167b2d635786d84eb2138612b5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7bb870c9b4c0d6f1e120ad7232cbe714723fc1906ce55fd2555d692e1b33748f
MD5 287bb7cd185ca8191d7989a5f6065b19
BLAKE2b-256 d270439aea078e8032f8cad6209b7af67ddd1afe1d8f23fbe930a68b859151ad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 17841599f489e4dd06b05231d18219deecf7e820bd4f842df177d443731fdfaa
MD5 91598bc81b63e87d1a820f094d300ca4
BLAKE2b-256 5cedd8e1c66de927209eb6ab3c2dda626d3134b2df782a4f1dfb5ed6be6b8f6e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ca62c1f680b52d2035910721d0e0f3e1c0c1fb9407c606c1d9dccb035fa2f5f9
MD5 86e912bd2abeca14fbd85f79c6791fea
BLAKE2b-256 631b7b4662c3430beeb4eaeb747e8ea3b954be52aeb2c28ac027bc785bbb20ea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d2d82ffa2b7e2de076f8a207b57c336db5a7cac5a53c6f4b797c0910e51a60ce
MD5 89c25d0385951f12d55cab5cc2d2130d
BLAKE2b-256 a6dda6877c3bf3ddc2aacbf1e972e1633c87e366ac6b7ab58e748bd2d5f6ac0b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.10-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9e6da383de233884a4fcdb7813707ec28803df7e06cc7fe478186142f7468f75
MD5 cc895da8c2095d5c3d470f0ceb94b5d7
BLAKE2b-256 81a3f437ba829ab1a91299482982c88a120a24ce986983e607fd245fd6074dc9

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