允许Cuda中的静态大型阵列

允许Cuda中的静态大型阵列,cuda,Cuda,我工作的Gpu是一个带有6gb VRAM的特斯拉C2075。操作系统是Ubuntu64位的cuda toolkit 5.5。 我需要做什么才能允许全局设备静态阵列大于2gb? 我在Google或StackOverflow中找不到很多相关主题。我经常看到动态分配至少超过2GB数据的程序。因此,从理论上讲,静态分配一个_设备_阵列应该是可能的。为了解决这个问题,我提出以下建议: 将图形驱动程序更新至最新版本新驱动程序支持K20上的大容量分配(最高可达6GB),您的卡上也应支持它 将CUDA工具包更新

我工作的Gpu是一个带有6gb VRAM的特斯拉C2075。操作系统是Ubuntu64位的cuda toolkit 5.5。 我需要做什么才能允许全局设备静态阵列大于2gb?
我在Google或StackOverflow中找不到很多相关主题。

我经常看到动态分配至少超过2GB数据的程序。因此,从理论上讲,静态分配一个_设备_阵列应该是可能的。为了解决这个问题,我提出以下建议:

将图形驱动程序更新至最新版本新驱动程序支持K20上的大容量分配(最高可达6GB),您的卡上也应支持它 将CUDA工具包更新为6.5这可能不是必需的,但CUDA 6.5可能会与最新的驱动程序相处得更好
如果这不起作用,我会尝试分配锁定页面的内存。查看更多信息。分配后,要使其在设备上可见,需要对其进行映射。这支持DMA传输,可能是更快的解决方案。我在分配最多5GB设备内存的程序中看到了这种方法-请参阅。

您的意思是,如果我写设备int x[100000000];4gb应该正常运行吗?编译器中没有任何特殊标志?我现在在另一台装有Windows 7的电脑上,而且我也不能用Cudamalochost分配超过2gb的空间。请检查我的修订版。实际上,我可以使用900mb的全局范围设备阵列。我将尝试使用cudaLimitMallocHeapSize tough,感谢您指出cudaDeviceSEtLimit。问题是关于_设备_变量的分配。不是线程局部变量。不幸的是,OP的问题并不清楚。页锁定内存指的是主机内存,而不是设备内存。是的,如果映射,它可能会变得设备可见,但这与OP的要求相差甚远。CUDA框架似乎有2GB的静态设备分配限制。使用动态分配方法,例如Cudamaloc。