small size buffer op ok
This commit is contained in:
@@ -27,3 +27,107 @@ DECLARE_BUF_PROC_ANS_SCALAR(float, 512, fill)
|
||||
ans[i].zmm[0] = vec;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, add)
|
||||
{
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
register __m128 c0 = _mm_add_ps(left[i].xmm[0], right[i].xmm[0]);
|
||||
register __m128 c1 = _mm_add_ps(left[i].xmm[1], right[i].xmm[1]);
|
||||
register __m128 c2 = _mm_add_ps(left[i].xmm[2], right[i].xmm[2]);
|
||||
register __m128 c3 = _mm_add_ps(left[i].xmm[3], right[i].xmm[3]);
|
||||
|
||||
ans[i].xmm[0] = c0;
|
||||
ans[i].xmm[1] = c1;
|
||||
ans[i].xmm[2] = c2;
|
||||
ans[i].xmm[3] = c3;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, add)
|
||||
{
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
register __m256 c0 = _mm256_add_ps(left[i].ymm[0], right[i].ymm[0]);
|
||||
register __m256 c1 = _mm256_add_ps(left[i].ymm[1], right[i].ymm[1]);
|
||||
ans[i].ymm[0] = c0;
|
||||
ans[i].ymm[1] = c1;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, add)
|
||||
{
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
register __m512 c0 = _mm512_add_ps(left[i].zmm[0], right[i].zmm[0]);
|
||||
ans[i].zmm[0] = c0;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, sub)
|
||||
{
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
register __m128 c0 = _mm_sub_ps(left[i].xmm[0], right[i].xmm[0]);
|
||||
register __m128 c1 = _mm_sub_ps(left[i].xmm[1], right[i].xmm[1]);
|
||||
register __m128 c2 = _mm_sub_ps(left[i].xmm[2], right[i].xmm[2]);
|
||||
register __m128 c3 = _mm_sub_ps(left[i].xmm[3], right[i].xmm[3]);
|
||||
|
||||
ans[i].xmm[0] = c0;
|
||||
ans[i].xmm[1] = c1;
|
||||
ans[i].xmm[2] = c2;
|
||||
ans[i].xmm[3] = c3;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, sub)
|
||||
{
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
register __m256 c0 = _mm256_sub_ps(left[i].ymm[0], right[i].ymm[0]);
|
||||
register __m256 c1 = _mm256_sub_ps(left[i].ymm[1], right[i].ymm[1]);
|
||||
ans[i].ymm[0] = c0;
|
||||
ans[i].ymm[1] = c1;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, sub)
|
||||
{
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
register __m512 c0 = _mm512_sub_ps(left[i].zmm[0], right[i].zmm[0]);
|
||||
ans[i].zmm[0] = c0;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, scalar_mul)
|
||||
{
|
||||
register __m128 scalar_vec = ((__m128 *)(scalar->data))[0];
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
register __m128 c0 = _mm_mul_ps(right[i].xmm[0], scalar_vec);
|
||||
register __m128 c1 = _mm_mul_ps(right[i].xmm[1], scalar_vec);
|
||||
register __m128 c2 = _mm_mul_ps(right[i].xmm[2], scalar_vec);
|
||||
register __m128 c3 = _mm_mul_ps(right[i].xmm[3], scalar_vec);
|
||||
|
||||
ans[i].xmm[0] = c0;
|
||||
ans[i].xmm[1] = c1;
|
||||
ans[i].xmm[2] = c2;
|
||||
ans[i].xmm[3] = c3;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, scalar_mul)
|
||||
{
|
||||
register __m256 scalar_vec = ((__m256 *)(scalar->data))[0];
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
register __m256 c0 = _mm256_mul_ps(right[i].ymm[0], scalar_vec);
|
||||
register __m256 c1 = _mm256_mul_ps(right[i].ymm[1], scalar_vec);
|
||||
|
||||
ans[i].ymm[0] = c0;
|
||||
ans[i].ymm[1] = c1;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, scalar_mul)
|
||||
{
|
||||
register __m512 scalar_vec = ((__m512 *)(scalar->data))[0];
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
register __m512 c0 = _mm512_mul_ps(right[i].zmm[0], scalar_vec);
|
||||
|
||||
ans[i].zmm[0] = c0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -39,6 +39,23 @@ typedef union scalar_pack {
|
||||
uint64_t data[8];
|
||||
} scalar_pack;
|
||||
|
||||
// define operation style:
|
||||
|
||||
#define PANEL_OP 1
|
||||
#define BUFFER_OP 2
|
||||
#define KERNEL_OP 3
|
||||
|
||||
#define RIGHT_ANS_PARAM 1
|
||||
#define LEFT_RIGHT_ANS_PARAM 2
|
||||
#define RIGHT_ANS_SCALAR_PARAM 3
|
||||
#define LEFT_RIGHT_ANS_SCALAR_PARAM 4
|
||||
#define ANS_SCALAR_PARAM 5
|
||||
|
||||
typedef struct matrix_op_mode {
|
||||
int16_t operation_style; /* PANEL_OP, BUFFER_OP, KERNEL_OP */
|
||||
int16_t parameter_style; /* RIGHT_ANS_PARAM, LEFT_RIGHT_ANS_PARAM, e.g. */
|
||||
} matrix_op_mode;
|
||||
|
||||
/* Mirrors StgSharp.Mathematics.Numeric.MatrixParallelTaskPackage<T> (128 bytes). */
|
||||
#define MAT_TASK(T) \
|
||||
struct { \
|
||||
@@ -62,7 +79,7 @@ typedef union scalar_pack {
|
||||
scalar_pack *scalar; /* Offset 80 */ \
|
||||
void *compute_handle; /* Offset 88 */ \
|
||||
int32_t prim_count; /* Offset 96 */ \
|
||||
int32_t compute_mode; /* Offset 100 */ \
|
||||
matrix_op_mode compute_mode; /* Offset 100 */ \
|
||||
int32_t sec_count; /* Offset 104 */ \
|
||||
int32_t reserved_int0; /* Offset 108 */ \
|
||||
int32_t prim_tile_offset; /* Offset 112 */ \
|
||||
@@ -93,7 +110,7 @@ typedef void(SN_DECL *BUF_PROC_LRA)(mat_kernel *left, mat_kernel *right, mat_ker
|
||||
|
||||
#define DECLARE_BUF_PROC_ANS_SCALAR(T_type, T_arch, T_op_name) \
|
||||
INTERNAL void SN_DECL BUF_PROC(T_type, T_arch, T_op_name)( \
|
||||
MAT_KERNEL(T_type) *restrict ans, scalar_pack const *scalar, int count)
|
||||
MAT_KERNEL(T_type) *restrict ans, scalar_pack const *scalar, size_t count)
|
||||
#define DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(T_type, T_arch, T_op_name) \
|
||||
INTERNAL void SN_DECL BUF_PROC(T_type, T_arch, T_op_name)( \
|
||||
MAT_KERNEL(T_type) const *right, MAT_KERNEL(T_type) *restrict ans, \
|
||||
@@ -101,14 +118,14 @@ typedef void(SN_DECL *BUF_PROC_LRA)(mat_kernel *left, mat_kernel *right, mat_ker
|
||||
#define DECLARE_BUF_PROC_LEFT_RIGHT_ANS_SCALAR(T_type, T_arch, T_op_name) \
|
||||
INTERNAL void SN_DECL BUF_PROC(T_type, T_arch, T_op_name)( \
|
||||
MAT_KERNEL(T_type) const *left, MAT_KERNEL(T_type) const *right, \
|
||||
MAT_KERNEL(T_type) *restrict ans, scalar_pack const *scalar, int count)
|
||||
MAT_KERNEL(T_type) *restrict ans, scalar_pack const *scalar, size_t count)
|
||||
#define DECLARE_BUF_PROC_RIGHT_ANS(T_type, T_arch, T_op_name) \
|
||||
INTERNAL void SN_DECL BUF_PROC(T_type, T_arch, T_op_name)( \
|
||||
MAT_KERNEL(T_type) const *right, MAT_KERNEL(T_type) *restrict ans, int count)
|
||||
MAT_KERNEL(T_type) const *right, MAT_KERNEL(T_type) *restrict ans, size_t count)
|
||||
#define DECLARE_BUF_PROC_LEFT_RIGHT_ANS(T_type, T_arch, T_op_name) \
|
||||
INTERNAL void SN_DECL BUF_PROC(T_type, T_arch, T_op_name)( \
|
||||
MAT_KERNEL(T_type) const *left, MAT_KERNEL(T_type) const *right, \
|
||||
MAT_KERNEL(T_type) *restrict ans, int count)
|
||||
MAT_KERNEL(T_type) *restrict ans, size_t count)
|
||||
|
||||
#pragma endregion
|
||||
|
||||
@@ -176,23 +193,25 @@ typedef uint64_t(SN_DECL *FACTORIALROC)(int n);
|
||||
|
||||
INTERNAL void f32_normalize(VEC(float) * source, VEC(float) * target);
|
||||
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, sse, add);
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, avx, add);
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, 512, add);
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, add);
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, add);
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, add);
|
||||
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, sse, sub);
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, avx, sub);
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, 512, sub);
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, sse, sub);
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, avx, sub);
|
||||
DECLARE_BUF_PROC_LEFT_RIGHT_ANS(float, 512, sub);
|
||||
|
||||
DECLARE_KER_PROC_RIGHT_ANS(float, sse, transpose);
|
||||
DECLARE_KER_PROC_RIGHT_ANS(float, avx, transpose);
|
||||
DECLARE_KER_PROC_RIGHT_ANS(float, 512, transpose);
|
||||
|
||||
DECLARE_KER_PROC_RIGHT_ANS_SCALAR(float, sse, scalar_mul);
|
||||
DECLARE_KER_PROC_RIGHT_ANS_SCALAR(float, avx, scalar_mul);
|
||||
DECLARE_KER_PROC_RIGHT_ANS_SCALAR(float, 512, scalar_mul);
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, sse, scalar_mul);
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, avx, scalar_mul);
|
||||
DECLARE_BUF_PROC_RIGHT_ANS_SCALAR(float, 512, scalar_mul);
|
||||
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(float, sse, fill);
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(float, avx, fill);
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(float, 512, fill);
|
||||
|
||||
#pragma endregion
|
||||
|
||||
@@ -231,17 +250,19 @@ INTERNAL int SN_DECL index_pair_sse(short const *str, uint32_t target, int lengt
|
||||
|
||||
#pragma endregion
|
||||
|
||||
// Reordered to match C# IntrinsicContext field order
|
||||
// C# order: city_hash_simplify, f32_add, f32_fill, f32_fma, f32_scalar_mul, f32_sub, f32_transpose, factorial_simd, index_pair, normalize_3
|
||||
typedef struct sn_intrinsic {
|
||||
HASH city_hash_simplify;
|
||||
FACTORIALROC factorial_simd;
|
||||
INDEX_PAIR index_pair;
|
||||
KER_PROC_LRA f32_kernel_add;
|
||||
KER_PROC_AS f32_kernel_fill;
|
||||
PNL_PROC_LRA f32_panel_fma;
|
||||
KER_PROC_LRA f32_kernel_scalar_mul;
|
||||
KER_PROC_LRA f32_kernel_sub;
|
||||
KER_PROC_RA f32_kernel_transpose;
|
||||
VECTORNORMALIZEPROC f32_normalize_3;
|
||||
HASH city_hash_simplify; // city_hash_simplify
|
||||
BUF_PROC_LRA f32_buffer_add; // f32_add
|
||||
BUF_PROC_AS f32_buffer_fill; // f32_fill
|
||||
PNL_PROC_LRA f32_panel_fma; // f32_fma (panel variant)
|
||||
BUF_PROC_LRA f32_kernel_scalar_mul; // f32_scalar_mul (right+ans+scalar variant mapped here)
|
||||
BUF_PROC_LRA f32_kernel_sub; // f32_sub
|
||||
KER_PROC_RA f32_kernel_transpose; // f32_transpose
|
||||
FACTORIALROC factorial_simd; // factorial_simd
|
||||
INDEX_PAIR index_pair; // index_pair
|
||||
VECTORNORMALIZEPROC f32_normalize_3; // normalize_3
|
||||
} sn_intrinsic;
|
||||
|
||||
typedef enum most_advanced_instruction {
|
||||
|
||||
@@ -1,87 +1,5 @@
|
||||
#include "sn_intrinsic.h"
|
||||
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(float, sse, fill)
|
||||
{
|
||||
register __m128 vec = _mm_set_ps1(((float *)(scalar->data))[0]);
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
ans[i].xmm[0] = vec;
|
||||
ans[i].xmm[1] = vec;
|
||||
ans[i].xmm[2] = vec;
|
||||
ans[i].xmm[3] = vec;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(float, avx, fill)
|
||||
{
|
||||
register __m256 vec = _mm256_broadcast_ss(((float *)(scalar->data)));
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
ans[i].ymm[0] = vec;
|
||||
ans[i].ymm[1] = vec;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_BUF_PROC_ANS_SCALAR(float, 512, fill)
|
||||
{
|
||||
register __m512 vec = _mm512_broadcastss_ps(((__m128 *)(scalar->data))[0]);
|
||||
for (size_t i = 0; i < count; i++) {
|
||||
ans[i].zmm[0] = vec;
|
||||
}
|
||||
}
|
||||
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, sse, add)
|
||||
{
|
||||
register __m128 c0 = _mm_add_ps(left->xmm[0], right->xmm[0]);
|
||||
register __m128 c1 = _mm_add_ps(left->xmm[1], right->xmm[1]);
|
||||
register __m128 c2 = _mm_add_ps(left->xmm[2], right->xmm[2]);
|
||||
register __m128 c3 = _mm_add_ps(left->xmm[3], right->xmm[3]);
|
||||
|
||||
ans->xmm[0] = c0;
|
||||
ans->xmm[1] = c1;
|
||||
ans->xmm[2] = c2;
|
||||
ans->xmm[3] = c3;
|
||||
}
|
||||
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, avx, add)
|
||||
{
|
||||
register __m256 c0 = _mm256_add_ps(left->ymm[0], right->ymm[0]);
|
||||
register __m256 c1 = _mm256_add_ps(left->ymm[1], right->ymm[1]);
|
||||
ans->ymm[0] = c0;
|
||||
ans->ymm[1] = c1;
|
||||
}
|
||||
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, 512, add)
|
||||
{
|
||||
register __m512 c0 = _mm512_add_ps(left->zmm[0], right->zmm[0]);
|
||||
ans->zmm[0] = c0;
|
||||
}
|
||||
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, sse, sub)
|
||||
{
|
||||
register __m128 c0 = _mm_sub_ps(left->xmm[0], right->xmm[0]);
|
||||
register __m128 c1 = _mm_sub_ps(left->xmm[1], right->xmm[1]);
|
||||
register __m128 c2 = _mm_sub_ps(left->xmm[2], right->xmm[2]);
|
||||
register __m128 c3 = _mm_sub_ps(left->xmm[3], right->xmm[3]);
|
||||
|
||||
ans->xmm[0] = c0;
|
||||
ans->xmm[1] = c1;
|
||||
ans->xmm[2] = c2;
|
||||
ans->xmm[3] = c3;
|
||||
}
|
||||
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, avx, sub)
|
||||
{
|
||||
register __m256 c0 = _mm256_sub_ps(left->ymm[0], right->ymm[0]);
|
||||
register __m256 c1 = _mm256_sub_ps(left->ymm[1], right->ymm[1]);
|
||||
ans->ymm[0] = c0;
|
||||
ans->ymm[1] = c1;
|
||||
}
|
||||
|
||||
DECLARE_KER_PROC_LEFT_RIGHT_ANS(float, 512, sub)
|
||||
{
|
||||
register __m512 c0 = _mm512_sub_ps(left->zmm[0], right->zmm[0]);
|
||||
ans->zmm[0] = c0;
|
||||
}
|
||||
|
||||
// Matrix transpose implementations
|
||||
DECLARE_KER_PROC_RIGHT_ANS(float, sse, transpose)
|
||||
{
|
||||
@@ -124,38 +42,3 @@ DECLARE_KER_PROC_RIGHT_ANS(float, 512, transpose)
|
||||
|
||||
ans->zmm[0] = _mm512_permutexvar_ps(transpose_indices, matrix);
|
||||
}
|
||||
|
||||
DECLARE_KER_PROC_RIGHT_ANS_SCALAR(float, sse, scalar_mul)
|
||||
{
|
||||
register __m128 scalar_vec = ((__m128 *)(scalar->data))[0];
|
||||
|
||||
register __m128 c0 = _mm_mul_ps(right->xmm[0], scalar_vec);
|
||||
register __m128 c1 = _mm_mul_ps(right->xmm[1], scalar_vec);
|
||||
register __m128 c2 = _mm_mul_ps(right->xmm[2], scalar_vec);
|
||||
register __m128 c3 = _mm_mul_ps(right->xmm[3], scalar_vec);
|
||||
|
||||
ans->xmm[0] = c0;
|
||||
ans->xmm[1] = c1;
|
||||
ans->xmm[2] = c2;
|
||||
ans->xmm[3] = c3;
|
||||
}
|
||||
|
||||
DECLARE_KER_PROC_RIGHT_ANS_SCALAR(float, avx, scalar_mul)
|
||||
{
|
||||
register __m256 scalar_vec = ((__m256 *)(scalar->data))[0];
|
||||
|
||||
register __m256 c0 = _mm256_mul_ps(right->ymm[0], scalar_vec);
|
||||
register __m256 c1 = _mm256_mul_ps(right->ymm[1], scalar_vec);
|
||||
|
||||
ans->ymm[0] = c0;
|
||||
ans->ymm[1] = c1;
|
||||
}
|
||||
|
||||
DECLARE_KER_PROC_RIGHT_ANS_SCALAR(float, 512, scalar_mul)
|
||||
{
|
||||
register __m512 scalar_vec = ((__m512 *)(scalar->data))[0];
|
||||
|
||||
register __m512 c0 = _mm512_mul_ps(right->zmm[0], scalar_vec);
|
||||
|
||||
ans->zmm[0] = c0;
|
||||
}
|
||||
|
||||
@@ -65,10 +65,11 @@ void load_intrinsic_sse(sn_intrinsic *context)
|
||||
context->city_hash_simplify = city_hash_simplify_sse;
|
||||
context->factorial_simd = factorial_simd_sse;
|
||||
context->index_pair = index_pair_sse;
|
||||
context->f32_kernel_add = KER_PROC(float, sse, add);
|
||||
context->f32_buffer_add = BUF_PROC(float, sse, add);
|
||||
context->f32_panel_fma = KER_PROC(float, sse, fma);
|
||||
context->f32_kernel_scalar_mul = KER_PROC(float, sse, scalar_mul);
|
||||
context->f32_kernel_sub = KER_PROC(float, sse, sub);
|
||||
context->f32_buffer_fill = BUF_PROC(float, sse, fill);
|
||||
context->f32_kernel_scalar_mul = BUF_PROC(float, sse, scalar_mul);
|
||||
context->f32_kernel_sub = BUF_PROC(float, sse, sub);
|
||||
context->f32_kernel_transpose = KER_PROC(float, sse, transpose);
|
||||
context->f32_normalize_3 = f32_normalize;
|
||||
}
|
||||
@@ -78,10 +79,11 @@ void load_intrinsic_avx(sn_intrinsic *context)
|
||||
context->city_hash_simplify = city_hash_simplify_sse;
|
||||
context->factorial_simd = factorial_simd_sse;
|
||||
context->index_pair = index_pair_sse;
|
||||
context->f32_kernel_add = KER_PROC(float, avx, add);
|
||||
context->f32_buffer_add = BUF_PROC(float, avx, add);
|
||||
context->f32_panel_fma = KER_PROC(float, sse, fma);
|
||||
context->f32_kernel_scalar_mul = KER_PROC(float, avx, scalar_mul);
|
||||
context->f32_kernel_sub = KER_PROC(float, avx, sub);
|
||||
context->f32_buffer_fill = BUF_PROC(float, avx, fill);
|
||||
context->f32_kernel_scalar_mul = BUF_PROC(float, avx, scalar_mul);
|
||||
context->f32_kernel_sub = BUF_PROC(float, avx, sub);
|
||||
context->f32_kernel_transpose = KER_PROC(float, avx, transpose);
|
||||
context->f32_normalize_3 = f32_normalize;
|
||||
}
|
||||
@@ -91,10 +93,11 @@ void load_intrinsic_512(sn_intrinsic *context)
|
||||
context->city_hash_simplify = city_hash_simplify_sse;
|
||||
context->factorial_simd = factorial_simd_sse;
|
||||
context->index_pair = index_pair_sse;
|
||||
context->f32_kernel_add = KER_PROC(float, 512, add);
|
||||
context->f32_buffer_add = BUF_PROC(float, 512, add);
|
||||
context->f32_panel_fma = KER_PROC(float, sse, fma);
|
||||
context->f32_kernel_scalar_mul = KER_PROC(float, 512, scalar_mul);
|
||||
context->f32_kernel_sub = KER_PROC(float, 512, sub);
|
||||
context->f32_buffer_fill = BUF_PROC(float, 512, fill);
|
||||
context->f32_kernel_scalar_mul = BUF_PROC(float, 512, scalar_mul);
|
||||
context->f32_kernel_sub = BUF_PROC(float, 512, sub);
|
||||
context->f32_kernel_transpose = KER_PROC(float, 512, transpose);
|
||||
context->f32_normalize_3 = f32_normalize;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user