2014-11-05 70 views
0

我工作的GPU是帶有6gb VRAM的Tesla C2075。操作系統是帶有cuda toolkit 5.5的Ubuntu 64位。 我需要做些什麼來允許全局__device__靜態數組大於2GB? 我在Google或StackOverflow中找不到許多相關主題。允許Cuda中的靜態大陣列

+0

對於靜態'__device__'分配,CUDA框架似乎具有2GB的限制。改用動態分配方法(例如'cudaMalloc')。 – 2014-11-08 02:48:03

回答

0

我經常看到的程序分配(動態至少)超過2GB的數據。所以理論上靜態分配一個__device__數組應該是可能的。爲了嘗試解決這個問題,我的建議:

  • 更新顯卡驅動程序到最新版本(新的驅動程序支持大的分配 - 高達6GB - 在K20,它應該支持你的卡上還有)
  • 更新您的CUDA工具包6.5(這可能不是必要的,但也許CUDA 6.5將與最新的驅動程序更好的相處)

如果這不起作用,我會嘗試分配頁面鎖定內存(固定)。檢查here欲瞭解更多信息。分配之後,爲了使其在設備上可見,需要映射它。這可以實現DMA傳輸,並且可能是更快的解決方案。我在分配高達5GB設備內存的程序中看到了這種方法 - 請參閱here

+0

你是說如果我寫__device__ int x [1000000000]; (4GB)它應該正常運行?編譯器中沒有任何特殊標誌? – liwing 2014-11-06 20:59:10

+0

我現在在另一臺裝有Windows 7的電腦上,而且我也無法分配超過2GB的cudaMallocHost。 – liwing 2014-11-06 23:45:35

+0

查看我修改的帖子 – VAndrei 2014-11-07 05:58:01