← Back to C-Kernel-Engine Docs Doxygen Source Documentation
 
Loading...
Searching...
No Matches
ckernel_audio_conv_checked.h File Reference
#include <stddef.h>

Go to the source code of this file.

Enumerations

enum  {
  CK_AUDIO_CONV_CHECKED_OK = 0 , CK_AUDIO_CONV_CHECKED_INVALID = -1 , CK_AUDIO_CONV_CHECKED_CAPACITY = -2 , CK_AUDIO_CONV_CHECKED_OVERFLOW = -3 ,
  CK_AUDIO_CONV_CHECKED_NONFINITE = -4 , CK_AUDIO_CONV_CHECKED_UNSUPPORTED = -5
}
 

Functions

int audio_conv1d_checked_avx2_fma_available (void)
 
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_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_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_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_hardware_fma_available (void)
 
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_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_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)
 
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)
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
CK_AUDIO_CONV_CHECKED_OK 
CK_AUDIO_CONV_CHECKED_INVALID 
CK_AUDIO_CONV_CHECKED_CAPACITY 
CK_AUDIO_CONV_CHECKED_OVERFLOW 
CK_AUDIO_CONV_CHECKED_NONFINITE 
CK_AUDIO_CONV_CHECKED_UNSUPPORTED 

Definition at line 10 of file ckernel_audio_conv_checked.h.

Function Documentation

◆ audio_conv1d_checked_avx2_fma_available()

int audio_conv1d_checked_avx2_fma_available ( void  )

Definition at line 118 of file audio_conv1d_checked.c.

118 {
119#if CK_AUDIO_CONV_X86_TARGET_FMA
120 __builtin_cpu_init();
121 return __builtin_cpu_supports("avx2") && __builtin_cpu_supports("fma");
122#else
123 return 0;
124#endif
125}

Referenced by audio_conv1d_checked_channel_major_f32_avx2_fma(), audio_conv1d_dilated_checked_channel_major_f32_avx2_fma(), and audio_conv1d_parallel_checked_impl().

◆ audio_conv1d_checked_channel_major_f32()

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 
)

Definition at line 219 of file audio_conv1d_checked.c.

226 {
227 return ck_audio_conv1d_checked_execute(input, input_elements, input_stride,
228 weight, weight_elements, bias, bias_elements, output, output_elements,
229 output_stride, scratch, scratch_elements, input_channels,
230 output_channels, input_frames, kernel_size, stride, padding, 1,
231 output_frames, audio_conv1d_compute_scalar, NULL);
232}
int ck_audio_conv1d_checked_execute(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, ck_audio_conv1d_compute_fn compute, void *compute_context)
static void audio_conv1d_compute_scalar(const ck_audio_conv1d_job *job, void *unused)

References audio_conv1d_compute_scalar(), and ck_audio_conv1d_checked_execute().

◆ audio_conv1d_checked_channel_major_f32_avx2_fma()

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 
)

Definition at line 305 of file audio_conv1d_checked.c.

312 {
313#if CK_AUDIO_CONV_X86_TARGET_FMA
316 return ck_audio_conv1d_checked_execute(input, input_elements, input_stride,
317 weight, weight_elements, bias, bias_elements, output, output_elements,
318 output_stride, scratch, scratch_elements, input_channels,
319 output_channels, input_frames, kernel_size, stride, padding, 1,
320 output_frames, audio_conv1d_compute_avx2, NULL);
321#else
322 (void)input; (void)input_elements; (void)input_stride;
323 (void)weight; (void)weight_elements; (void)bias; (void)bias_elements;
324 (void)output; (void)output_elements; (void)output_stride;
325 (void)scratch; (void)scratch_elements; (void)input_channels;
326 (void)output_channels; (void)input_frames; (void)kernel_size;
327 (void)stride; (void)padding; (void)output_frames;
329#endif
330}
int audio_conv1d_checked_avx2_fma_available(void)
void audio_conv1d_compute_avx2(const ck_audio_conv1d_job *job, void *unused)

References audio_conv1d_checked_avx2_fma_available(), audio_conv1d_compute_avx2(), ck_audio_conv1d_checked_execute(), and CK_AUDIO_CONV_CHECKED_UNSUPPORTED.

◆ audio_conv1d_checked_channel_major_f32_avx2_parallel()

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 
)

Definition at line 82 of file audio_conv1d_parallel.c.

91{
92 return audio_conv1d_parallel_checked_impl(input, input_elements,
93 input_stride, weight, weight_elements, bias, bias_elements, output,
94 output_elements, output_stride, scratch, scratch_elements,
95 input_channels, output_channels, input_frames, kernel_size, stride,
96 padding, 1, output_frames, worker_pool, worker_count);
97}
static int audio_conv1d_parallel_checked_impl(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)

References audio_conv1d_parallel_checked_impl().

◆ audio_conv1d_checked_channel_major_f32_hwfma()

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 
)

Definition at line 250 of file audio_conv1d_checked.c.

257 {
258#if CK_AUDIO_CONV_X86_TARGET_FMA
261 return ck_audio_conv1d_checked_execute(input, input_elements, input_stride,
262 weight, weight_elements, bias, bias_elements, output, output_elements,
263 output_stride, scratch, scratch_elements, input_channels,
264 output_channels, input_frames, kernel_size, stride, padding, 1,
265 output_frames, audio_conv1d_compute_hwfma, NULL);
266#else
267 (void)input; (void)input_elements; (void)input_stride;
268 (void)weight; (void)weight_elements; (void)bias; (void)bias_elements;
269 (void)output; (void)output_elements; (void)output_stride;
270 (void)scratch; (void)scratch_elements; (void)input_channels;
271 (void)output_channels; (void)input_frames; (void)kernel_size;
272 (void)stride; (void)padding; (void)output_frames;
274#endif
275}
int audio_conv1d_checked_hardware_fma_available(void)

