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

Uploaded CPython 3.14Windows x86-64

kestrel_kernels-0.4.6-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (11.8 MB view details)

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

kestrel_kernels-0.4.6-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (45.6 MB view details)

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

kestrel_kernels-0.4.6-cp314-cp314-macosx_13_0_arm64.whl (564.0 kB view details)

Uploaded CPython 3.14macOS 13.0+ ARM64

kestrel_kernels-0.4.6-cp313-cp313-win_amd64.whl (47.3 MB view details)

Uploaded CPython 3.13Windows x86-64

kestrel_kernels-0.4.6-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (11.8 MB view details)

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

kestrel_kernels-0.4.6-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (45.6 MB view details)

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

kestrel_kernels-0.4.6-cp313-cp313-macosx_13_0_arm64.whl (563.8 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

kestrel_kernels-0.4.6-cp312-cp312-win_amd64.whl (47.3 MB view details)

Uploaded CPython 3.12Windows x86-64

kestrel_kernels-0.4.6-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.6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (45.6 MB view details)

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

kestrel_kernels-0.4.6-cp312-cp312-macosx_13_0_arm64.whl (563.7 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

kestrel_kernels-0.4.6-cp311-cp311-win_amd64.whl (47.3 MB view details)

Uploaded CPython 3.11Windows x86-64

kestrel_kernels-0.4.6-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.6-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (45.6 MB view details)

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

kestrel_kernels-0.4.6-cp311-cp311-macosx_13_0_arm64.whl (563.0 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

kestrel_kernels-0.4.6-cp310-cp310-win_amd64.whl (47.3 MB view details)

Uploaded CPython 3.10Windows x86-64

kestrel_kernels-0.4.6-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (8.0 MB view details)

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

kestrel_kernels-0.4.6-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (45.6 MB view details)

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

kestrel_kernels-0.4.6-cp310-cp310-macosx_13_0_arm64.whl (561.6 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8562c17626f49062cbba612a5c11b97561b5aa1cf14f82ce14748e05ae3db1da
MD5 346b7cff7e06aec3ba72a7c01577e501
BLAKE2b-256 b6a315deecc9dccebf2bc1151513310928541e54f6bf5bf1acdd5f184660f512

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 205cccf16e8808b1cdecea0a5697404612b6e11d553191355476d6f8746a38d3
MD5 089fe795d9991f20e4da94752062c67d
BLAKE2b-256 f22aba859877875aedf9443d1a866c3edb3632a69b601306653abafe15cf01c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 7f60b61f462909ecadb3b6e10796b453d0599854b5f93a4b9047123e64162f1a
MD5 1e9ba38e694db2f82921ca41907878fc
BLAKE2b-256 b479586e6e20d53c2a048e4c6d49f90b31bcac742e6c9b24b279273bd20211ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 f97df03ad74601ab0e2b63c072f0255d23413ac99d39b2192a002b8d973c6174
MD5 929e7a1995f05d7447a7f9ae9dd17cc0
BLAKE2b-256 9b33ffd4bc01a45af44c08ab2d3a0239b1254a2e37449821f60971fddaf1de1e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 4e3ffaf690a7b67e62a1c3cf532c84d5e36562968d285270092fb64befcd534a
MD5 9e706a21e412ef0ade4e483ad526ff02
BLAKE2b-256 9c91ef60a47d6920e120d202a043ad4501659a4ef1ed482cbbb305ca88a7b4f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 d5be9c27293cb2f0a7f1acb0fbce282a4c81e8747c82763b9c49b9ebb51c1510
MD5 63b5a93927102c2ef223810a6cadc64e
BLAKE2b-256 791962b9b68a6ebabfad81103957eb42c170573b7bfccd0bd4202fac760d6be9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 bcf0518988d67658117aee06ebac2a1a56bbd42419358341166c9fcf62eead7d
MD5 1d7cb4262970e673fffb0f530bdc0bc2
BLAKE2b-256 e1a3c3be3cfc09a20a978a0a2e9dbbb010713eeaf131f92919af105a5849a566

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 cf625fa4bcc1ce85c65e85abc5bd684c67f009c8703887d14144e0a6bfbdca1d
MD5 9292678caf3453636e86b5220b9d3f74
BLAKE2b-256 b4133f3d88946ea79a81199b5d2dcdf0aff0d8b6a30d0bebf28b492effd2ea41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 21e300e034a4765d16f438be2cce80f4ed3bb34212e3562bb36774396f546c51
MD5 32fe405991b120887db75e8d149f0fe2
BLAKE2b-256 2479b77a2ccd65b09ef2292468bd3e2b15b12fa6d4f54432e1145af099a51d5b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 0decd77cfdef2f1b796754e2d256a811bdd577acbf34663b99060a69a58b8851
MD5 5fc97ecf4f661829efb7b0ed56e913cc
BLAKE2b-256 b5a759d8664cfa9ebc0cd5d8033801ab31eb54ed7118f4ad3985f28709be178f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 2214c5a5e7ee958e0af0927782206727e5b8f7e9ffae535bfb34e219eaaeafcc
MD5 e62931e2874dd963b5b4bef311822307
BLAKE2b-256 2099ccee1039378df83853c11c39c1d79aba73a13c861fb9401ad9e048038208

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 d75064a4dd26c12959de68a8614ba8b7ad9d4268070904e72d5c50b609fa3934
MD5 3f2c420220c561bd15a3f05a162d6f9d
BLAKE2b-256 ad57412acd7327bed028bf241086407bfd6de62bf6468c1fa177f9ad5ba37ab8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 8ecb121829d7e724f37587e901a9c8593852ef4974261d04e0d350ae398879f5
MD5 93622a1cf2e89ee1d0fad14ef2098013
BLAKE2b-256 4d1de4af40705eb1d128ff16f6fc61414d7b5db3b848fdf54322bafe6573c0ae

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 48825e2ce309dcb433def71ff78fb8bb5c0f4f9d21339a8c91304e3f79f45377
MD5 cc3b948cf83beb54edbe263bca0e6d18
BLAKE2b-256 fb7d06a6f1ac01e87b536dc6be704f6d52c9ad92a9335a9cc2b9f28b43bf4e2c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 03b46ff0057e843f84c54e25a822fb18677652fdd64c622593b7f1050748b6ab
MD5 f6da722e718c2403daff87d79e065a8e
BLAKE2b-256 747a11a26ccfce7f18c09493f497acafc71f35078570f3ce6d7d54cdcc7b0cea

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 52dc6f9aa70320cfb522e53d8ea9424648c9f73e6e8de72b839205e9a0dcdcfc
MD5 6faeccd9eb31ab89ee0a5f0bbbe47980
BLAKE2b-256 c82dd4d58b663f4a7ddb7e3e66be61b57cb1496b1573412d1d479abb2c75aafe

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 5bc0f4ecfa3222d01803ea8630b051749ea5e76e3a918b0b0f949527c397d539
MD5 2ee2d8c7c7d4c810e571a192dfdec1ab
BLAKE2b-256 ac0a575f9c0fa01382ab0a3984f2bb2dfe10949e540d6cb5b95d5a1b63f9629c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 3f4c5929c9eb13f440e64cd29b37a3c866b2ddc716a59d38b9c2f4026392d937
MD5 d46b9df4187c7c7af1a162ad04b641da
BLAKE2b-256 faa21dd7844da2af131bdd65ec71715b703984ad17f611a85fb256db40f97ff6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 a474315d1ac4452a13ab36ffe1f7892f781ead2021d0f891bd974d64d87e864b
MD5 d1928f4ace170e07b6123f907964f497
BLAKE2b-256 220757972dcc38596a3d4d451c50147204ec70235c77a2317522cba3efb799ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.6-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 1028f994a8971ba55ad808bb5c8b58059bc43538f310d5aa8fab271d1383e825
MD5 db8283909687fedd57f71ac1366a8372
BLAKE2b-256 38863db23d396ac0695243c05e017394a8b2032fc276652f035c041084b2da5c

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