decide to use L4 to solve numa and pack problem for large compute.
This commit is contained in:
@@ -17,6 +17,11 @@
|
||||
INTERNAL void SN_DECL STD_MK_PROC_NAME(T_type, T_arch, T_feature, \
|
||||
T_op)(MAT_TASK(T_type) const *task)
|
||||
|
||||
#define _SN_STD__PROBE_0 0
|
||||
#define _SN_STD__PROBE_1 1
|
||||
#define SN_STD__PROBE_PRINT(x) _SN_STD__PROBE_##x
|
||||
#define SN_STD__PROBE(x) SN_STD__PROBE_PRINT(x)
|
||||
|
||||
#pragma region param styles
|
||||
|
||||
#define _SN_MATPROC_LEFT_RIGHT_ANS 1
|
||||
@@ -25,32 +30,32 @@
|
||||
#define _SN_MATPROC_RIGHT_ANS_SCALAR 1
|
||||
#define _SN_MATPROC_ANS_SCALAR 1
|
||||
|
||||
#define _SN_MK_EXPAND_RIGHT_ANS(T) \
|
||||
MAT_KERNEL(T) const *right = mat_task_local->mat_1; \
|
||||
MAT_KERNEL(T) *restrict ans = mat_task_local->mat_2;
|
||||
#define _SN_MK_EXPAND_RIGHT_ANS \
|
||||
_mat_kernel_local const *right = mat_task_local->mat_1; \
|
||||
_mat_kernel_local *restrict ans = mat_task_local->mat_2;
|
||||
|
||||
#define _SN_MK_EXPAND_LEFT_RIGHT_ANS(T) \
|
||||
MAT_KERNEL(T) const *left = mat_task_local->mat_0; \
|
||||
MAT_KERNEL(T) const *right = mat_task_local->mat_1; \
|
||||
MAT_KERNEL(T) *restrict ans = mat_task_local->mat_2;
|
||||
#define _SN_MK_EXPAND_LEFT_RIGHT_ANS(T) \
|
||||
_mat_kernel_local const *left = mat_task_local->mat_0; \
|
||||
_mat_kernel_local const *right = mat_task_local->mat_1; \
|
||||
_mat_kernel_local *restrict ans = mat_task_local->mat_2;
|
||||
|
||||
#define _SN_MK_EXPAND_RIGHT_ANS_SCALAR(T) \
|
||||
MAT_KERNEL(T) const *right = mat_task_local->mat_1; \
|
||||
MAT_KERNEL(T) *restrict ans = mat_task_local->mat_2; \
|
||||
void *restrict scalar = mat_task_local->scalar;
|
||||
#define _SN_MK_EXPAND_RIGHT_ANS_SCALAR(T) \
|
||||
_mat_kernel_local const *right = mat_task_local->mat_1; \
|
||||
_mat_kernel_local *restrict ans = mat_task_local->mat_2; \
|
||||
scalar_pack *restrict scalar = mat_task_local->scalar;
|
||||
|
||||
#define _SN_MK_EXPAND_LEFT_RIGHT_ANS_SCALAR(T) \
|
||||
MAT_KERNEL(T) const *left = mat_task_local->mat_0; \
|
||||
MAT_KERNEL(T) const *right = mat_task_local->mat_1; \
|
||||
MAT_KERNEL(T) *restrict ans = mat_task_local->mat_2; \
|
||||
void *restrict scalar = mat_task_local->scalar;
|
||||
#define _SN_MK_EXPAND_LEFT_RIGHT_ANS_SCALAR(T) \
|
||||
_mat_kernel_local const *left = mat_task_local->mat_0; \
|
||||
_mat_kernel_local const *right = mat_task_local->mat_1; \
|
||||
_mat_kernel_local *restrict ans = mat_task_local->mat_2; \
|
||||
scalar_pack *restrict scalar = mat_task_local->scalar;
|
||||
|
||||
#define _SN_MK_EXPAND_ANS_SCALAR(T) \
|
||||
MAT_KERNEL(T) *restrict ans = mat_task_local->mat_2; \
|
||||
scalar_pack *restrict scalar = &(mat_task_local->padding);
|
||||
|
||||
#define _SN_PARAM_STYLE(T) _SN_MATPROC_##T
|
||||
#define _SN_MK_EXPAND_PARAM(style, T) _SN_MK_EXPAND_##style##(T)
|
||||
#define _SN_MK_EXPAND_PARAM(style) _SN_MK_EXPAND_##style
|
||||
|
||||
#pragma endregion
|
||||
|
||||
@@ -65,6 +70,8 @@
|
||||
size_t count = UNSAFE_AS(size_t, task->padding.data[1]);
|
||||
|
||||
#define _MK_MKPROC_EXPAND_INDEX_KERNEL \
|
||||
size_t i = UNSAFE_AS(size_t, task->i); \
|
||||
size_t j = UNSAFE_AS(size_t, task->j); \
|
||||
size_t common_i = UNSAFE_AS(size_t, task->common_i); \
|
||||
size_t common_j = UNSAFE_AS(size_t, task->common_j); \
|
||||
size_t common_k = UNSAFE_AS(size_t, task->common_k);
|
||||
@@ -74,10 +81,10 @@
|
||||
|
||||
#pragma endregion
|
||||
|
||||
#define __mk_param_std(mem, param, T) \
|
||||
static_assert((_SN_PARAM_STYLE(param)) == 1, \
|
||||
"EXPAND_PARAM: invalid param style '" #param "'"); \
|
||||
static_assert((_SN_MEM_LAYOUT(mem)) == 1, "EXPAND_PARAM: invalid mem layout '" #mem "'"); \
|
||||
typedef MAT_TASK(T) _mat_task_local; \
|
||||
_SN_MK_EXPAND_PARAM(param, T) _SN_MK_EXPAND_MEM(mem)
|
||||
#define __mk_param_std(mem, param, T) \
|
||||
typedef MAT_KERNEL(T) _mat_kernel_local; \
|
||||
typedef MAT_TASK(T) _mat_task_local; \
|
||||
_mat_task_local *_ = (_SN_PARAM_STYLE(param), (_SN_MEM_LAYOUT(mem)), task); \
|
||||
_SN_MK_EXPAND_PARAM(param); \
|
||||
_SN_MK_EXPAND_MEM(mem)
|
||||
#endif // !SN_INTRINSIC_PARAM_EXPAND
|
||||
|
||||
Reference in New Issue
Block a user