← Back to C-Kernel-Engine Docs Doxygen Source Documentation
 
Loading...
Searching...
No Matches
ckernel_attention_full_token_major.h
Go to the documentation of this file.
1#ifndef CKERNEL_ATTENTION_FULL_TOKEN_MAJOR_H
2#define CKERNEL_ATTENTION_FULL_TOKEN_MAJOR_H
3
4#include <stddef.h>
5
6/* Full, unmasked self-attention over token-major [tokens, heads * head_dim]
7 * FP32 Q/K/V. Dots use FP64 scalar accumulation then FP32 score storage.
8 * Softmax subtracts the maximum of those stored scores, exponentiates in FP64,
9 * stores FP32 weights, and sums/normalizes in FP64. Output uses the
10 * same token-major layout. All buffers are caller owned and must not alias.
11 * scratch_bytes reserves at least tokens floats. Returns zero on success; invalid
12 * geometry, capacity, or nonfinite input returns -1 before output is written.
13 */
15 const float *query, size_t query_elements,
16 const float *key, size_t key_elements,
17 const float *value, size_t value_elements,
18 float *output, size_t output_elements,
19 float *scratch, size_t scratch_bytes,
20 size_t tokens, size_t heads, size_t head_dim);
21
22#endif
int attention_full_token_major_f32_checked(const float *query, size_t query_elements, const float *key, size_t key_elements, const float *value, size_t value_elements, float *output, size_t output_elements, float *scratch, size_t scratch_bytes, size_t tokens, size_t heads, size_t head_dim)