OpenCL - загуба на изчислителна мощност на хоста

Нов съм в OpenCL, моля, кажете ми, че хост процесорът може да се използва само за разпределяне на памет към устройството или можем да го използваме като openCL устройство. (Тъй като след като разпределението е направено, хост процесорът ще бъде неактивен).


person Nirley Gupta    schedule 16.02.2012    source източник
comment
Просто търсене в Google на „OpenCL CPU“ ви дава отговора.   -  person James    schedule 16.02.2012


Отговори (2)


Можете да използвате процесор като изчислително устройство. Opencl дори позволява на многоядрени/процесорни системи да сегментират ядрата в отделни изчислителни единици. Обичам да използвам тази функция, за да разделя процесора на моята система на групи въз основа на NUMA възли. Възможно е процесорът да се раздели на изчислителни устройства, които споделят едно и също ниво на кеш памет (L1, L2, L3 или L4).

Имате нужда от платформа, която го поддържа, като например SDK на AMD. Знам, че има начини да имам платформи Nvidia и AMD на една и съща машина, но никога не ми се е налагало да го правя сам.

Освен това системата за събитие/обратно извикване на opencl ви позволява да използвате вашия процесор, както обикновено, докато ядрата на gpu се изпълняват. По този начин можете да използвате openmp или всеки друг код на хоста, докато чакате ядрото на gpu да завърши.

person mfa    schedule 16.02.2012
comment
Инициализирах и играх с CPU и GPU изчислителни контексти, работещи едновременно, но никога в производствен сценарий. Очаквам, че МНОГО различните нужди и скорости на двете изчислителни устройства биха затруднили жонглирането на сложни изчисления и в двете. - person Ani; 16.02.2012
comment
Винаги ще зависи от проблема. Четох за внедряване на BLAS, при което процесорът счупи странно оформените ръбове на матрицата, докато графичният процесор се справи с хубавите вътрешни матрици NxM. В тази книга* има цяла глава за това как да се използват CPU и GPU за изчисляване на сблъсъци на частици с неравномерен размер. *developer.amd.com/zones/OpenCLZone/universities/OpenCLTextBook / - person mfa; 16.02.2012

Няма причина процесорът да е неактивен, но се нуждае от отделна работа. След като изпратите работа в OpenCL, можете:

  1. Заемете се с нещо друго, като подготовка на следващия набор от работа или извършване на изчисления върху нещо съвсем различно.
  2. Настройте процесора като друго изчислително устройство и му предайте част от работата.

Лично аз имам нужда от първия случай по-често, тъй като рядко се оказвам с две задачи, които са независими и се поддават на OpenCL стил. Номерът е да поддържате нещата балансирани, така че да не чакате дълго време задачата на графичния процесор да приключи или GPU да е неактивен, докато процесорът се заема с друга работа.

Това е същият проблем, който програмистите на OpenGL трябваше да преодолеят. Избягване на обвързаността с CPU или GPU и балансиране между двете за най-добра производителност.

person Paul S    schedule 01.03.2012