Skip to main content

CUDA kernel library for Kestrel

Project description

kestrel-kernels

Precompiled CUDA kernels for Kestrel, a high-performance inference engine for Moondream, the world's most efficient vision-language model.

License: These kernels are provided for use with Kestrel only. Other use is not permitted.

These kernels target NVIDIA Ampere/Ada/Hopper GPUs (SM80/SM86/SM89/SM90) and are distributed as precompiled shared libraries for fast installation without CUDA compilation.

Kernel Library

CUDA Kernels (compiled via CMake)

These kernels are implemented in CUDA C++ and compiled during wheel build.

activation - GELU Residual Activation

Computes GELU(h) * (g + 1) fused gated activation used in MoE expert layers. The input tensor is split in half: h passes through GELU, g acts as a gate with +1 bias.

Tokens CUDA PyTorch (eager) Compile vs PyTorch
1 3.8 us 64 us 63 us 17x
64 2.9 us 49 us 69 us 17x
740 3.5 us 49 us 68 us 14x
1024 3.9 us 49 us 68 us 13x
2048 5.1 us 49 us 68 us 10x

PyTorch eager launches separate kernels for slice, erf, multiply, and add, with intermediate tensors hitting global memory. Our kernel fuses everything into a single pass. torch.compile is slower than eager here, likely because the dynamic x[:, :hidden] slicing prevents effective fusion.

fused_linear_residual - Linear + Bias + Residual

Fused out = x @ W.T + bias + residual using cuBLASLt epilogues.

Crops Tokens CUDA PyTorch (eager) vs PyTorch
1 729 9.0 us 24 us 2.7x
2 1458 12 us 24 us 2.0x
4 2916 16 us 29 us 1.8x
8 5832 46 us 50 us 1.1x
13 9477 44 us 77 us 1.7x

cuBLASLt epilogues fuse bias addition and residual into the matmul, avoiding extra kernel launches and memory traffic.

fused_mlp - Fused MLP with cuBLASLt

Fused out = residual + gelu(x @ W1.T + b1) @ W2.T + b2 using cuBLASLt epilogues.

Crops Tokens CUDA PyTorch (eager) vs PyTorch
1 729 43 us 56 us 1.3x
2 1458 72 us 89 us 1.2x
4 2916 97 us 124 us 1.3x
8 5832 214 us 259 us 1.2x
13 9477 283 us 379 us 1.3x

MLP is matmul-dominated so the speedup is modest. The gain comes from fusing GELU and residual add into cuBLASLt epilogues.

kv_cache_write - KV Cache Write with FP8 Quantization

Writes BF16 key/value tensors to FP8 paged KV cache with quantization.

Tokens Kestrel vLLM PyTorch (eager) vs vLLM vs PyTorch
1 3.7 us 4.9 us 67 us 1.3x 18x
8 3.5 us 4.8 us 35 us 1.4x 10x
64 3.7 us 4.8 us 35 us 1.3x 9x
256 4.1 us 4.8 us 36 us 1.2x 9x
1024 8.6 us 9.7 us 51 us 1.1x 6x
4096 31 us 46 us 124 us 1.5x 4x

Fused K/V processing and optimized vectorization provide 1.1-1.5x speedup over vLLM's implementation.

layernorm_cuda - Fast LayerNorm Forward

Optimized LayerNorm forward pass for common hidden dimensions.

Vision Encoder (N=1152):

Crops Tokens CUDA PyTorch (eager) vs PyTorch
1 729 3.9 us 8.4 us 2.2x
2 1458 4.2 us 8.4 us 2.0x
4 2916 5.5 us 10 us 1.8x
8 5832 8.3 us 18 us 2.1x
13 9477 18 us 28 us 1.6x

Text Decoder (N=2048):

Context Tokens CUDA PyTorch (eager) vs PyTorch
decode 1 4.2 us 8.4 us 2.0x
prefill 740 3.7 us 8.4 us 2.3x

Specialized kernels for N=1152 and N=2048 use 4 rows/block with warp-only reductions, avoiding shared memory overhead. Two epilogue strategies trade register pressure vs memory bandwidth.

