← Back to C-Kernel-Engine Docs Doxygen Source Documentation
 
Loading...
Searching...
No Matches
ckernel_audio_conv_checked.h
Go to the documentation of this file.
1#ifndef CKERNEL_AUDIO_CONV_CHECKED_H
2#define CKERNEL_AUDIO_CONV_CHECKED_H
3
4#include <stddef.h>
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10enum {
17};
18
19/* Caller-owned scratch stages contiguous output.
20 * No output is written until geometry, capacities, finite inputs and the
21 * scalar Conv1D arithmetic have succeeded. Buffers must not alias. */
22int audio_conv1d_checked_workspace(size_t input_channels, size_t output_channels,
23 size_t input_frames, size_t output_frames, size_t *scratch_elements);
24
26 const float *input, size_t input_elements, size_t input_stride,
27 const float *weight, size_t weight_elements,
28 const float *bias, size_t bias_elements,
29 float *output, size_t output_elements, size_t output_stride,
30 float *scratch, size_t scratch_elements,
31 size_t input_channels, size_t output_channels, size_t input_frames,
32 size_t kernel_size, size_t stride, size_t padding, size_t output_frames);
33
34/* Same channel/kernel FMA order with explicit tap dilation. The effective
35 * kernel width is 1 + (kernel_size - 1) * dilation. Scratch and output
36 * preservation follow the checked Conv1D contract above. */
38 const float *input, size_t input_elements, size_t input_stride,
39 const float *weight, size_t weight_elements,
40 const float *bias, size_t bias_elements,
41 float *output, size_t output_elements, size_t output_stride,
42 float *scratch, size_t scratch_elements,
43 size_t input_channels, size_t output_channels, size_t input_frames,
44 size_t kernel_size, size_t stride, size_t padding, size_t dilation,
45 size_t output_frames);
46
47/* The hardware-FMA variants use the same ordered FP32 fmaf arithmetic and
48 * checked buffer contract. They return UNSUPPORTED without touching output on
49 * CPUs without x86 FMA; callers can select the scalar providers instead. */
52
54 const float *input, size_t input_elements, size_t input_stride,
55 const float *weight, size_t weight_elements,
56 const float *bias, size_t bias_elements,
57 float *output, size_t output_elements, size_t output_stride,
58 float *scratch, size_t scratch_elements,
59 size_t input_channels, size_t output_channels, size_t input_frames,
60 size_t kernel_size, size_t stride, size_t padding, size_t output_frames);
61
63 const float *input, size_t input_elements, size_t input_stride,
64 const float *weight, size_t weight_elements,
65 const float *bias, size_t bias_elements,
66 float *output, size_t output_elements, size_t output_stride,
67 float *scratch, size_t scratch_elements,
68 size_t input_channels, size_t output_channels, size_t input_frames,
69 size_t kernel_size, size_t stride, size_t padding, size_t dilation,
70 size_t output_frames);
71
72/* Explicitly selected output-channel-parallel AVX2/FMA providers. The host
73 * owns worker_pool and keeps it alive until the checked call returns. The
74 * implementation validates all buffers before dispatch and commits output
75 * only after the staged result is finite. worker_count is bounded by the
76 * pool capacity and independent output channels; small cases run serially. */
78 const float *input, size_t input_elements, size_t input_stride,
79 const float *weight, size_t weight_elements,
80 const float *bias, size_t bias_elements,
81 float *output, size_t output_elements, size_t output_stride,
82 float *scratch, size_t scratch_elements,
83 size_t input_channels, size_t output_channels, size_t input_frames,
84 size_t kernel_size, size_t stride, size_t padding, size_t output_frames,
85 void *worker_pool, size_t worker_count);
86
88 const float *input, size_t input_elements, size_t input_stride,
89 const float *weight, size_t weight_elements,
90 const float *bias, size_t bias_elements,
91 float *output, size_t output_elements, size_t output_stride,
92 float *scratch, size_t scratch_elements,
93 size_t input_channels, size_t output_channels, size_t input_frames,
94 size_t kernel_size, size_t stride, size_t padding, size_t dilation,
95 size_t output_frames, void *worker_pool, size_t worker_count);
96
98 const float *input, size_t input_elements, size_t input_stride,
99 const float *weight, size_t weight_elements,
100 const float *bias, size_t bias_elements,
101 float *output, size_t output_elements, size_t output_stride,
102 float *scratch, size_t scratch_elements,
103 size_t input_channels, size_t output_channels, size_t input_frames,
104 size_t kernel_size, size_t stride, size_t padding, size_t output_frames);
105
107 const float *input, size_t input_elements, size_t input_stride,
108 const float *weight, size_t weight_elements,
109 const float *bias, size_t bias_elements,
110 float *output, size_t output_elements, size_t output_stride,
111 float *scratch, size_t scratch_elements,
112 size_t input_channels, size_t output_channels, size_t input_frames,
113 size_t kernel_size, size_t stride, size_t padding, size_t dilation,
114 size_t output_frames);
115
116#ifdef __cplusplus
117}
118#endif
119
120#endif
int audio_conv1d_checked_channel_major_f32_hwfma(const float *input, size_t input_elements, size_t input_stride, const float *weight, size_t weight_elements, const float *bias, size_t bias_elements, float *output, size_t output_elements, size_t output_stride, float *scratch, size_t scratch_elements, size_t input_channels, size_t output_channels, size_t input_frames, size_t kernel_size, size_t stride, size_t padding, size_t output_frames)
int audio_conv1d_checked_avx2_fma_available(void)
int audio_conv1d_dilated_checked_channel_major_f32_hwfma(const float *input, size_t input_elements, size_t input_stride, const float *weight, size_t weight_elements, const float *bias, size_t bias_elements, float *output, size_t output_elements, size_t output_stride, float *scratch, size_t scratch_elements, size_t input_channels, size_t output_channels, size_t input_frames, size_t kernel_size, size_t stride, size_t padding, size_t dilation, size_t output_frames)
int audio_conv1d_dilated_checked_channel_major_f32(const float *input, size_t input_elements, size_t input_stride, const float *weight, size_t weight_elements, const float *bias, size_t bias_elements, float *output, size_t output_elements, size_t output_stride, float *scratch, size_t scratch_elements, size_t input_channels, size_t output_channels, size_t input_frames, size_t kernel_size, size_t stride, size_t padding, size_t dilation, size_t output_frames)
int audio_conv1d_dilated_checked_channel_major_f32_avx2_fma(const float *input, size_t input_elements, size_t input_stride, const float *weight, size_t weight_elements, const float *bias, size_t bias_elements, float *output, size_t output_elements, size_t output_stride, float *scratch, size_t scratch_elements, size_t input_channels, size_t output_channels, size_t input_frames, size_t kernel_size, size_t stride, size_t padding, size_t dilation, size_t output_frames)
int audio_conv1d_checked_channel_major_f32_avx2_parallel(const float *input, size_t input_elements, size_t input_stride, const float *weight, size_t weight_elements, const float *bias, size_t bias_elements, float *output, size_t output_elements, size_t output_stride, float *scratch, size_t scratch_elements, size_t input_channels, size_t output_channels, size_t input_frames, size_t kernel_size, size_t stride, size_t padding, size_t output_frames, void *worker_pool, size_t worker_count)
int audio_conv1d_checked_hardware_fma_available(void)
@ CK_AUDIO_CONV_CHECKED_OVERFLOW
@ CK_AUDIO_CONV_CHECKED_OK
@ CK_AUDIO_CONV_CHECKED_UNSUPPORTED
@ CK_AUDIO_CONV_CHECKED_CAPACITY
@ CK_AUDIO_CONV_CHECKED_NONFINITE
@ CK_AUDIO_CONV_CHECKED_INVALID
int audio_conv1d_checked_channel_major_f32_avx2_fma(const float *input, size_t input_elements, size_t input_stride, const float *weight, size_t weight_elements, const float *bias, size_t bias_elements, float *output, size_t output_elements, size_t output_stride, float *scratch, size_t scratch_elements, size_t input_channels, size_t output_channels, size_t input_frames, size_t kernel_size, size_t stride, size_t padding, size_t output_frames)
int audio_conv1d_checked_workspace(size_t input_channels, size_t output_channels, size_t input_frames, size_t output_frames, size_t *scratch_elements)
int audio_conv1d_checked_channel_major_f32(const float *input, size_t input_elements, size_t input_stride, const float *weight, size_t weight_elements, const float *bias, size_t bias_elements, float *output, size_t output_elements, size_t output_stride, float *scratch, size_t scratch_elements, size_t input_channels, size_t output_channels, size_t input_frames, size_t kernel_size, size_t stride, size_t padding, size_t output_frames)
int audio_conv1d_dilated_checked_channel_major_f32_avx2_parallel(const float *input, size_t input_elements, size_t input_stride, const float *weight, size_t weight_elements, const float *bias, size_t bias_elements, float *output, size_t output_elements, size_t output_stride, float *scratch, size_t scratch_elements, size_t input_channels, size_t output_channels, size_t input_frames, size_t kernel_size, size_t stride, size_t padding, size_t dilation, size_t output_frames, void *worker_pool, size_t worker_count)