2013-02-25 2 views
1

Я читал некоторые результаты. И там я увидел, что они использовали 5120 рабочих-групп и местного размера 1. У меня есть ограниченные знания об OpenCL и мне было интересно, если это утверждение верно:Заявление OpenCl, истинное или ложное?

Как можно видеть на GPU, первый тест имеет 5120 рабочих групп, с 1 рабочий каждый. Это означает, что потоки, которые выполняются на этапе , ограничены количеством вычислительных блоков, которые находятся в машине . Например, если GPU имеет 20 вычислительных единиц, то может быть только не более 20 потоков, которые работают параллельно. Хотя, когда местного размера увеличен до 2, в два раза больше потоков выполняются одновременно

От чтения некоторой информации о OpenCL, кажется, о праве. Хотя мне нужно второе мнение.

ответ

1

обновление. Хм, комментарий нат хоуфа прав, я понял вопрос как «в полете в одно и то же время» вместо «физически исполняемого одновременно».

Как я уже писал, несколько рабочих групп могут быть запланированы в заданное время в одном вычислительном блоке. Количество таких рабочих групп в полете ограничено доступными ресурсами (локальная память, регистры и т. Д.) На каждой вычислительной единице.

В существующих реализациях (afaik) вычислительный блок выберет блок (warp/wavefront) рабочих элементов из той же рабочей группы для выполнения, среди всех блоков в полете в вычислительном блоке. Одна «инструкция» этого блока вставляется в конвейер (может потребоваться несколько циклов, и каждая «инструкция» может соответствовать нескольким операциям в каждом рабочем элементе), а затем выбирается другой блок.

Итак, да, если размер рабочей группы равен 1, физический запуск будет выполняться только одним рабочим элементом на единицу. Но потенциально все рабочие элементы могут одновременно находиться в полете в графическом процессоре.

+0

Запланировано нормально, но работать одновременно Я не уверен ... –

Смежные вопросы