Правя някои gpu изчисления с помощта на OpenCL, където трябва да създам буфер с размер около 5 GB. Моят лаптоп има интегриран графичен процесор с 1,5 GB RAM. Опитах се да стартирам кода и даде грешен резултат. Така че предполагам, че това е защото ram на gpu е пълен. Въпросът ми е дали има някакво "своап пространство" (или виртуална памет), което графичният процесор може да използва, когато RAM паметта му е пълна? Знам, че процесорът има този механизъм. Но не съм сигурен за gpu.
Може ли графичният процесор да използва суап пространство, когато RAM паметта му е пълна?
Отговори (2)
Не, не може (поне на повечето графични процесори). Тъй като GPU използва собствената си памет (RAM на вашата графична карта) като цяло.
Освен това OpenCL кодът във вашите ядра не прави никакви malloc
(вътре в ядрото). Ще използвате clCreateBuffer
person
Basile Starynkevitch
schedule
13.12.2014
Вярвам, че
clCreateBuffer
е ограничен до CL_DEVICE_MAX_MEM_ALLOC_SIZE, което е малко по-малко от размера на паметта на GPU. Може би това е неговият проблем?
- person Clifford; 13.12.2014
@Clifford Току-що проверих CL_DEVICE_MAX_MEM_ALLOC_SIZE от моя графичен процесор. Интересното е, че връща 4 GB, колкото е рам паметта на моя лаптоп. Имам интегрирана графична карта Intel Iris. Операционната система казва, че има само 1,5 GB видео ram. Така че изглежда, че графичният процесор може да използва цялата оперативна памет.
- person andy90; 13.12.2014
@andy90 : Ако хостът е 32-битов, адресирането на ›4Gb дори с виртуална памет няма да е възможно.
- person Clifford; 14.12.2014
Това ще зависи от GPU и дали има MMU и DMA достъп до паметта на хоста.
GPU с MMU може да виртуализира GPU и паметта на хоста, така че да може да изглежда като едно адресно пространство, като достъпът до паметта на физическия хост се обработва от DMA трансфер. Предполагам, че ако вашият графичен процесор имаше тази възможност, това вече щеше да е направено; в този случай проблемът най-вероятно е другаде.
person
Clifford
schedule
13.12.2014
IMHO, повечето реални графични процесори (особено тези на външни NVIDIA или AMD/ATI графични карти) нямат MMU. APU процесорите на AMD са изключение.
- person Basile Starynkevitch; 13.12.2014