我目前正在使用 cudaMallocPitch()
来加载图像,但是对于非常大的图像它会失败,因为没有足够的可用内存。因为我在处理高光谱图像,所以我有非常非常大的图像要处理。我怎样才能部分加载图像,处理它然后将结果放在磁盘上?
最佳答案
有内存足以容纳 2G 图像的 CUDA 板 - Tesla M2050 和 M2070 分别有 3GB 和 6GB 内存。如果您无法证明为此类硬件预付费用,您可以以 2.10 美元/小时的价格在 Amazon EC2 上使用 cg1.4xlarge 实例类型“租用”一台配备两台 Tesla M2050 的服务器。
对于大于可用视频内存量的图像,您将不得不使用显式 memcpy 手动将图像数据循环进出视频内存,并以 block 的形式进行处理。如果处理时间与将数据传入/传出板所需的时间相当,您还应该考虑使用异步 memcpy 和 CUDA 流,以重叠传输和计算。
关于image - 如何在 CUDA 中处理非常大的图像处理?图片 > 2GB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9264933/