2014-11-04 5 views
0

Мне нужно линейно индексировать мои потоки таким образом, чтобы я уверен, что первые 32 из них принадлежат к одному и тому же warp, т. Е. Что линейный индекс следует за тем, как основы создаются внутренне. Другими словами, это линейный индекс, используемый для создания подобных схожих или fortran. Чтобы объяснить это, рассмотрим блок потоков размером 2x5. Я могу создать линейный индекс, который следует за Fortran или С конвенции:Линейная индексация нити Cuda

0, 1, 2, 3, 4 
5, 6, 7, 8, 9 

против

0, 2, 4, 6, 8 
1, 3, 5, 7, 9 

Для большого массива, я хочу быть уверен, что мои первые 32 нити являются в такой же деформация. Каков правильный способ создания линейного индекса?

ответ

2

Ваши темы запланированы для групп по 32. Темы: 0 to 31 попадают в первую корзину, 32-63 на втором и так далее. Если threads%32 != 0, последний warp заполняется «теневыми» потоками (так что вам нужно создать механизм для предотвращения появления этих потоков для неправильных позиций памяти, как правило, if).

Вы не можете изменить этот заказ, поэтому первые 32 потока будут всегда в одном и том же варпе. Несмотря на то, что он был в первом варпе, это не гарантирует, что этот варп будет выполнен на первом месте, а SM раскроет переходы по своему усмотрению.

Из this ответа:

Тема сгруппированы в перекосы в порядке х, у, г. Так 16х16 threadblock будет иметь резьбу в следующем порядке в первом 32-нити основы:

перекос: идентификатор потока (х, у, г)

0: 0,0,0 
1: 1,0,0 
2: 2,0,0 
3: 3,0,0 
... 
15: 15,0,0 
16: 0,1,0 
17: 1,1,0 
18: 2,1,0 
19: 3,1,0 
... 
31: 15,1,0 
+0

Так что мой вопрос немного отличается; я хотел спросить, как я могу найти, какие «первые 32 потока» из индекса threadIdx.x и threadIdx.y. – eaponte

+0

Итак, ваш вопрос: как многомерный аранжировка потоков отображается на перекосы? – srodrb

+0

Я думаю, что пример немного запутан. Темы '(0-31, -, -)' находятся в одном и том же варпе. См. Другой ответ. Столбец, который вы называете warp, должен быть основным. В противном случае вы говорите, что первые 32 потока в измерении x находятся в разных искажениях. – pQB

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