在CUDA中为GPU内存中的变量赋值
assigning values to variables in GPU memory in CUDA
我的问题是我可以显式地将值分配给坐在GPU内存中的变量,还是我总是要使用cudaMemcpy?
例如我可以这样做吗:
int * a;
cudaMalloc((void**)&a, sizeof(int));
*a = 5;
或者can I only do
int * dev_a;
int a = 5;
cudaMalloc((void**)&dev_a, sizeof(int));
cudaMemcpy(dev_a, &a, sizeof(int) , cudaMemcpyHostToDevice);
简单的回答是,你不能给设备内存赋值。这有两个原因。原因是,设备内存不在ram中,而是物理上在gpu上,您必须通过pcie桥传输值。
更复杂的答案是,从cuda 6开始,你可以使用统一内存,它可以做你想做的事情。请记住,传输确实是在后台进行的,并且需要时间。
https://devblogs.nvidia.com/parallelforall/unified-memory-in-cuda-6/相关文章:
- 为"adjacent"变量赋值时出现问题
- 为什么我不能在返回 const 的布尔函数中为类成员变量赋值?C++
- c++问题:给一个变量赋值后,另一个变量发生了变化
- 如何在不使用赋值运算符的情况下为动态变量赋值?
- 为什么我不能为变量赋值函数?
- 可视化的c++变量赋值使代码正常工作
- 如何为结构类型变量赋值
- 使用 boost python 从 c++ 为 python 中的类成员变量赋值
- QT变量赋值,<没有这样的值>,SIGSEGV
- C++:为全局类变量赋值
- 从类外部为类中的变量赋值
- 在 c++ 中为字符串变量赋值
- 为类中的私有静态变量赋值
- 使用类为变量赋值 (C++)
- 在编译时为变量赋值
- C ++变量赋值,这是正常的方式吗
- 在C++中为类变量赋值后声明类变量
- 了解工厂方法和静态变量赋值的返回值优化 (Visual Studio)
- 如何在 c++ 中从函数获取返回值而不为其变量赋值
- 简单的引用变量赋值导致对象的全局指针出现segfault