moe_sum - MoE Output Summation

Sums the weighted outputs from top-k MoE experts back into a single hidden state per token. Computes out[t] = sum(expert_outputs[t, 0:k]) where each token selects k=8 experts.

Context Tokens CUDA PyTorch (eager) vs PyTorch
decode 1 3.0 us 5.6 us 1.9x
batch 4 4 3.0 us 5.4 us 1.8x
batch 16 16 2.9 us 5.3 us 1.8x
prefill 740 5.5 us 10 us 1.9x
long 1024 10 us 15 us 1.5x

Vectorized 16-byte loads (8 bf16 at once), fully unrolled k=8 reduction. FP32 accumulation provides better numerical stability than bf16 accumulation. Note: vLLM has a similar kernel, but only supports topk=2,3,4 and falls back to PyTorch for topk=8.

rotary_embedding - Rotary Position Embedding

Applies rotary position embedding to query and key tensors (n_heads=32, head_dim=64).

Context Tokens Kestrel vLLM PyTorch (eager) vs vLLM vs PyTorch
decode 1 3.3 us 4.9 us 118 us 1.5x 36x
batch 4 4 3.1 us 4.5 us 117 us 1.5x 38x
batch 16 16 3.1 us 4.7 us 117 us 1.5x 38x
prefill 740 5.0 us 8.0 us 119 us 1.6x 24x

Vectorized bfloat162 pair processing, shared memory caching of cos/sin values, FP32 math for numerical stability. Split-head kernel for decode increases SM utilization on small batch sizes.

fp8_quant - FP8 Quantization

Converts BF16 tensors to FP8 (e4m3fn) with per-row dynamic scale computation. Used for quantizing MoE activations before FP8 GEMM.

Context Rows CUDA PyTorch (eager) vs PyTorch
decode 8 3.1 us 53 us 17x
batch 4 32 3.1 us 52 us 17x
batch 16 128 3.1 us 52 us 17x
prefill 5920 6.6 us 67 us 10x

Two kernel variants: warp-per-row for large batches (better SM utilization), block-per-row for small batches. Vectorized 16-byte loads/stores, fused absmax reduction.

tau_tail - TAU Attention Scaling

Applies per-head TAU scaling to Q and V in packed QKV. Computes scale = tanh(tok_linear) + tau_pos_table[position] then scales each head: Q *= scale_q, V *= scale_v.

Context Tokens CUDA PyTorch (eager) vs PyTorch
decode 1 4.6 us 45 us 10x
batch 4 4 4.4 us 46 us 10x
batch 16 16 9.0 us 88 us 10x
prefill 740 6.5 us 63 us 10x

CuTe DSL Kernels (precompiled for wheel distribution)

These kernels are written in NVIDIA CuTe DSL (Python) and precompiled to .so files during wheel build. The kernel source templates are excluded from wheel distribution.

Current runtime status:

  • Production runtime for these kernels still uses the CuTe-generated AOT shared library path, loaded through the existing tvm_ffi wrapper.
  • We now have a DLPack-based direct-cubin topk path in the source tree that does not use cutlass, libcute_dsl_runtime, or tvm_ffi in the migrated hot path.
  • That path builds the kernel on Linux, ships the emitted cubin plus manifest, and launches it through _pybridge using the DLPack C exchange API for tensor and stream interop.
  • On B200 (sm100), the preallocated topk direct-cubin path is now at parity or better than the current production-style precompiled path:
    • batch 257: 6.77 us direct cubin vs 7.24 us existing precompiled path
    • topk_fwd, batch 257: 8.95 us direct cubin vs 9.79 us existing precompiled path
  • On the Windows L4 dev host, the same Linux-built sm89 cubin ran successfully through the rebuilt _pybridge path with correct results and correct non-default stream behavior.
  • The long-term runtime direction is now: Linux-only CuTe builders, bundled cubin artifacts, _pybridge launchers, and torch-c-dlpack-ext as the dependency that guarantees the DLPack C exchange API is available for runtime interop.

Design notes for the ongoing refactor live in docs/CUTE_RUNTIME_REFACTOR_DESIGN.md.

