Може ли графичният процесор да използва суап пространство, когато RAM паметта му е пълна?

Правя някои gpu изчисления с помощта на OpenCL, където трябва да създам буфер с размер около 5 GB. Моят лаптоп има интегриран графичен процесор с 1,5 GB RAM. Опитах се да стартирам кода и даде грешен резултат. Така че предполагам, че това е защото ram на gpu е пълен. Въпросът ми е дали има някакво "своап пространство" (или виртуална памет), което графичният процесор може да използва, когато RAM паметта му е пълна? Знам, че процесорът има този механизъм. Но не съм сигурен за gpu.


person andy90    schedule 13.12.2014    source източник


Отговори (2)


Не, не може (поне на повечето графични процесори). Тъй като GPU използва собствената си памет (RAM на вашата графична карта) като цяло.

Освен това OpenCL кодът във вашите ядра не прави никакви malloc (вътре в ядрото). Ще използвате clCreateBuffer

person Basile Starynkevitch    schedule 13.12.2014
comment
Вярвам, че clCreateBuffer е ограничен до CL_DEVICE_MAX_MEM_ALLOC_SIZE, което е малко по-малко от размера на паметта на GPU. Може би това е неговият проблем? - person Clifford; 13.12.2014
comment
@Clifford Току-що проверих CL_DEVICE_MAX_MEM_ALLOC_SIZE от моя графичен процесор. Интересното е, че връща 4 GB, колкото е рам паметта на моя лаптоп. Имам интегрирана графична карта Intel Iris. Операционната система казва, че има само 1,5 GB видео ram. Така че изглежда, че графичният процесор може да използва цялата оперативна памет. - person andy90; 13.12.2014
comment
@andy90 : Ако хостът е 32-битов, адресирането на ›4Gb дори с виртуална памет няма да е възможно. - person Clifford; 14.12.2014

Това ще зависи от GPU и дали има MMU и DMA достъп до паметта на хоста.

GPU с MMU може да виртуализира GPU и паметта на хоста, така че да може да изглежда като едно адресно пространство, като достъпът до паметта на физическия хост се обработва от DMA трансфер. Предполагам, че ако вашият графичен процесор имаше тази възможност, това вече щеше да е направено; в този случай проблемът най-вероятно е другаде.

person Clifford    schedule 13.12.2014
comment
IMHO, повечето реални графични процесори (особено тези на външни NVIDIA или AMD/ATI графични карти) нямат MMU. APU процесорите на AMD са изключение. - person Basile Starynkevitch; 13.12.2014
comment
@BasileStarynkevitch : Не съм експерт; Направих малко проучване. Това предполага, че е технически възможно и това от 2006 г. предполага, че е направено. - person Clifford; 13.12.2014