gpt4 book ai didi

io - 高效地将大文件(高达 2GB)传输到 CUDA GPU?

转载 作者:行者123 更新时间:2023-12-03 00:21:27 25 4
gpt4 key购买 nike

我正在开发一个 GPU 加速程序,该程序需要读取可变大小的整个文件。我的问题是,从文件读取并传输到协处理器(CUDA 设备)的最佳字节数是多少?

这些文件可能大至 2GiB,因此创建该大小的缓冲区似乎不是最好的主意。

最佳答案

您可以 cudaMalloc 设备上可以容纳的最大大小的缓冲区。之后,将这种大小的输入数据 block 从主机复制到设备,处理它,复制回结果并继续。

// Your input data on host
int hostBufNum = 5600000;
int* hostBuf = ...;

// Assume this is largest device buffer you can allocate
int devBufNum = 1000000;
int* devBuf;

cudaMalloc( &devBuf, sizeof( int ) * devBufNum );

int* hostChunk = hostBuf;
int hostLeft = hostBufNum;
int chunkNum = ( hostLeft < devBufNum ) ? hostLeft : devBufNum;

do
{
cudaMemcpy( devBuf, hostChunk, chunkNum * sizeof( int ) , cudaMemcpyHostToDevice);
doSomethingKernel<<< >>>( devBuf, chunkNum );

hostChunk = hostChunk + chunkNum;
hostLeft = hostBufNum - ( hostChunk - hostBuf );
} while( hostLeft > 0 );

关于io - 高效地将大文件(高达 2GB)传输到 CUDA GPU?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9731242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com