Hello I have a method to pass in a variable, is it possible to do it without puut the method cpu_kernel_trainMe in static ?
class StarPuNet
{
public:
void cpu_kernel_trainMe(void *buffers[], void *cl_arg) {}
int initStarPu()
{
starpu_codelet_init(&cl_);
cl_.cpu_funcs [0] = cpu_kernel_trainMe; //The problem is here
cl_.cpu_funcs_name[0] = "cpu_kernel_trainMe";
cl_.nbuffers = 3;
cl_.modes [0] = STARPU_R;
cl_.modes [1] = STARPU_R;
cl_.modes [2] = STARPU_W;
cl_.name = "trainMe";
return 0;
};
private:
starpu_codelet cl_;
}
The compiler :
In member function ‘int StarPuNet::initStarPu()’:
error: cannot convert ‘StarPuNet::cpu_kernel_trainMe’ from type
‘void (StarPuNet::)(void**, void*)’ to type ‘starpu_cpu_func_t’ {aka ‘void (*)(void**, void*)’}
I also tried :
cl_.cpu_funcs[0] = void (*cpu_kernel_trainMe)(void **, void *);
The compiler :
error: invalid use of member function ‘void StarPuNet::cpu_kernel_trainMe(void**, void*)’
(did you forget the ‘()’ ?)
Here the doc for cpu_funcs
Best regard