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

Uploaded CPython 3.14Windows x86-64

kestrel_kernels-0.4.7-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (27.3 MB view details)

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

kestrel_kernels-0.4.7-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (98.6 MB view details)

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

kestrel_kernels-0.4.7-cp314-cp314-macosx_13_0_arm64.whl (824.4 kB view details)

Uploaded CPython 3.14macOS 13.0+ ARM64

kestrel_kernels-0.4.7-cp313-cp313-win_amd64.whl (98.8 MB view details)

Uploaded CPython 3.13Windows x86-64

kestrel_kernels-0.4.7-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (27.3 MB view details)

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

kestrel_kernels-0.4.7-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (98.6 MB view details)

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

kestrel_kernels-0.4.7-cp313-cp313-macosx_13_0_arm64.whl (824.0 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

kestrel_kernels-0.4.7-cp312-cp312-win_amd64.whl (98.8 MB view details)

Uploaded CPython 3.12Windows x86-64

kestrel_kernels-0.4.7-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (27.3 MB view details)

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

kestrel_kernels-0.4.7-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (98.6 MB view details)

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

kestrel_kernels-0.4.7-cp312-cp312-macosx_13_0_arm64.whl (824.0 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

kestrel_kernels-0.4.7-cp311-cp311-win_amd64.whl (98.8 MB view details)

Uploaded CPython 3.11Windows x86-64

kestrel_kernels-0.4.7-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (27.3 MB view details)

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

kestrel_kernels-0.4.7-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (98.6 MB view details)

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

kestrel_kernels-0.4.7-cp311-cp311-macosx_13_0_arm64.whl (823.1 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

kestrel_kernels-0.4.7-cp310-cp310-win_amd64.whl (98.8 MB view details)

Uploaded CPython 3.10Windows x86-64

kestrel_kernels-0.4.7-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (27.3 MB view details)

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

kestrel_kernels-0.4.7-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (98.6 MB view details)

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

kestrel_kernels-0.4.7-cp310-cp310-macosx_13_0_arm64.whl (821.6 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 38ac9340539f5853d56ef2c474fc141b70368e7d36b9052dbd6a08d2caa6b3fb
MD5 397fe8e25d5110bbba694a818111f82c
BLAKE2b-256 e76a2c54dc03d6b2b74207f13f1ea263b03538a3c8e24b409616912dc60d1570

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 27ef6ede6cd2d92d741d3dfdd3172d424a7d7172ea49e4604f250708644c48c5
MD5 2f6b121bb7605e13e1476fdf8467f675
BLAKE2b-256 f5b09c1692f81e9381f91db348ce40fd54346f26044c41f14626209cac522e3f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 83a2177570653134dfca525ab1fc04d7f9165df46044fa3f440c125b0e7d884e
MD5 c53f1342e5e850eeb9468aa616f95e3a
BLAKE2b-256 443cad83362da25d76ec5f4b9a16cffbf19c34fb863b1f324f31add82765bafd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 8c5270ff8c8d99f26018d154b5a7ccaf249b9e07423470cd173bc17575eeb1bf
MD5 eb544d8a3fc73fed8caa626a89606331
BLAKE2b-256 d602163948531d627e9e5aa11ae6dee141177b06167689a111d33b7cc21cbe85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1c9e529ca565973bce330e28a90f7b9c9a1117f54d421c49fea8a1b30dbac6c0
MD5 752b04c830eecd786fad29cde8323478
BLAKE2b-256 ded2906c314f0c45b2b3eef6d073fd790f1344a58195cdb9e0e3d1bfb1c917e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 f7399930c39eb919a3f49eaf26939d8668de4757632c730f03065a4e94f8560a
MD5 f4e740a1d815cee25c9aad26ecf5bd52
BLAKE2b-256 5c901b0d9c760f8a215bcd89fec3fdc7a1d8e8387f61c14c5bd110cd34ac479a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 bc599a0cc2fabe9d419bacb1b82959fa2ebf43fe3e78362ee2b415b854b00735
MD5 8d7c404735306d952d812d6bb2f3c671
BLAKE2b-256 e71171a9beed73ca4f745acbc2855e23bcc97e60a42161252a18dae50ffbf7c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 23a13d5c38df57142b1796153484280c726acd229549a341b30efd55d5ef5cf9
MD5 72895f1bdca228cbc4cd38f5ed1598ea
BLAKE2b-256 652a8512a718f047d7bb01259d54a29acea53285a486a3a788685cf49d8a7bc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8d163b7d112d7eb92358183920f1831b468fdf626da7696e1d11acb822c1a98a
MD5 96e8e3ca599809694f2e6e5a0c8f4f82
BLAKE2b-256 3b87a62730fd93221bdf2d47829bf940c5ab67f890a66bc943345356e6e394d7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 00a032716769642bc1ebfa030e45a6172f58c7a73b70b44e78eea8a57811e8d6
MD5 36402418298d7bb13f96f701c7da947f
BLAKE2b-256 c3d8bed3bad6dc3821ed30f6a68ccd6131d65375e01dca0f083aacaee88e5d16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 5fa7bf87b8a9a5875ff100d509cffca79545a2a2aae4bdf0e76189857cbd018f
MD5 b8f1584c92a48f7ffae57ed6277fd006
BLAKE2b-256 94864e183d27ebf340da4288f995f6081521ead73f62720243e718d52f7891e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 72880dc84487c05533b8b75e9062f8266de84542ebffda5a7d9b7306d0f36f2f
MD5 8c2c2aa7f7a2a3868dd6015a91edccc2
BLAKE2b-256 7173aff377919922b330129d11e23bfde725bf713c17603d975e001f16a69f7c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f2d01b2dd821449ed2c967d400385d283c0a41a2d71e7bf5f3065998e816e12b
MD5 7146e0aeb0983fa6bace99b7aed5f5a1
BLAKE2b-256 86793f0e24a90b1ca0782aaaa1e63012f679ee6214971ae2a9f84b416bdd265d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 85840e717748e406719795832a8e28b5e1a92cb3e5aed4265c9634beea06dff3
MD5 058f3d00bd63031d58d084acb4cffa77
BLAKE2b-256 947d267e60be9f24d1ddff59870af22db0ba26e643ef480355c30775d1e88265

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 4bd2a2deb42ea0b12cff68f5dd210b8f84e8eb5a431a5f50a370006e11032116
MD5 bc2a7daccbd97f29d6c7861816ff165b
BLAKE2b-256 e01976203f54b771414f4b644c8bf1ae766f09a13a47cc3cd8ecf782c04f2197

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 3138cb19914745803f9639b171353ae4d570586f44487cd9f60a85eb452c7c1b
MD5 6a93ea82634d25cbd3226859fd76e799
BLAKE2b-256 6430e77891edb3ad488008d698f37972f0878b7fdb91b9af9078d2e20dc09e61

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 3c9f7842799e7b792e1918e42c5ec5c755dcc82419c55897f872e41b5443936e
MD5 8fac3f0ae5efb2e57f4b1ce7eaa7766b
BLAKE2b-256 fd122a08a2cb55a37cd7c8a2013591df504c24cc9d8bdf4706d1d192f10c37bd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 680ea6ac0183499b61f2df88d417d2bd5b94635e1ebe5529bf6c33961a1f859c
MD5 892c04759d76b75e1f2ba2132c8b9d75
BLAKE2b-256 b13175eb611064a5c52215c02a46ae058d4c8b0aef9896ab59a6980bc3b4376d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 37645d150cd5a0164f0a45e5112809a4110fdde34ba6faa4fb4330a84acc0759
MD5 d44bcf867d1757c97aa9bd3918fa720a
BLAKE2b-256 f13c3dfb954bd4fcbe821614c7fb33d96baa169d9068c79ab40bfa50d7e360dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.7-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 ee3fc92f55d70e9a53ad0df38aaa5bc5b8d4ad25a271549304c731b9807fcca0
MD5 af1642d7dcfde7b142120be8184251b3
BLAKE2b-256 d7e193335c53ead02cd9f3eb0e3068010942330a0a5adabe0c6f9076dc72a4e6

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