ПрограммированиеФорумГрафика

Хто-нить уже имел дело с Титаном? (3 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#30
22:13, 11 мар 2013

Если и в шейдере есть if оторый занимает 99% времени то количество ядер не спасет.

}:+()___ [Smile]
> Это не параллелится. Но достаточно большой процент задач можно решать на параллельных машинах. Другое дело, что часто стандартный алгоритм не подходит и надо придумывать параллельный.

Довольно небольшой процент задач :) Другое дело, что вывод изображения на уровне пиксельного шейдера это отличный пример парелельных  вычислений. К сожалению программисты имеют тенденцию выжимать все соки из железа, и вычисление одной точки может быть весьма затратным. Каждая точка не зависит от остальных (это плюс), но вот цикл ВНУТРИ вычисления точки может зависеть от предыдущего прохода (это минус). Короче нет в жизни совершенства...

#31
22:28, 11 мар 2013

}:+()___ [Smile]
> Надо подгонять алгоритмы под размер варпа
Сравни "размеры" блока SSE, блока SMX и GCN-овского.
Самый большой и неудобный - SMX

Я бы ещё щас вспомнил Cell, где бранчи несколько лучше, и есть hbr, hbrr, hbra... Но не буду :)


FROL
Попкорн?

Mr.TyanVary
> Так вообщем получается чем больше ядер тем меньше будут потери от бранчинга? (ну из за простоя ALU?)
Нет, это зависит от самих ядер

> А у титана ещё и кэш есть, получается у него обращения к текстурам будет быстрее или какую там роль играет кэш вообще?
Кеш есть везде

#32
22:37, 11 мар 2013

bazhenovc
> Сравни "размеры" блока SSE, блока SMX и GCN-овского.
SSE, точнее уже AVX, -- операции с 8-ми флоатами, на видеокартах варп = 32. Разница всего 4 раза.

#33
22:45, 11 мар 2013

}:+()___ [Smile]
Уточняй, на каких видеокартах. GCN всё-таки сильно отличается от NV. Я бы сказал, что он более близок к Cell.

#34
23:19, 11 мар 2013

bazhenovc
> GCN всё-таки сильно отличается от NV
я больше с GCN архитектурой знаком, но как-то не вижу особой разницы с NV.
Можно поподробнее, чем они различаются так принципиально?

#35
23:27, 11 мар 2013

Ага, на первый взгляд, GCN гораздо ближе к архитектуре NV, чем прошлая линейка VLIW4. Единственная разница, которую я заметил, это наличие скялярных исполнительных устройств. Еще по презентациям не очень понятен размер варпа, то ли 64 как и было, толи все-таки 16.

#36
23:32, 11 мар 2013

}:+()___ [Smile]
> Ага, на первый взгляд, GCN гораздо ближе к архитектуре NV, чем прошлая линейка
> VLIW4
Да, они вроде даже говорили, что теперь будет как у НВидии ) На прошлой архитектуре были те еще извраты с перетасовкой бинарного кода )

#37
0:05, 12 мар 2013

}:+()___ [Smile]
VLIW - вообще отдельная песня, давай не будем?:)

VirT
Давай посмотрим на ядро SMX: 192 ядра CUDA, каждое ядро имеет floating point и integer ALU, 64 double precision блока, 32 SFU и 32 load store. В нём есть 4 warp-scheduler`а, в каждом - 32 потока. Всего SMX-ядер - 15 (на GK110).
Итого имеем 128 варпов(грубо говоря, по факту их будет меньше из-за большого кол-ва специализированных блоков, которые не всегда используются). Бранч внутри варпа приведёт к либо а) выполнится оба условия, либо б) выполнятся оба условия по очереди. Оба варианта - плохие, т.к. железо либо простаивает, либо работает вхолостую.

Теперь посмотрим на ядро GCN: т.н. Compute Unit`ы. Каждый CU состоит из 4-х SIMD + branch prediction unit + scalar unit. Всего CU-шек - 32(на 7970).  Каждый CU имеет свой кеш инструкций и отдельный program counter для каждого SIMD`а.
Понятия варпа в случае GCN нет, каждый CU может выполнять операции из разных "варпов". Бранч внутри CU ни к чему серьёзному не приведёт.

Как-то так, если я не прав - ткните носом :)

#38
0:21, 12 мар 2013

bazhenovc
> Каждый CU имеет свой кеш инструкций и отдельный program counter для каждого SIMD`а.
Вот этому пруф не нашел. Ассемблерный код в презентациях выглядит как для обычного SIMD, да и не может быть ветвления в принципе: SIMD по названию выполняет одну команду всем юнитом. Т. к. размер SIMD-а 16, то варп минимум 16, но там что-то написано по поводу 64, так что х. з.

#39
0:23, 12 мар 2013

}:+()___ [Smile]
Пруф в презентации
Изображение

#40
0:41, 12 мар 2013

san
> Ага. Я чуток изменил формулу. Попробуй распаралелить.
Префиксная сумма должна помочь :)
PS: не так не получится пардон

#41
0:43, 12 мар 2013

bazhenovc
> Попкорн?
Ну да как-то вроде бы арифметика 32 битная флотовая уже давно на GPU работает. Думаю даже раньше G80 было.
Чтобы точность меньше стадартного флота это совсем что-то древнее.

#42
0:58, 12 мар 2013

bazhenovc
> Понятия варпа в случае GCN нет, каждый CU может выполнять операции из разных
> "варпов". Бранч внутри CU ни к чему серьёзному не приведёт.
Это точно не правда. Там точно такие же варпы и один SIMD выполняет за раз одну инструкцию для 128/256 битного вектора

#43
1:13, 12 мар 2013

VirT
>In GCN, each CU includes 4 separate SIMD units for vector processing. Each of these SIMD units simultaneously executes a single operation across 16 work
>items, but each can be working on a separate wavefront. This places emphasis on finding many wavefronts to be processed in parallel, rather than relying on
>the compiler to find independent operations within a single wavefront.

Wavefront`ом они называют "a group of 64 work tems", т.е. варп.

Полный пейпр называется GCN_Architecture_whitepaper.pdf, могу скинуть на почту(на геймдев не влазит, очень большой)

#44
1:55, 12 мар 2013

bazhenovc
> > n GCN, each CU includes 4 separate SIMD units for vector processing. Each of
> > these SIMD units simultaneously executes a single operation across 16 work
> > tems, but each can be working on a separate wavefront.

Из этого предложения следует всего лишь что у них размер warp-а стал равным 16 а не 64.
А то что раньше называлось wavefront-ом просто стало логической единицей.

> This places emphasis on finding many wavefronts to be processed in parallel, rather than relying on
> the compiler to find independent operations within a single wavefront.
А это по-моему вообще не о том.

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.