vx_serial runtime API
This commit is contained in:
@@ -12,7 +12,7 @@ extern "C" {
|
||||
|
||||
typedef struct {
|
||||
pfn_callback callback;
|
||||
const void * args;
|
||||
void * arg;
|
||||
int offset;
|
||||
int N;
|
||||
int R;
|
||||
@@ -21,7 +21,7 @@ typedef struct {
|
||||
typedef struct {
|
||||
struct context_t * ctx;
|
||||
pfn_workgroup_func wg_func;
|
||||
const void * args;
|
||||
void * arg;
|
||||
int offset;
|
||||
int N;
|
||||
int R;
|
||||
@@ -57,7 +57,7 @@ static void spawn_tasks_callback() {
|
||||
int offset = p_wspawn_args->offset + (wK * NT) + (tid * tK);
|
||||
|
||||
for (int task_id = offset, N = task_id + tK; task_id < N; ++task_id) {
|
||||
(p_wspawn_args->callback)(task_id, p_wspawn_args->args);
|
||||
(p_wspawn_args->callback)(task_id, p_wspawn_args->arg);
|
||||
}
|
||||
|
||||
vx_tmc(0 == wid);
|
||||
@@ -72,12 +72,12 @@ void spawn_remaining_tasks_callback(int nthreads) {
|
||||
wspawn_tasks_args_t* p_wspawn_args = (wspawn_tasks_args_t*)g_wspawn_args[core_id];
|
||||
|
||||
int task_id = p_wspawn_args->offset + tid;
|
||||
(p_wspawn_args->callback)(task_id, p_wspawn_args->args);
|
||||
(p_wspawn_args->callback)(task_id, p_wspawn_args->arg);
|
||||
|
||||
vx_tmc(1);
|
||||
}
|
||||
|
||||
void vx_spawn_tasks(int num_tasks, pfn_callback callback , const void * args) {
|
||||
void vx_spawn_tasks(int num_tasks, pfn_callback callback , void * arg) {
|
||||
// device specs
|
||||
int NC = vx_num_cores();
|
||||
int NW = vx_num_warps();
|
||||
@@ -112,7 +112,7 @@ void vx_spawn_tasks(int num_tasks, pfn_callback callback , const void * args) {
|
||||
fW = 1;
|
||||
|
||||
//--
|
||||
wspawn_tasks_args_t wspawn_args = { callback, args, core_id * tasks_per_core, fW, rW };
|
||||
wspawn_tasks_args_t wspawn_args = { callback, arg, core_id * tasks_per_core, fW, rW };
|
||||
g_wspawn_args[core_id] = &wspawn_args;
|
||||
|
||||
//--
|
||||
@@ -159,7 +159,7 @@ static void spawn_kernel_callback() {
|
||||
int gid1 = p_wspawn_args->ctx->global_offset[1] + j;
|
||||
int gid2 = p_wspawn_args->ctx->global_offset[2] + k;
|
||||
|
||||
(p_wspawn_args->wg_func)(p_wspawn_args->args, p_wspawn_args->ctx, gid0, gid1, gid2);
|
||||
(p_wspawn_args->wg_func)(p_wspawn_args->arg, p_wspawn_args->ctx, gid0, gid1, gid2);
|
||||
}
|
||||
|
||||
vx_tmc(0 == wid);
|
||||
@@ -188,12 +188,12 @@ static void spawn_kernel_remaining_callback(int nthreads) {
|
||||
int gid1 = p_wspawn_args->ctx->global_offset[1] + j;
|
||||
int gid2 = p_wspawn_args->ctx->global_offset[2] + k;
|
||||
|
||||
(p_wspawn_args->wg_func)(p_wspawn_args->args, p_wspawn_args->ctx, gid0, gid1, gid2);
|
||||
(p_wspawn_args->wg_func)(p_wspawn_args->arg, p_wspawn_args->ctx, gid0, gid1, gid2);
|
||||
|
||||
vx_tmc(1);
|
||||
}
|
||||
|
||||
void vx_spawn_kernel(struct context_t * ctx, pfn_workgroup_func wg_func, const void * args) {
|
||||
void vx_spawn_kernel(struct context_t * ctx, pfn_workgroup_func wg_func, void * arg) {
|
||||
// total number of WGs
|
||||
int X = ctx->num_groups[0];
|
||||
int Y = ctx->num_groups[1];
|
||||
@@ -241,7 +241,7 @@ void vx_spawn_kernel(struct context_t * ctx, pfn_workgroup_func wg_func, const v
|
||||
char log2X = fast_log2(X);
|
||||
|
||||
//--
|
||||
wspawn_kernel_args_t wspawn_args = { ctx, wg_func, args, core_id * wgs_per_core, fW, rW, isXYpow2, isXpow2, log2XY, log2X };
|
||||
wspawn_kernel_args_t wspawn_args = { ctx, wg_func, arg, core_id * wgs_per_core, fW, rW, isXYpow2, isXpow2, log2XY, log2X };
|
||||
g_wspawn_args[core_id] = &wspawn_args;
|
||||
|
||||
//--
|
||||
|
||||
Reference in New Issue
Block a user