Cuda 4 programımı profilliyordum ve bir aşamada çalışan işlemin 80 GiB'den fazla sanal bellek kullandığını belirtti. Beklediğimden çok daha fazlaydı. AçıkçaCuda çalışma zamanı, başlatma sonrasında 80 GiB sanal belleği neden saklıyor?
int deviceCount;
cudaGetDeviceCount(&deviceCount);
if (deviceCount == 0) {
perror("No devices supporting CUDA");
}
şudur ki: zamanla bellek haritası evrimini inceleyen ve yürüttüğü kod hangi satır karşılaştırarak sonra sanal bellek kullanımı 80'in üzerinde GiB kadar çarptın bu basit talimatları sonra ortaya çıktı İlk Cuda çağrısı, böylece çalışma zamanı başlatıldı. Bundan sonra hafıza haritası (kesik) gibi görünür:
Address Kbytes RSS Dirty Mode Mapping
0000000000400000 89796 14716 0 r-x-- prg
0000000005db1000 12 12 8 rw--- prg
0000000005db4000 80 76 76 rw--- [ anon ]
0000000007343000 39192 37492 37492 rw--- [ anon ]
0000000200000000 4608 0 0 ----- [ anon ]
0000000200480000 1536 1536 1536 rw--- [ anon ]
0000000200600000 83879936 0 0 ----- [ anon ]
Şimdi sanal bellek alanına girmesine bu büyük bellek alanına sahip.
Tamam, büyük bir sorun değil, çünkü bu belleğe yazmazsanız, Linux'ta bellek ayırmak/ayırmak pek bir şey yapmaz. Ancak bu gerçekten sinir bozucu bir durumdur, mesela MPI işleri, işin kullanabileceği maksimum vem miktarı ile belirtilmelidir. Ve 80GiB, o zaman Cuda işleri için daha düşük bir sınırdır - biri de diğer tüm şeyleri de eklemelidir.
Bunun, Cuda'nın sürdürdüğü çizik alanıyla ilgili olduğunu düşünebilirim. Çekirdek kod için dinamik olarak büyüyebilen ve küçülen bir tür bellek havuzu. Ama bu spekülasyon. Ayrıca cihaz hafızasında ayrılmıştır.
Herhangi bir anlayış?
Tamam, mantıklı. Yani, benim durumumda ana bilgisayar 48 GB RAM yüklü + 8 GB takas ve 6 GB ile 4 GPU, her biri toplam 80 GB. Bingo! Bu normal yığına tahsis edersem, bu 80GB içinde de görünecek mi? – ritter
Heap, her bir içerik için her GPU belleğinden yalnızca bir ayırmadır. Sanal bellekte yığın nedeniyle bir değişiklik görmezsiniz, ancak API'nin belirli bir GPU'da rapor ettiği boş bellek azalır. – talonmies
@Frank: Bilgisayarını alabilir miyim? :) –