References audio_conv1d_checked_hardware_fma_available(), ck_audio_conv1d_checked_execute(), and CK_AUDIO_CONV_CHECKED_UNSUPPORTED.

◆ audio_conv1d_checked_hardware_fma_available()

int audio_conv1d_checked_hardware_fma_available ( void  )

Definition at line 109 of file audio_conv1d_checked.c.

109 {
110#if CK_AUDIO_CONV_X86_TARGET_FMA
111 __builtin_cpu_init();
112 return __builtin_cpu_supports("fma") != 0;
113#else
114 return 0;
115#endif
116}

Referenced by audio_conv1d_checked_channel_major_f32_hwfma(), and audio_conv1d_dilated_checked_channel_major_f32_hwfma().

◆ audio_conv1d_checked_workspace()

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 
)

Definition at line 127 of file audio_conv1d_checked.c.

128 {
129 size_t staged;
130 if (!scratch_elements || !input_channels || !output_channels ||
131 !input_frames || !output_frames ||
132 input_channels > SIZE_MAX / input_frames ||
133 output_channels > SIZE_MAX / output_frames)
135 staged = output_channels * output_frames;
136 if (staged > SIZE_MAX / sizeof(float))
138 *scratch_elements = staged;
140}

References CK_AUDIO_CONV_CHECKED_OK, and CK_AUDIO_CONV_CHECKED_OVERFLOW.

Referenced by ck_audio_conv1d_checked_execute().

◆ audio_conv1d_dilated_checked_channel_major_f32()

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 
)

Definition at line 234 of file audio_conv1d_checked.c.

242 {
243 return ck_audio_conv1d_checked_execute(input, input_elements, input_stride,
244 weight, weight_elements, bias, bias_elements, output, output_elements,
245 output_stride, scratch, scratch_elements, input_channels,
246 output_channels, input_frames, kernel_size, stride, padding, dilation,
247 output_frames, audio_conv1d_compute_scalar, NULL);
248}

References audio_conv1d_compute_scalar(), and ck_audio_conv1d_checked_execute().

◆ audio_conv1d_dilated_checked_channel_major_f32_avx2_fma()

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 
)

Definition at line 332 of file audio_conv1d_checked.c.

340 {
341#if CK_AUDIO_CONV_X86_TARGET_FMA
344 return ck_audio_conv1d_checked_execute(input, input_elements, input_stride,
345 weight, weight_elements, bias, bias_elements, output, output_elements,
346 output_stride, scratch, scratch_elements, input_channels,
347 output_channels, input_frames, kernel_size, stride, padding, dilation,
348 output_frames, audio_conv1d_compute_avx2, NULL);
349#else
350 (void)input; (void)input_elements; (void)input_stride;
351 (void)weight; (void)weight_elements; (void)bias; (void)bias_elements;
352 (void)output; (void)output_elements; (void)output_stride;
353 (void)scratch; (void)scratch_elements; (void)input_channels;
354 (void)output_channels; (void)input_frames; (void)kernel_size;
355 (void)stride; (void)padding; (void)dilation; (void)output_frames;
357#endif
358}

References audio_conv1d_checked_avx2_fma_available(), audio_conv1d_compute_avx2(), ck_audio_conv1d_checked_execute(), and CK_AUDIO_CONV_CHECKED_UNSUPPORTED.

◆ audio_conv1d_dilated_checked_channel_major_f32_avx2_parallel()

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 
)

Definition at line 99 of file audio_conv1d_parallel.c.

108{
109 return audio_conv1d_parallel_checked_impl(input, input_elements,
110 input_stride, weight, weight_elements, bias, bias_elements, output,
111 output_elements, output_stride, scratch, scratch_elements,
112 input_channels, output_channels, input_frames, kernel_size, stride,
113 padding, dilation, output_frames, worker_pool, worker_count);
114}

References audio_conv1d_parallel_checked_impl().

◆ audio_conv1d_dilated_checked_channel_major_f32_hwfma()

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 
)

Definition at line 277 of file audio_conv1d_checked.c.

285 {
286#if CK_AUDIO_CONV_X86_TARGET_FMA
289 return ck_audio_conv1d_checked_execute(input, input_elements, input_stride,
290 weight, weight_elements, bias, bias_elements, output, output_elements,
291 output_stride, scratch, scratch_elements, input_channels,
292 output_channels, input_frames, kernel_size, stride, padding, dilation,
293 output_frames, audio_conv1d_compute_hwfma, NULL);
294#else
295 (void)input; (void)input_elements; (void)input_stride;
296 (void)weight; (void)weight_elements; (void)bias; (void)bias_elements;
297 (void)output; (void)output_elements; (void)output_stride;
298 (void)scratch; (void)scratch_elements; (void)input_channels;
299 (void)output_channels; (void)input_frames; (void)kernel_size;
300 (void)stride; (void)padding; (void)dilation; (void)output_frames;
302#endif
303}

References audio_conv1d_checked_hardware_fma_available(), ck_audio_conv1d_checked_execute(), and CK_AUDIO_CONV_CHECKED_UNSUPPORTED.