Размер деформации и контроль дивергенции

У меня есть вопрос о следующем вопросе:

Предположим, у нас есть изображение 9*7 (7 пикселей в направлении x и 9 пикселей в направлении y), сколько деформаций будет иметь дивергенцию управления, предполагая блок из 4*4 потоков и 8 потоков на деформацию?

Как здесь будут организованы блоки и перекосы? для x или горизонтального направления я могу принять 2 блока на строку. Аналогично, для вертикального направления - 3 блока на столбец. Но как будут организованы варпы? Может ли кто-нибудь указать идентификаторы потоков перекосов и случаи, когда происходит расхождение управления (идентификаторы потоков и т. Д.).

Спасибо

1 ответ

Решение

Предположим, у нас есть изображение 9*7 (7 пикселей в направлении x и 9 пикселей в направлении y), сколько деформаций будет иметь дивергенцию управления, предполагая блок из 4*4 потоков и 8 потоков на деформацию?

  1. Дивергенция - это свойство программы (кода), а не самого макета блока / деформации. Если ваш алгоритм работает одинаково для всех пикселей изображения, тогда не будет никакого расхождения, независимо от количества потоков и их организации. Если ваш алгоритм разветвляется на границах деформации, дивергенции также не будет. Поэтому, не видя ваш код, ваш вопрос технически не отвечает.
  2. Если вы работаете с блоком из 16 потоков и 8 потоков на деформацию (что физически невозможно на оборудовании CUDA: деформации сделаны из 32 потоков, а их размер не настраивается), то вы также можете работать без графического процессора вообще, Эти цифры слишком малы, чтобы извлечь выгоду из любого аппаратного ускорения.

Как здесь будут организованы блоки и перекосы? для x или горизонтального направления я могу принять 2 блока на строку. Аналогично, для вертикального направления - 3 блока на столбец. Но как будут организованы варпы?

Я остановлюсь на вашем примере и постараюсь предоставить схему идентификаторов потоков, идентификаторов блоков, идентификаторов деформации. Помните, что на практике это невозможно на оборудовании CUDA.

Image     Global Thread IDs      Block IDs              Local Thread IDs
□□□□□□□ | 00 01 02 03 04 05 06 | 00 00 00 00 00 00 00 | 00 01 02 03 04 05 06
□□□□□□□ | 07 08 09 10 11 12 13 | 00 00 00 00 00 00 00 | 07 08 09 10 11 12 13
□□□□□□□ | 14 15 16 17 18 19 20 | 00 00 01 01 01 01 01 | 14 15 00 01 02 03 04
□□□□□□□ | 21 22 23 24 25 26 27 | 01 01 01 01 01 01 01 | 05 06 07 08 09 10 11
□□□□□□□ | 28 29 30 31 32 33 34 | 01 01 01 01 02 02 02 | 12 13 14 15 00 01 02
□□□□□□□ | 35 36 37 38 39 40 41 | 02 02 02 02 02 02 02 | 03 04 05 06 07 08 09
□□□□□□□ | 42 43 44 45 46 47 48 | 02 02 02 02 02 02 03 | 10 11 12 13 14 15 00
□□□□□□□ | 49 50 51 52 53 54 55 | 03 03 03 03 03 03 03 | 01 02 03 04 05 06 07
□□□□□□□ | 56 57 58 59 60 61 62 | 03 03 03 03 03 03 03 | 08 09 10 11 12 13 14
----------------------------------------------------------------------------
Image     Global Warp IDs        Block IDs              Local Warp IDs
□□□□□□□ | 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00
□□□□□□□ | 00 01 01 01 01 01 01 | 00 00 00 00 00 00 00 | 00 01 01 01 01 01 01
□□□□□□□ | 01 01 02 02 02 02 02 | 00 00 01 01 01 01 01 | 01 01 00 00 00 00 00
□□□□□□□ | 02 02 02 03 03 03 03 | 01 01 01 01 01 01 01 | 00 00 00 01 01 01 01
□□□□□□□ | 03 03 03 03 04 04 04 | 01 01 01 01 02 02 02 | 01 01 01 01 00 00 00
□□□□□□□ | 04 04 04 04 04 05 05 | 02 02 02 02 02 02 02 | 00 00 00 00 00 01 01
□□□□□□□ | 05 05 05 05 05 05 06 | 02 02 02 02 02 02 03 | 01 01 01 01 01 01 00
□□□□□□□ | 06 06 06 06 06 06 06 | 03 03 03 03 03 03 03 | 00 00 00 00 00 00 00
□□□□□□□ | 07 07 07 07 07 07 07 | 03 03 03 03 03 03 03 | 01 01 01 01 01 01 01
----------------------------------------------------------------------------

и случаи, когда происходит расхождение управления (идентификаторы потоков и т. д. для тех)

Как упоминалось выше, дивергенция является свойством кода, а не разметкой потока, на этот вопрос нельзя ответить без кода.

Другие вопросы по тегам