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

Uploaded CPython 3.14Windows x86-64

kestrel_kernels-0.4.0-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (14.5 MB view details)

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

kestrel_kernels-0.4.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (33.7 MB view details)

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

kestrel_kernels-0.4.0-cp314-cp314-macosx_13_0_arm64.whl (415.9 kB view details)

Uploaded CPython 3.14macOS 13.0+ ARM64

kestrel_kernels-0.4.0-cp313-cp313-win_amd64.whl (35.3 MB view details)

Uploaded CPython 3.13Windows x86-64

kestrel_kernels-0.4.0-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (14.5 MB view details)

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

kestrel_kernels-0.4.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (33.7 MB view details)

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

kestrel_kernels-0.4.0-cp313-cp313-macosx_13_0_arm64.whl (415.7 kB view details)

Uploaded CPython 3.13macOS 13.0+ ARM64

kestrel_kernels-0.4.0-cp312-cp312-win_amd64.whl (35.3 MB view details)

Uploaded CPython 3.12Windows x86-64

kestrel_kernels-0.4.0-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (14.5 MB view details)

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

kestrel_kernels-0.4.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (33.7 MB view details)

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

kestrel_kernels-0.4.0-cp312-cp312-macosx_13_0_arm64.whl (415.6 kB view details)

Uploaded CPython 3.12macOS 13.0+ ARM64

kestrel_kernels-0.4.0-cp311-cp311-win_amd64.whl (35.3 MB view details)

Uploaded CPython 3.11Windows x86-64

kestrel_kernels-0.4.0-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (14.5 MB view details)

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

kestrel_kernels-0.4.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (33.7 MB view details)

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

kestrel_kernels-0.4.0-cp311-cp311-macosx_13_0_arm64.whl (414.9 kB view details)

Uploaded CPython 3.11macOS 13.0+ ARM64

kestrel_kernels-0.4.0-cp310-cp310-win_amd64.whl (35.3 MB view details)

Uploaded CPython 3.10Windows x86-64

kestrel_kernels-0.4.0-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl (14.5 MB view details)

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

kestrel_kernels-0.4.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl (33.7 MB view details)

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

kestrel_kernels-0.4.0-cp310-cp310-macosx_13_0_arm64.whl (413.6 kB view details)