topk - Bitonic Top-K Selection

GPU top-k selection using bitonic sort network with optional fused softmax.

Context Tokens Kestrel Quack PyTorch (eager) vs Quack vs PyTorch
decode 1 23 us 29 us 17 us 1.3x 0.8x
batch 16 16 22 us 27 us 17 us 1.2x 0.8x
prefill 740 22 us 28 us 17 us 1.2x 0.7x

Note: Currently slower than PyTorch for N=64, k=8. PyTorch uses radix-based QuickSelect which is more efficient for small N. Algorithm should be revisited.

An experimental direct-cubin runtime also exists for topk in the source tree. It demonstrates that this CuTe kernel can be built on Linux and run through our own native launcher on both Linux and Windows without a runtime dependency on cutlass or tvm_ffi.

Python API:

from kestrel_kernels.topk import topk_fwd

values, indices = topk_fwd(scores, k=8, softmax=True)

sampling - Top-p Token Sampling

CuTe DSL rejection-based top-p sampler for probability tensors.

Runtime dispatch uses the CuTe kernel path by default on CUDA, with fallback retained for unsupported cases and runtime errors.

Benchmarks below are H100 (sm90) dispatch-like timings (uniform generation + kernel launch), measured with heavy warmup and interleaved randomized runs:

Shape (batch, vocab) Kestrel CuTe FlashInfer vs FlashInfer
(1, 51200) 17.37 us 20.78 us 1.20x
(4, 51200) 21.17 us 21.84 us 1.03x
(128, 51200) 38.96 us 42.44 us 1.09x
(32, 1024) 15.25 us 20.50 us 1.34x

Python API:

from kestrel_kernels.sampling import top_p_sampling_from_probs

sampled_ids = top_p_sampling_from_probs(probs, top_p, generator=generator)

cute_moe - MoE Matrix Multiplications

Grouped GEMM kernels for Mixture-of-Experts layers, written in CuTe DSL for H100 (SM90). Supports BF16 and FP8 (W8A8) precision with both warp-level and WGMMA variants, automatically selected based on batch size.

FP8 W8A8 Full MoE Layer (up + activation + down + sum, E=64, k=8, with CUDA Graphs):

Context Tokens Kestrel vLLM (Triton) vs vLLM
decode 1 29 us 51 us 1.72x
batch 4 4 79 us 103 us 1.30x
batch 16 16 146 us 169 us 1.16x
prefill 740 245 us 481 us 1.96x

Python API:

from kestrel_kernels import (
    invoke_cute_moe_up,
    invoke_cute_moe_down,
    invoke_cute_moe_up_fp8,
    invoke_cute_moe_down_fp8,
)

# BF16 up projection
out_up = invoke_cute_moe_up(
    hidden_states, w1, w2,
    topk_weights, topk_ids,
    sorted_token_ids, expert_ids, num_tokens_post_pad,
)

# BF16 down projection
out_down = invoke_cute_moe_down(
    moe_out, w3,
    topk_weights, topk_ids,
    sorted_token_ids, expert_ids, num_tokens_post_pad,
)

moe_align - MoE Token Alignment

Prepares sorted token indices for block-sparse MoE operations. Given topk_ids, outputs sorted token IDs grouped by expert for block-sparse matmul.

Context Tokens Kestrel vLLM vs vLLM
decode 1 6.7 us 9.8 us 1.5x
batch 4 4 6.5 us 9.8 us 1.5x
batch 16 16 7.0 us 10 us 1.4x
prefill 740 12 us 9.2 us 0.8x
long 1024 12 us 9.5 us 0.8x

Uses optimized single-CTA shared-memory histogram for decode (numel < 1024). Prefill path needs optimization.

Python API:

from kestrel_kernels.moe_align import moe_align_block_size

moe_align_block_size(
    topk_ids, num_experts, block_size,
    sorted_token_ids, expert_ids, num_tokens_post_pad,
    expert_map,  # optional for expert parallelism
)

gelu_residual - GELU Residual Activation (CuTe DSL)

