cudaFreeHost() 无效参数错误
cudaFreeHost() invalid arguments error
我在类中使用cudaMallocHost()
和cudaFreeHost()
。我的代码示例:
#include "cuda.h"
#include "cuda_runtime.h"
class myClass{
public:
int* bitmap[5];
void Malloc(){
for ( int i = 0 ; i < 5 ; i++){
cudaMallocHost(&bitmap[i], sizeof(int)*10000);
memset(bitmap[i], 0, sizeof(int)*10000);
}
}
void Delete(){
for ( int i = 0 ; i < 5; i++){
cudaFreeHost(bitmap[i]);
}
}
};
int main(){
myClass mc;
mc.Malloc();
//copy 'bitmap[]' to gpu and call some kernel function
cudaDeviceSynchronize();
mc.Delete();
}
上面的代码在调用cudaFreeHost()
时返回错误无效参数(值 11),cudaFreeHost
返回任何错误。
我试图将指针数组更改为不同的变量,但仍然发生错误。我什至将cudaFreeHost()
放在cudaMallocHost()
之后,但仍然存在错误。
我验证了每次调用cudaFreeHost()
时都不会发生错误。
添加cudaDeviceSynchronize()
以确保完成所有复制操作。
如果我将所有 cudaHost 操作更改为正常操作(即新建和删除),程序工作正常。
我尝试将位图中的每个变量更改为 b1、b2、b3、b4、b5,如下所示,但发生了相同的错误。
cudaMallocHost(&b1, sizeof(int) * 10000);
cudaFreeHost(b1);
这个问题是通过在分配内存之前首先将点初始化为零来解决的,即在 for 循环的开头添加位图[i] = 0。 不太确定这如何影响结果,但它有效。
相关文章:
- C++声明模板参数阴影模板参数错误
- 为什么 CRTP 模板C++给出无效参数错误?
- (C/C++)fscanf_s从txt文件以字符形式读取数组时缺少整数参数错误
- 参数错误可能与类型不匹配有关?
- printf 和 strftime 的参数错误无效
- 如何修复"ctypes"。参数错误:参数 2:<键入"异常.类型错误">:RaspberryPi 中的错误类型"错误
- 如何修复"没有重载函数需要 2 个参数"错误C++
- 术语不计算为函数采用 1 个参数错误?
- 从带有 getline() 的文件读入一行上有多个信息得到无效参数错误
- 为什么我不能像使用 std::string::size_type 那样使用 QList::size_type?(模板参数错误)
- cudaFreeHost() 无效参数错误
- 精神语法不会编译:函数模板参数错误?
- C 功能具有参考参数错误的迭代器错误.寻求解释
- 使用getDefaultCommConfig使用无效的参数错误
- C++ 可变参数模板和模板模板参数:错误:模板参数列表中参数 1 处的类型/值不匹配
- 使用SWIG生成的Python库时,向量分配器参数错误
- 错误C2664:无法转换参数错误
- C 作为参数错误的功能
- 命令行参数错误
- 增强Python参数错误