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

Uploaded CPython 3.14Windows x86-64

kestrel_kernels-0.4.2-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (17.4 MB view details)

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

kestrel_kernels-0.4.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (41.4 MB view details)

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

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

Uploaded CPython 3.14macOS 13.0+ ARM64

kestrel_kernels-0.4.2-cp313-cp313-win_amd64.whl (43.0 MB view details)

Uploaded CPython 3.13Windows x86-64

kestrel_kernels-0.4.2-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (17.4 MB view details)

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

kestrel_kernels-0.4.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (41.4 MB view details)

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

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

Uploaded CPython 3.13macOS 13.0+ ARM64

kestrel_kernels-0.4.2-cp312-cp312-win_amd64.whl (43.0 MB view details)

Uploaded CPython 3.12Windows x86-64

kestrel_kernels-0.4.2-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (17.4 MB view details)

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

kestrel_kernels-0.4.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (41.4 MB view details)

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

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

Uploaded CPython 3.12macOS 13.0+ ARM64

kestrel_kernels-0.4.2-cp311-cp311-win_amd64.whl (43.0 MB view details)

Uploaded CPython 3.11Windows x86-64

kestrel_kernels-0.4.2-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (17.4 MB view details)

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

kestrel_kernels-0.4.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (41.4 MB view details)

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

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

Uploaded CPython 3.11macOS 13.0+ ARM64

kestrel_kernels-0.4.2-cp310-cp310-win_amd64.whl (43.0 MB view details)

Uploaded CPython 3.10Windows x86-64

kestrel_kernels-0.4.2-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (17.4 MB view details)

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

kestrel_kernels-0.4.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (41.4 MB view details)

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

