50 baris
1.6 KiB
C++
50 baris
1.6 KiB
C++
#pragma once
|
|
|
|
#include "grid_launch.h"
|
|
#include "hc.hpp"
|
|
|
|
class grid_launch_parm_cxx : public grid_launch_parm {
|
|
public:
|
|
grid_launch_parm_cxx() = default;
|
|
|
|
// customized serialization: don't need av and cf in kernel
|
|
__attribute__((annotate("serialize"))) void __cxxamp_serialize(Kalmar::Serialize& s) const {
|
|
s.Append(sizeof(int), &grid_dim.x);
|
|
s.Append(sizeof(int), &grid_dim.y);
|
|
s.Append(sizeof(int), &grid_dim.z);
|
|
s.Append(sizeof(int), &group_dim.x);
|
|
s.Append(sizeof(int), &group_dim.y);
|
|
s.Append(sizeof(int), &group_dim.z);
|
|
}
|
|
|
|
__attribute__((annotate("user_deserialize"))) grid_launch_parm_cxx(int grid_dim_x, int grid_dim_y,
|
|
int grid_dim_z,
|
|
int group_dim_x,
|
|
int group_dim_y,
|
|
int group_dim_z) {
|
|
grid_dim.x = grid_dim_x;
|
|
grid_dim.y = grid_dim_y;
|
|
grid_dim.z = grid_dim_z;
|
|
group_dim.x = group_dim_x;
|
|
group_dim.y = group_dim_y;
|
|
group_dim.z = group_dim_z;
|
|
}
|
|
};
|
|
|
|
|
|
extern inline void grid_launch_init(grid_launch_parm* lp) {
|
|
lp->grid_dim.x = lp->grid_dim.y = lp->grid_dim.z = 1;
|
|
|
|
lp->group_dim.x = lp->group_dim.y = lp->group_dim.z = 1;
|
|
|
|
lp->dynamic_group_mem_bytes = 0;
|
|
|
|
lp->barrier_bit = barrier_bit_queue_default;
|
|
lp->launch_fence = -1;
|
|
|
|
// TODO - set to NULL?
|
|
static hc::accelerator_view av = hc::accelerator().get_default_view();
|
|
lp->av = &av;
|
|
lp->cf = NULL;
|
|
}
|