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.8.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.8-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.8-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.8-cp313-cp313-manylinux_2_28_x86_64.whl (353.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.8-cp313-cp313-manylinux_2_28_aarch64.whl (307.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

rk4_sparse_cpp-0.2.8-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.8-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.8-cp312-cp312-manylinux_2_28_x86_64.whl (353.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.8-cp312-cp312-manylinux_2_28_aarch64.whl (307.2 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

rk4_sparse_cpp-0.2.8-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.8-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.8-cp311-cp311-manylinux_2_28_x86_64.whl (349.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.8-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.8-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.8-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.8-cp310-cp310-manylinux_2_28_x86_64.whl (348.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.8-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.8-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.8-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.8-cp39-cp39-manylinux_2_28_x86_64.whl (348.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

rk4_sparse_cpp-0.2.8-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.8.tar.gz.

File metadata

  • Download URL: rk4_sparse_cpp-0.2.8.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.8.tar.gz
Algorithm Hash digest
SHA256 c99ff4e0101b48db5d699831ce4a7f186d1643ac1a3ccb5adf31891697d9808f
MD5 01e742e86e7f35555328539c5c731da3
BLAKE2b-256 41c6338ac75f3ee2d2fff16835436205f26829c2b39b0db36cbc50ed64989036

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 3d32845fc94f3edcd3911ed624f5b100cb83a291ac2293bb6c54b3e6cdcf8efd
MD5 496d4ed8e23c6323636a4f3a1d384010
BLAKE2b-256 ceb9131636a2c17b66704a35c709d0ada21fafb8ed4398d492d388eca7420466

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 af59b88d6ec8841a13d1e2b74300a74eae01e4dc6cd410494a6e08233f8a2e48
MD5 66957a6a45c3866511cc9dfe937410ec
BLAKE2b-256 b3f6bac8865f722f1323a716567a14bb5e588401bd93b192379734fd34b33534

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 93bf0c577d2271d4712fd5ee03af3a451e2846966985a4c71588f361aaeb58e0
MD5 9177b064401c0409e98e258693f91a4c
BLAKE2b-256 7c74d4117cd3afeb9afe35a71a8441a414d17f43bf0f686a6b9a861b69e417c8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 1dd02b711838e2ee22c0941a08171a43712e0c45772ba25daea24aa55b6ea0ae
MD5 caae221300430d27b8643f5dd19b68e9
BLAKE2b-256 a0a4368411b2d8bd72cdaac25855ba1a2d63c80099c57a5cc9c7096a12cb6e38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 07d747a9af9ccca88fc86e21a6d312c2f9ce60a5055a4cb7197e5ee8da055cfb
MD5 aebe49861629aa52fe00867d86badd67
BLAKE2b-256 c41cc6436f554c70e1fef395fc60969aa0dff1c0c42f6556414544f538068a29

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 13a52956202905d40c4f0d39eb7523b835e1b8dd3852a5b9d64c16decd35706e
MD5 af82dc2c78f423c46ce3b9d25742e96e
BLAKE2b-256 32f41af3cf035f4b97dd79f36745fefb314bd1a04b43c0ae45972b0a4d797ac8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 011c025bd8903e6c2b70cc5a4bbb952c273ee5a2c561c23b97b80fb13edb6ceb
MD5 8d164f7009d7bd0045b02c44edc73527
BLAKE2b-256 8c37c8ae48e9095fccc6d4f3dc5e83883f29c5cc1c866ce04e60a7b17d1316a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3030c1e1d8f61592eae8763bb47cc0f9746c1d8b1b83cac3d93cb4b69afcbba4
MD5 cf621fd69cd50ad6b78176cdb647da42
BLAKE2b-256 011fd56a8908af94c3e84e29e135c77d3af6d6c124ba6ffbc8f697c750cb6063

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5f4ab58b324a948431528eae2aec4a4a70896d669b2d36832783a40bffd44e34
MD5 3b9b9ec6c083bd9a1113af6d7a656b25
BLAKE2b-256 603601ca2256e60e4f8c40605630ea007719a50884192a065a18564e95bc5ff8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 763fdd0fdae3b20fc1aaa00caffd183e07e031db39867dfe17f1dcf6318736eb
MD5 75c4387e3a0d1fb71903776163d47c92
BLAKE2b-256 e165363eb8b3f8e8cbff9b864bc84dd62607393ac8d69e04d6081e3eaf1d807d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 291ecd658706b38c39d93c4c2c12cfe95d9f3e19774b53d3402bff0d4150021c
MD5 d735c4c31ea91cbf2fc06f994f27c4f2
BLAKE2b-256 f9e561c28df511870fc58a501149a09ae504b9fae81a875b621f0a715fa92094

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7314e878b519ae3188ec9362f70daaf0a0b9ec019645dbf93af5a37049a60994
MD5 a9f063973bb1c4ccf8a86ef2be58b97c
BLAKE2b-256 8e4223ac1cb1ec045e3ff5398a5eb7c49adf5450c7bd1f78168c073837812aa0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d1b5fcfe5ab57be4bd6e2032179e977842885247ce6497d8569f03a3f02f26a4
MD5 90a658a59a83fc968ca25b3c46c8917a
BLAKE2b-256 6b634254da33640b116307d9c5921a14fbe6bd398530b94e483ea8154f43c927

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 08b566ac3ab1d1be77732d759ecd59b3b081b8a90620377866a4f58f43c8eb82
MD5 4fff22bc337cff5e44f252a887876ff3
BLAKE2b-256 e5af7d826919e1315e0d18bb60d7a036d7f390321f95337fe6b2a53e6fc8cf61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cd82e3e89ecd51c88180315544113a614b850b3b73301e30460e46c12ad8802d
MD5 dc5b90f899ed6e926c84fc8470ae652a
BLAKE2b-256 11ab7cd18ac4688a06303f747259d8af61bbb3728bb9c8d7ebdc3e684a0bd185

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 54b868e4cec5aef1a4fa20fd3fd1d3cb67acc5ced25fc204eb64ca5efd89b5dd
MD5 21b4b68fa8719b75926f90a50b3f16c0
BLAKE2b-256 4b77a8b8b0cc706dbbb8b1ed7a55df4261bab085c3aad3f3178882dfbf6388bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f6e808b5d8ec8e41e3adff7c7d4ad4cc2f1557c77f1423945870e84acf53f8e1
MD5 b6c622f4dcae67a990ea1562859b6467
BLAKE2b-256 df9d64ef2cca38672bdacfa4d4762fcc3df07643c90e99e1ed659feeba3f54ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 bb42dc0807127bae6f15a3d3c087afc75a4cbe0ace00054ce1e71be4c2527d32
MD5 eaa215834e53a85ddcb4732a988da7a4
BLAKE2b-256 833690c755a77b01fc53cb32f0b99a3ac7b442dc66c790099b5e43abb063efe8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d3f6616a577092e41327ae848f389af7feca8d598b66e36485120af5b2cb3803
MD5 3602a89ac0addff7919cea1842581b2c
BLAKE2b-256 c6a1f0f64812e721be907fbc8542a61aaa882e3763ab5c3d671c2e30417c7294

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rk4_sparse_cpp-0.2.8-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 668e2ee119d5e2c869c786b455218f26bb77d2d8397de39bf72692696cd6dfd0
MD5 c6638040bfd50ed0839843e96103b0b1
BLAKE2b-256 7559eefdf719bfa0b88b9a147be5b671334b2ff8eca2aee5c2c70ee37f763114

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