當我使用cudaMalloc(100)時,它保留了100多個B(根據一些用戶在這裏,這是由於粒度問題和家務管理信息造成的)有沒有辦法知道cudaMalloc要保留多少空間?
是否有可能確定這個空間有多大將基於字節I需要保留
謝謝你這麼多
編輯:?我會解釋爲什麼我需要知道
我想申請在GPU上的巨大圖像卷積算法來做到這一點。 ,因爲GPU上沒有足夠的內存來保存它,所以我需要分割b中的圖像行的多次調用內核幾次。
事實上,我需要發送2個圖像,OnlyRead矩陣和Results矩陣。
我想根據可用內存的大小先驗地計算出可以發送到設備的最大行數。
第一個cudaMalloc成功執行,但是在嘗試執行第二個CudaMalloc時出現問題,因爲第一個預留佔用了比預期更多的Bytes。
我在做什麼,現在正在考慮的可用內存數量比它是什麼少10%......但是這僅僅是從哪兒來一個神奇的數字..
[This](http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#device-memory-accesses)可能是有益的:「任何駐留在全球的變量的地址內存或由驅動程序或運行時API的內存分配例程之一返回的內存總是至少與256字節對齊。「因此,我希望任何分配請求至少「用盡」到下一個更高的256個字節的倍數。話雖如此,AFAIK對你的問題的答案沒有明確說明,所以試圖發現它是什麼,然後依賴它可能是有風險的。 – 2014-11-08 17:53:24
@RobertCrovella我知道爲什麼「甚至是256個字節的倍數」?爲什麼不至少使用256的下一個倍數? – Farzad 2014-11-08 18:01:38
此[此帖子](http://stackoverflow.com/questions/14082964/cuda-alignment-256bytes-seriously)是相關的。 – Farzad 2014-11-08 18:01:59