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.3-cp314-cp314-win_amd64.whl (44.3 MB view details)

Uploaded CPython 3.14Windows x86-64

kestrel_kernels-0.4.3-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (17.8 MB view details)

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

kestrel_kernels-0.4.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (42.3 MB view details)

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

kestrel_kernels-0.4.3-cp314-cp314-macosx_13_0_arm64.whl (435.2 kB view details)

Uploaded CPython 3.14macOS 13.0+ ARM64

kestrel_kernels-0.4.3-cp313-cp313-win_amd64.whl (43.9 MB view details)

Uploaded CPython 3.13Windows x86-64

kestrel_kernels-0.4.3-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (17.8 MB view details)

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

kestrel_kernels-0.4.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (42.3 MB view details)

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

kestrel_kernels-0.4.3-cp313-cp313-macosx_13_0_arm64.whl (435.0 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

kestrel_kernels-0.4.3-cp312-cp312-win_amd64.whl (43.9 MB view details)

Uploaded CPython 3.12Windows x86-64

kestrel_kernels-0.4.3-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (17.8 MB view details)

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

kestrel_kernels-0.4.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (42.3 MB view details)

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

kestrel_kernels-0.4.3-cp312-cp312-macosx_13_0_arm64.whl (434.9 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

kestrel_kernels-0.4.3-cp311-cp311-win_amd64.whl (43.9 MB view details)

Uploaded CPython 3.11Windows x86-64

kestrel_kernels-0.4.3-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (17.8 MB view details)

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

kestrel_kernels-0.4.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (42.3 MB view details)

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

kestrel_kernels-0.4.3-cp311-cp311-macosx_13_0_arm64.whl (434.1 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

kestrel_kernels-0.4.3-cp310-cp310-win_amd64.whl (43.9 MB view details)

Uploaded CPython 3.10Windows x86-64

kestrel_kernels-0.4.3-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (17.8 MB view details)

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

kestrel_kernels-0.4.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (42.3 MB view details)

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

kestrel_kernels-0.4.3-cp310-cp310-macosx_13_0_arm64.whl (432.9 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 de51985c496646c0b9ea6b64bbd5109b90f17e0859fa1e9feb4c480a2a785db6
MD5 690cc366a566cc25b3414bf469713d12
BLAKE2b-256 83a15d74a5b115513290ddf3a4e980ed741a1a6ef0b9b129fe34b2b3685e1200

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 292108cfa6f40093baac27581794f49a5b992fc47ab160807cc731fb2ad35122
MD5 e066be4d4b786e2c73bbb153b07c9aad
BLAKE2b-256 2c919c4e78e00440634b11a95a625332671147194ff91e01f9231f7cc9501846

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 df871f7d89cba5c4adc377342e44eb6223a4b498cfb3a14f7b85fe5e5eeee809
MD5 9e6716023a007fb9fbb672db3ec9df6f
BLAKE2b-256 751168f2d63c825852b99b125ea28f29c7cd471bb3708687d37afabf8795738b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 764ace1e1e2cbf384e04d5334d6d11cfcd070542ed67c7bcf4ce077e6135ec99
MD5 7e7aae93f8f365f3d363f5d37be94757
BLAKE2b-256 f564c86996e8f1c4724c1b267f87974855f931ff26e45a26b4025cfd923ab577

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 36f60902eaec2d69f50eb28378b2bd9f11758d4d70181564774d2e93f9c3e689
MD5 e73061d70d2bdb44165ccc11548f916b
BLAKE2b-256 167d72c59868105433fe1db5ce84f452cba3ce6ebc5c539660174f60f0f8dab3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 5c3127b6172148bacb6ccfcc5f33fb7964e998f6aab44e25a035e3e93711783c
MD5 1b5ba4c4da0884e042e7a48152e415d4
BLAKE2b-256 d6e2c441ea52c57679a9abb69145408d8c56d6a2ae0408a767d97295fc27f27e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 271293f58ba2bf71513a2f1c0b8f504b62882631a58337cb1ea1e0c7c1fdac3c
MD5 3234a44220e18d663b98b73dbfa64e7e
BLAKE2b-256 ecbf89652ea710397cb9bb76dbc9b33360cf25c480e6195eff21ca2624431417

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 b6309ac15ffaa9fb44a2ba16d6e88753baab19dd2eb194942de11787beb3dc35
MD5 ff8816e4f2a7d5b89f12ad110fd202ab
BLAKE2b-256 ef0508c20872a7613d009514ed7c4d72fd24b1b5ed20703e8f542be8dacaaa27

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 9b0d04aad3764e46eff2da675eda0c8dbcc68334242e1e169c63a2c7c3a9bdce
MD5 957f9dd88e1a3554529f7019eb12be87
BLAKE2b-256 f62e1afd6330a2f821b942a7e86b759622d2114bdaa71cace412649e6d25b066

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 1a20fd3c6070690c42f768d8e02454160e50ab2c3fb7d24dba4362039074d31f
MD5 aad98e4d7f80666f13c8d8f02da3b937
BLAKE2b-256 fed706e29caf9fde52225555091d218888294857373b5bbc6fa4e3875c839a8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 412ac9548549e80257aa5cc2ad9c3f132f9d02d9a08c4391f706210b2de7eb97
MD5 1ebd185b55eb3182207f0bcf33066c5c
BLAKE2b-256 42291f19863418f8317fd0ea2e870684ac58c88383be81a439f47d7d10a22f26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 5f16a6097048240c28ab5c29e00c14bea94f0b92422f875e76065ae28ff193e3
MD5 ead2ed03c16d978ed0c5413edbe44e46
BLAKE2b-256 74bd842b882acc2eceb10fd5aeee74c78f7b921a88bfa194baa8897329b619f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1156d231652c8bd18396ad8bdecfc4e92a1a1b4757058c890825ae7b95a8fd24
MD5 310c81603bf1e90d985198031fa904c3
BLAKE2b-256 4b06bc2fb0bd3ea523464a0838a4793874bbcdd5623c373135b4292d9622f53d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 a29e180e52f733d5f09a9bb559e1bb141ad4a180fef8c92a59e34187dee17b27
MD5 e424caa2ffa4cd9740a061400e521501
BLAKE2b-256 0e2ae478160b8ceec3e3cc843bb9f24abc2a71997f4ba65ef5d1805ac68f13d6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 817c377a156b8d9436ef79d7700ef3bf3ef45979b5aadebbe6c32090da8c4b2f
MD5 8089945b37031cde980028d09bac70b4
BLAKE2b-256 7e976cbf0ab423d77d34860835ee712fbb7fc16806feba7bf02f87d214693b8d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 0e4817e12a3db22165de058038409edc677c4f8a2f042bf677458c8b030a7796
MD5 a8c6143bde013b7be67b3b0759645564
BLAKE2b-256 8ffbfe65eb80df9ecde78af3ff55b8c2390e727437e8253c861c7539661e3231

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 22d6df81a4eed59cad60704c44deb649a49184d0956373767bcd28f3ef9dc710
MD5 a08ea93364766ce79d07261b1a4357aa
BLAKE2b-256 b8eec37cd66389d09239d9816d0df98b27b0a42d23f8f3c3f0b8a2c430046631

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 3c0750796ba431134aa5dd1619d1d90f7f57f104c397f2eb43ce726b7f2e60c0
MD5 b47a9040e6c2d49ddbd1dbcd65d0dede
BLAKE2b-256 64024e6cf9f1df3eaa2b773c0b088e08a399f142bd7cf635e257f116095461c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 9445a6de4030be8a1a84454cf74821cd5b998844584754a31c622360b36a2a1b
MD5 f5936a4d9e5a51a539b14d4660c8a48f
BLAKE2b-256 0a362977562615eb6ed5af6a340e6ca577d0dc0f4b55f02dd99a624cc8b77d75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.3-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 01574dc5ab5d2936aebde79a91116bebb0676021fccc7d41526f2a49d101a313
MD5 66e4344d5d39cbee6397db209e8771b5
BLAKE2b-256 baff383ff1f5fc194cc4d56d70ab8eb2083cd7abf1b87cf34715fa1a877e3ab5

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