作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 C 代码,它读取一个充满数据的文件,这些数据以 block (称为帧)分隔,然后获取每个帧并将其保存在 vector 中 - 每个帧都是一个 vector 分量。现在我想用 CUDA 做同样的事情,以便我的程序以并行方式读取和保存每个帧。因此,首先我需要将数据文件从主机复制到 GPU 设备。
我正在考虑使用 cudaMalloc 来执行此操作,但我想知道是否有其他方法可以将文件从主机复制到设备。
我想这是一件简单的事情,但我才刚刚开始使用 CUDA。提前致谢!
最佳答案
GPU 有不同的内存,您需要将所有内容复制到其中。您需要做的第一件事是为您提供空间。然后使用 cudaMemcpy
复制数据。
奖励:还有 cudaMallocManaged
可以自动管理设备之间的复制。如果您不想处理 cudaMemcpy
,这是很好的选择。
以下是使用 CUDA 的简单方法:
int main(int argc, char *argv[])
{
double * data_host = new double[N];
// read your data here and put it in "data_host"
// ...
// allocate and copy your data to device
double * data_gpu;
cudaMalloc((void **) &data_gpu, N * sizeof(double));
cudaMemcpy(data_gpu, data_host, N * sizeof(double), cudaMemcpyHostToDevice);
// launch kernel
kernel<<< number_of_blocks, number_of_threads>>> (data_gpu);
// copy back the result
cudaMemcpy(data_host, data_gpu, N * sizeof(double), cudaMemcpyDeviceToHost);
// Do more stuff with your data
}
关于c - 如何将文件从主机复制到 GPU 设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58811802/
我是一名优秀的程序员,十分优秀!