Uploaded CPython 3.10macOS 13.0+ ARM64

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d82aa94a9f11b45c22a7b6dc9b23b79c405bff2e859ac520fb5077e84adc6f25
MD5 9717560a74ab73a08013ee241188a608
BLAKE2b-256 43ccb38e62c1217d18f0f72db83d85a9175659ec2c55b53a0294700c7f51c14c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp314-cp314-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 57a351a0be28964a9bfaaaad8b7c47b7183e64122ef6ee2d068ba8acac7f6d95
MD5 e4f95e60dee6bca6686fa8a91087bcf3
BLAKE2b-256 6aca1e14cd72baa13a978009de3a353a6c2f5f0cdc1c6afda41a86d846ecb00e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 7f807c91531cd1a689ce43c7e7608b16de7b90ff088dc1552198538df27376a9
MD5 fd3f11fcfa6005a1abd7ea6636000b59
BLAKE2b-256 e665cf83c0aa9484234133d2ff8985d54421178ed0db603c3b65deeeb1a0e806

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp314-cp314-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 2c9559a1f4940b004928c50f1a72395906c3a0e8ecb4ab58ba13a1cd2ab534b0
MD5 8dfb1972875747129e73575b7f3b6513
BLAKE2b-256 74726ae54b5caf84a2fa9f2ef5627c4ede59d051b8ccdd11d72ddf7e4da74bf7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 087ca1441a4421d39f03ef57d3aee33a8c3b88e03906ae32e86847bf8ab34f0d
MD5 24a23a0f01497bb0aaf2911049da4557
BLAKE2b-256 9500e58b22797961074bc645740e6e8e3779443afcd5901dfb5d31bbf28001cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp313-cp313-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 041d3d5fd5e762bb11a21acf0ccbf802790cf083a026ba9436781336e1330d6f
MD5 d09a69bee61d2d2b702a23702461e637
BLAKE2b-256 645d37585ab9c7c986da0c2c5307ece9d0cc4c10230d4f262a27a0a682f7ab50

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 995e8f8269ecb5377d691e259135da359910ecec9a55dc61286e47446c617adb
MD5 c191bef051420724107309bcc0a37802
BLAKE2b-256 952377323d6a3484ee4b19c17670139af79bf7ea31f63d96697c0b4de09880b4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp313-cp313-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 a8f064342549b42c7eea73d575606c85a67457687328fa7a72a91a7b5104d038
MD5 3732670569fd8d585a541b236d3b7422
BLAKE2b-256 5ef1ba6789ad65ce301e2dce2d374c8bebe37042638c9f414ab9fb452edd5314

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8dfa9bffd94f3cd039995d61d07ca4ac5799b9c44085bc9bd6bc89a28209709c
MD5 1e1ace1753b316f3ca5bca8b044b86dc
BLAKE2b-256 239d9d0421ce591d1a817797ec9f7c999f6d912e00c6e0921721cbba5afba820

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp312-cp312-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 84f5be957fe4bc20d530bdb35712d2709d129ff2c6dc3715ab83d42dccc39ae7
MD5 3df1839635554c03d6de3fe78da5c4ea
BLAKE2b-256 5ca6cf2978ae31bd30fec4d47bf71465d7f542c5923a3e509f137b12bc4a47be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 09e05e0d5c00cb2826fe981ac730a906e9ac64001db9bdb55c8bfd3b8f9031f6
MD5 76b63075f2e067cccfcea46281af29a7
BLAKE2b-256 1d568bd7ea8b393952aefd8f6eed5e7c3c435db3814536d1162fa2b465df31d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp312-cp312-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 ca6be38f9cc040c66b9af5503152d1a892110b67a0c97a863cbedfd002aa2015
MD5 12cd25fd7198fd212ef19ba0ef086fc1
BLAKE2b-256 79797753cbd71a996eb34089518ff1ee35eb9459cdc208c58369beeb31376f2b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 50d4bcdaa7f7901590373223c55ce5668b98d819752fdca7819b357448a6dc50
MD5 3e42302e8230aead5f381291a7b9a917
BLAKE2b-256 63d5f81fa272dc71d371ec870ceb44cbb7af89c06caf264517abb431abbc8652

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp311-cp311-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 f582e97072fbf1f7e5ff0d20aee5fdcd77eee48d4fa22227adc2245a2492ab9e
MD5 dfd807cc9f48ea4359b41baa047f2394
BLAKE2b-256 8cb892928becdfb7cc1ddce306f21a0f105ea3ad39635ed585d777de7fb61ea0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 dba9d4be2a71e7a39837f184ddef96d56ad933af925882f56a7cce82fadf8041
MD5 914a619bd3b67672092bd4c70db59f9c
BLAKE2b-256 697bd0e80e23748d2b0751b0af5542ecd8f35ee9b2fed21788b1785c85a2161d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp311-cp311-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 a82fde8d38eb886d6ecc7efa798fe9e6dc6e291ea2b7175eee76afe77eb315e4
MD5 60ba5fa2c60405c8358f8cdaf86e69aa
BLAKE2b-256 a63e6f0a8640d1dc7222deac093beb61d77623f0f2dd3bc9937b484986677a35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 b6ab9a8e79a94cc48709f50da481d8423da70ea695b68ba546a0bf5b60bb58be
MD5 9ef6ebd29d040eb6e65def6466a58dd5
BLAKE2b-256 5a626ac36eb46d232480d266bf9ddb024545ec8a156c0f389f2c66c4bf0207ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp310-cp310-manylinux_2_34_aarch64.manylinux_2_35_aarch64.whl
Algorithm Hash digest
SHA256 f4360183a636b2a9c1b5d3d238689202ef74f0b99f645377e9f20fb71ff04ae1
MD5 6a7501f32ceff83b09dcecdfb47672b5
BLAKE2b-256 a2941975c27576b503421ab531ba5432f2402ec96736ffe6e333e2611687f74b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_31_x86_64.whl
Algorithm Hash digest
SHA256 9b4936fb57258a97f8eb5d28f56197954c5791dc41c10365965763c7935459d8
MD5 634bf9bfaa3e266ad4fd8517c8706fdd
BLAKE2b-256 5e31521b0c3489d3e4e43228c751aab2f9224c482a3fb2f0a4b7ed127b7745f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kestrel_kernels-0.4.0-cp310-cp310-macosx_13_0_arm64.whl
Algorithm Hash digest
SHA256 54ff6238bf489440b5173966ce692e4e540ae29640efaad6d6ce3d4fc030b662
MD5 6e1fbd4b0f75c00a7d102b30fc7d2d52
BLAKE2b-256 ad6dac9ca319048b528e616b80b84d3b68688010e9a7602a4cb85c3d03be12c0

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