有个函数在hip和cuda中函数的形式是一样的,但是我在使用hip替换的时候出了一个奇怪的错误。
有位老师说:hipFuncGetAttributes第二个参数是‘const void *’类型,cudaFuncGetAttributes第二个参数在你的场景是void *,要做一个类型强转,但是我试过了,没有效果
根据您的代码,之前在CUDA上可以是因为CUDA提供了该函数对应的C++ API,可以处理包括template实例化的函数做参数。目前HIP中仅提供了C API,第二个参数类型要求为const void ,您可以尝试使用以下代码实现: void (ptr)(函数参数声明列表) = FlushKernel<void>; const char *ptr_t = (char *)ptr; err = cudaFuncGetAttributes(&attrib, ptr_t);
在function定义的时候,直接定义为const void *类型呢?
根据您的代码,之前在CUDA上可以是因为CUDA提供了该函数对应的C++ API,可以处理包括template实例化的函数做参数。目前HIP中仅提供了C API,第二个参数类型要求为const void ,您可以尝试使用以下代码实现:
void (ptr)(函数参数声明列表) = FlushKernel<void>;
const char *ptr_t = (char *)ptr;
err = cudaFuncGetAttributes(&attrib, ptr_t);
在function定义的时候,直接定义为const void *类型呢?