CuTe DSL implementation of GELU residual activation for BF16. Computes GELU(h) * (g + 1) fused gated activation used in MoE expert layers. Uses vectorized memory access and streaming stores.

Context Rows CuTe CUDA PyTorch vs CUDA vs PyTorch
decode 8 2.3 us 2.5 us 7.5 us 1.10x 3.3x
batch 4 32 2.4 us 3.0 us 8.6 us 1.24x 3.6x
batch 16 128 2.6 us 2.9 us 8.9 us 1.09x 3.4x
prefill 5920 9.9 us 11.2 us 55.9 us 1.14x 5.6x

fp8_quant_cute - FP8 Quantization (CuTe DSL)

CuTe DSL implementation of FP8 row-wise quantization. Converts BF16 tensors to FP8 (e4m3fn) with per-row dynamic scaling.

hidden=1024 (MoE down projection input):

Context Rows CuTe CUDA vs CUDA
decode 8 2.5 us 2.7 us 1.09x
batch 4 32 2.8 us 3.0 us 1.07x
batch 16 128 2.8 us 3.0 us 1.08x
prefill 5920 5.3 us 6.6 us 1.23x

hidden=2048 (MoE up projection input):

Context Rows CuTe CUDA vs CUDA
decode 8 2.6 us 2.7 us 1.02x
batch 4 32 2.9 us 3.0 us 1.04x
batch 16 128 2.9 us 3.0 us 1.04x
prefill 5920 8.2 us 10.7 us 1.31x

flash_attn - Flash Attention (Prefill & Decode)

Flash Attention kernels written in CuTe DSL, with a dedicated decode path optimized for paged FP8 KV cache. 1.3-2.5x faster than FlashInfer on typical Moondream workloads.

  • FP8 KV cache with per-tensor scaling
  • Paged KV (page_size=1) for fine-grained memory management
  • CUDA graph compatible
  • Causal and prefix-LM masking, variable-length sequences, GQA/MQA

FP8 KV Paged Decode (with CUDA Graphs):

Batch KV Len Kestrel FlashInfer vs FlashInfer
1 740 9.6 us 12.9 us 1.34x
1 1024 8.7 us 13.1 us 1.50x
4 740 17.1 us 23.9 us 1.40x
8 512 10.0 us 25.2 us 2.51x
16 256 9.6 us 17.6 us 1.83x
32 128 11.8 us 26.5 us 2.24x

FP8 KV Paged Prefill:

Seq Len Kestrel FlashInfer vs FlashInfer
740 19.9 us 47.6 us 2.40x
1024 27.3 us 58.9 us 2.16x

Python API:

kestrel-kernels is shipped as an inference-only backend for Moondream/kestrel; flash_attn has a single forward entry point. Pass fixed-length tensors with seqlen_q / seqlen_k implicit in the shape, or paged/varlen tensors with page_table / seqused_k / cu_seqlens_*.

from kestrel_kernels.flash_attn.cute.interface import _flash_attn_fwd

# Fixed-length attention
out, _ = _flash_attn_fwd(q, k, v, causal=True)

# Paged / variable-length (one call handles both — pass whichever kwargs apply)
out, _ = _flash_attn_fwd(
    q, k, v,
    page_table=page_table,
    seqused_k=seqused_k,
    causal=True,
)

Autograd wrappers (flash_attn_func / flash_attn_varlen_func) and the backward pass were deleted — this package no longer supports training.

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.

kestrel_kernels-0.4.5-cp314-cp314-win_amd64.whl (47.5 MB view details)

Uploaded CPython 3.14Windows x86-64

