从主机功能释放设备分配的内存是否有效?我正在编写一些应该在主机和设备上使用的 C++ 类。我的构造函数和析构函数是这样的:
class myClass {
public:
__host__ __device__ myClass() {
#if defined(__CUDA_ARCH__)
data = (char*)malloc(DATA_SIZE);
#else
cudaMalloc(&data,DATA_SIZE);
#endif
}
__host__ __device__ ~myClass() {
#if defined(__CUDA_ARCH__)
free(data);
#else
cudaFree(data);
#endif
}
private:
char* data;
}
上面的代码编译,如果我在设备上构造一个类并在主机上释放它,我没有收到错误。但是这种情况并没有记录在 CUDA 开发者论文中。