kestrel_kernels-0.4.2-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.2-cp314-cp314-win_amd64.whl.

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 3ac84d1ae23a207a7e99190a5584d94ca26aca2544712b23d6ded173b7f7a344
MD5 b96d32b6ef2337b476a7017b667fc033
BLAKE2b-256 26bf53891170c5c21ef08cf088e8bf73037798557d0669875113661189e976a2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 3bc8110edad54ebe2ffc97762c939caccdaff4ad45de48588aa276c7a00393e6
MD5 476cf86a17ecc6647651524b0b77ba3f
BLAKE2b-256 2634eead21656543d9e153b72c99b8d82a0ea03b595d3bc8606c89ffd277903a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 994d15f844ee3e3efd1bd535100aabe338047f356e47823f8450115b3a74ff00
MD5 9a45a3767b8623124830004e396545d7
BLAKE2b-256 829a5fe07c072de87ecd48cd7022f4d729b483d9a5a422bd0d590448ecc8f03d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 55acd05dec3d8510a043e93e4093018bae1a77fdc86ebfb304d58be7c381b994
MD5 8f87710d4e5662b92acb455f8882c936
BLAKE2b-256 ed8a8eb49bc760ec509e100ed671fb57886e82caf31e2d223e28b61b1b526be6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 d4bcf3bfde12956fcd426fd15751e67c6bed30e686cdad3f962c8fcd5293190b
MD5 6e47055eec9867df119ae9f6c095dbb9
BLAKE2b-256 bae84186a1c569dac7a1a3ef62ab2a7597a8809369f17629537b0ee893e970a5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 06a7c9c92dcd79defe8cb48a00915431171b42bd5cbbf750fdf890c38706f772
MD5 9c31e45b60058bf90949a8a1bec7881e
BLAKE2b-256 f469b5eb0c09074c69cb6a25926338406355befdae46c9c466064e7a997cfaad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 57320a671135304ab76e3c128b8aeaf5a68c07d136247201f046c9ab13bf0cac
MD5 3bc39585ee47df394507dd928aac6e61
BLAKE2b-256 6a9cbc764789a8576f00676596e4e3bf4abf2269b6341926687d6d279e3c6214

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 c4ff5c1b803687e9fae323ee7703cb940a998ce864a08d3a1302d3194358bb29
MD5 3cfc64bcc8d31d55f8c23d381ca13428
BLAKE2b-256 db78ed2d32c83051ea379176ba51e5391a9393126003f2d0d03747ab2f5e6f1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c443949bf6eaf6fe67aa5e2cd1f893d3042798bce0ab538ce50f29413fea7de2
MD5 f6b722d0ddd30a524b27ca2e9e1f3a04
BLAKE2b-256 ca8e3b59f2cc735e65e0f28016017949837b1ec6686e48055c94805fe8a2d16d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 363ecb6c7161c25c27acf1622800cc6e404b023c3b28a2457f82297b03dadf00
MD5 9f5173e50dce639f50094903cc7870e2
BLAKE2b-256 89023d1f29a16257f5a615b8bc3544ef3d57349641f65c674568a0d780c19b94

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 eb6365a10bebb248e86d69a95a813a6d69a3ceae60a1e554c7440394614ddacd
MD5 7e39c0083937953ba1839e14415bf1eb
BLAKE2b-256 6bc8f10975c35c7e24a236c091a2a884669b9c71f044fb2db2be14bfda90a275

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 d0d85a73fe2e9663887584e267a0e15758ed5ea8fcb0f89193556974a2b166ae
MD5 367e195968d40ab2c32d385bf080a01d
BLAKE2b-256 e6d2b37f1c906d76a129cae9aad52f9b771c0bc46d0892f93403d03fc513c04c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 eb498dcfec1d65ae4a695b95d8e538d972b13e17d9c3cea8ed372693b7c31535
MD5 33df50b1fdbab2b970d0fdfb47949ba0
BLAKE2b-256 1102c87c01ee8e11ee58bae9b1b67839092e389cdbc98a88fdee4ea5f592c98e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 0e79e3c10dc2334f1338e509dfcc788ad512707b5ec763a0d1f5136f5e5d0aed
MD5 189b6d6a9221af6be93138a22b799783
BLAKE2b-256 fffc64efd539ce7433ff9e316ed19e570c7a1679e414a0b9a4e0cfecdfc6c881

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 32b5289e0ea12a5d6f29ec476795f2266e0799cdf31955d2856522a15ac6c079
MD5 3bb03e7e850e35c5e78aa6f60640fd72
BLAKE2b-256 fce30f42314f42ebc29f1c320f6235cb88d87c3b8b6f10202ee2e2d76a33af02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 430b7784de9bb54df642a1d40426e3ee30d285d040a4ce88d293d97c546a71c7
MD5 ce50955f8fb395f8b41521a0e9150c63
BLAKE2b-256 44677bf973744349658b6ffe18393ae1ec4d991ef3e502678b048d4709c656de

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 78d2ea428e5ff87091ece7af70fc238667033287830d2842e9c1757fcbec2119
MD5 3aab94f09031e8f22234ba06f364f88e
BLAKE2b-256 b754e42dfec3fd863ff5da12e34ed848593364d127c9247a9c243e431d387c6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 afebaa2dfd41ca8667eb1d9e8cc34ba6ac44c9740458688cbd936967a6e8c497
MD5 369d770501f7020723c62d43842863b7
BLAKE2b-256 cc7fd6b169ad0ff6771e5f414a262b5a6ae689c8a2fa26ea57ab15df8cf8beb1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 1a92308e57aa545479c3224891d7389351912fe0551f32af398408162372831b
MD5 3d925cd4599bdae0d6864cce71650a14
BLAKE2b-256 8978a8d80cf6f78e4aceceba0caa9c2627edd42eac65e0397817e8d89bf35add

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.2-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 fcb462d13e6775b102fd866c2aa788a9aa6884068bbaf0003d9b0c940ab42027
MD5 a97925d89ee3d6bd0563fa5702cf5578
BLAKE2b-256 fb979c8c53e78f000ac966fcaa302c22675c42b6783b37a65f14b333b3c74d37

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