我是 CUDA 新手,正在尝试对大量数组进行一些处理。每个数组是一个大约 1000 个字符的数组(不是字符串,只是存储为字符),最多可以有 100 万个字符,因此要传输大约 1 gb 的数据。这些数据已经全部加载到内存中,并且我有一个指向每个数组的指针,但我认为我不能依赖所有数据在内存中的顺序,所以我不能一次调用就全部传输。
我目前第一次尝试使用推力,并基于此消息的解决方案 ...我使用分配所有内存的静态调用创建了一个结构,然后每个单独的构造函数复制该数组,我有一个转换调用,它接收带有指向设备数组的指针的结构。
我的问题是这显然非常慢,因为每个数组都是单独复制的。我想知道如何更快地传输这些数据。
在这个问题中(这个问题大部分是不相关的,但我认为用户正在尝试做类似的事情)talonmies 建议他们尝试使用 zip 迭代器,但我看不出这将如何帮助传输大量数组。
我在写这个问题时也刚刚发现了 cudaMemcpy2DToArray 和 cudaMemcpy2D ,所以也许这些就是答案,但我没有立即看到它们是如何工作的,因为它们似乎都没有将指向指针的指针作为输入......
欢迎任何建议...