kestrel_kernels-0.4.5-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (11.7 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64manylinux: glibc 2.35+ ARM64

kestrel_kernels-0.4.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (45.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.31+ x86-64

kestrel_kernels-0.4.5-cp314-cp314-macosx_13_0_arm64.whl (537.8 kB view details)

Uploaded CPython 3.14macOS 13.0+ ARM64

kestrel_kernels-0.4.5-cp313-cp313-win_amd64.whl (47.2 MB view details)

Uploaded CPython 3.13Windows x86-64

kestrel_kernels-0.4.5-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (11.7 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64manylinux: glibc 2.35+ ARM64

kestrel_kernels-0.4.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (45.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.31+ x86-64

kestrel_kernels-0.4.5-cp313-cp313-macosx_13_0_arm64.whl (537.9 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

kestrel_kernels-0.4.5-cp312-cp312-win_amd64.whl (47.2 MB view details)

Uploaded CPython 3.12Windows x86-64

kestrel_kernels-0.4.5-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64manylinux: glibc 2.35+ ARM64

kestrel_kernels-0.4.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (45.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.31+ x86-64

kestrel_kernels-0.4.5-cp312-cp312-macosx_13_0_arm64.whl (537.8 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

kestrel_kernels-0.4.5-cp311-cp311-win_amd64.whl (47.2 MB view details)

Uploaded CPython 3.11Windows x86-64

kestrel_kernels-0.4.5-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (8.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ ARM64manylinux: glibc 2.35+ ARM64

kestrel_kernels-0.4.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (45.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.31+ x86-64

kestrel_kernels-0.4.5-cp311-cp311-macosx_13_0_arm64.whl (536.5 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

kestrel_kernels-0.4.5-cp310-cp310-win_amd64.whl (47.2 MB view details)

Uploaded CPython 3.10Windows x86-64

kestrel_kernels-0.4.5-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (11.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ ARM64manylinux: glibc 2.35+ ARM64

kestrel_kernels-0.4.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (45.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.24+ x86-64manylinux: glibc 2.31+ x86-64

kestrel_kernels-0.4.5-cp310-cp310-macosx_13_0_arm64.whl (535.2 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

Details for the file kestrel_kernels-0.4.5-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1ec42b5dd08a41e8a9a4a5403b6890acbcf433c3479eb9e8b0f91a2b516d061e
MD5 53c43b5751912979e58397ff2db1e412
BLAKE2b-256 ae18a1cb279b4d1a09daf60903800dac7a775fc4a79ec552c9f7a5d5bd0bd8f8

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 33ae9cb8e818fbb8f4f011faebc9b376e4eaba7a1366f6fe3d15978c8393a2b5
MD5 aeb667a00c04b92d9853bf06ec277668
BLAKE2b-256 89e30fc9f5148027326d6845631fe5e40541555e845ef68df8aabec8fca655fa

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 cd1105029d26d7fe8c70ed20598a7990c82acb65ba33bd2712d03bbe43374dd6
MD5 8be255aeba6010ea2ebedf9bedf36ba0
BLAKE2b-256 6c3712cf2d217eb084a5bba7f0224017369c6a73bb7a633a6e3c860bd02875a9

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp314-cp314-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 e5b1b90aa17357c10335aace3bf08d7bb71b2903c3e22f8d435166428ec80022
MD5 e61d5c1842e16964de3b32bc20c7ad41
BLAKE2b-256 49dfc6523d499d17a8751fe931123ca0625bc5c74dcd6aaebbccea9164a09407

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 fd03debb8f7e4b08cd2d3df4924501429d9f566e30e2011e8fe5a90b7a002c73
MD5 751363e8eaa04e538a6d66a8f4cf3f2d
BLAKE2b-256 afa4042ba532592d028b266eec1f9579f602fb9bb3a54ef0af22adaa0e9a082d

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 c24cbfeb6fffe48dff9dc41e888aabc4f482289865237ea6f31d6fd852d56a6f
MD5 578eb260ae47c9edb140355763b9e8a0
BLAKE2b-256 03b71da1ba67d2e1af11b5cefbe31ef5562b99cf86d982fb881bf9daafa8a0c9

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 95a0e6e327d8d23bbec1088e0c7e5ab4d16de8b38d8a50104120f4fa7f4f1051
MD5 3fc79223f83ef44926c65068f9677fe8
BLAKE2b-256 8c3e2f15addcea4531bc84b80bb9a45177a24580c061090294aa286091d4c573

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp313-cp313-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 566b109ebe222b9423750d782ecec2c7c1833561067be055136e0b71e42611c2
MD5 6fb651b55845c845bc662d156d20abbb
BLAKE2b-256 dff52482ad8da309b86761b1f9a0eb430318a47ed68fffaed4ff435d50ff6e08

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 fdacc338c4fa881636479bc9f87259d4f62b5d461220e325ca627eea2627e657
MD5 83d8a3ddd91ede0c73fdb35e1b4bb03a
BLAKE2b-256 8b64ce2935bc6c5a6acd962edeb339d516ed4fd86f23b5af9cfc758f98934c3c

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 d59995381cd5dddd44fc0001577a000ed31cab2fdef7a38d5e25a61f88af756b
MD5 64ad3ec400a71aba1b7b8abd3a8bef18
BLAKE2b-256 e323e64c6985cb13d352c6a4c5c954d4fb66383aafd4e06f665e57934bf1afab

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 1c9e856a64bd3d214df48ef4ceb6f39be2dd5770bf947f89e7bce1a59b307a92
MD5 be39a29e7d90f3886323ee1d0a24993a
BLAKE2b-256 39dd5f54f386b1430d5eb16a4ace812544d0c066866b9db73e992767de1c55a5

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp312-cp312-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 f0493313981b8a83d32f86e1d96f17fe958ad7d70d1eceb673352412bba67861
MD5 cf8aba3f32b18ab5165d0a59baf527e9
BLAKE2b-256 47db8da21602961eb56f92abf236654cadce54226f0eae3c938b167109038384

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 b581445b0e1271873f06aaf00dd9c8f8155bf830e16717e75a2c95187a5f9577
MD5 eeff209695f4e97c2c11476996ac9dd2
BLAKE2b-256 ba7e51adcbcbe9aff0ab215623a581109c526c1d2a50b65b1c01e56ff7c79386

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 8808305141509f8bf2fd69f15b2f92ba16c2de96be87469af6e66dc51a754ef3
MD5 23cda700e906d94f62378f295caf568d
BLAKE2b-256 53ca34ad24e642494407ff4011b4187585af598e9344ecff1a4bdd80f5797b6b

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 9d1c08571616a1eaf8fd755591bfac85f8038a80d79e5563f72213a20fc3c61d
MD5 eb510c5eaad19a970e1b097d92329f76
BLAKE2b-256 03792be5442c168b572d65be8ac30fad53a5d61a9fabcc5179ba37701f1e7be8

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp311-cp311-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 45448596f8071ebb2858a5ad0928a7f4f84d181da1c3bb8f070a2ae9d59d80a9
MD5 d68cff83c85c1aab07b240b909fff1bf
BLAKE2b-256 cd5aae19050c80d8aaf834a4967dcdf0ebe5b4dda340d60b076c024ffd9c3084

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 88056532f9d9de7598402bf39ee64e9133cb9bb12ab264a32d0fbabd17624256
MD5 36b6d967ac9a32e5b7ea5d8833b61e49
BLAKE2b-256 e4b3054e26283c317d32b3954b7999e86ba068338bcff2d1e6c56612d54aff2f

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 cffdef1a0da81b0d374b2fc9697b55ae75774bac9d41ed0b12b3bb0cdb91a352
MD5 89c519e5fc00ae3b434bc63c2f6f66c2
BLAKE2b-256 66eee7238f8bf963b0b0fd45659a52fafa293345eb9a92df2d2b8242994547cc

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 41bffbcaae513ba4ff2b441553986867160fc2576e9881458492e9522dfd3569
MD5 4b5f29db1de77f9a691c2a352835fc6f
BLAKE2b-256 333f5cd3467336d8c8cad214af4a83d8829eb5c7ff5040e32d7f40963bdf375a

See more details on using hashes here.

File details

Details for the file kestrel_kernels-0.4.5-cp310-cp310-macosx_13_0_arm64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.5-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 1b6ba63c916cde21f174b331e3bc8e147460fd2bf7f6637019281d280f636e8b
MD5 6ae9420c5d99a17975f0ce8b562965dd
BLAKE2b-256 9e9e66158b978ecb8b5133c51151c1eaf40e7069a1ca1b8a92957f71628b4f54

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