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

Автоматическая атомарность переменных шейдеров GPU

#0
12:57, 8 авг. 2017

Так... Регистры GPU 32-х байтовые?
Если да, то означает ли это, что если я в SSBO из одной нити пишу переменную типа float (4 байта = 32 бита), то это операция по любому будет атомарной и я смело могу читать эту ж переменную другими нитями, не боясь получить мусор?
По идее, GPU её запишет за один условный такт, так что не может получится, что пока этот пишут, другой будет читать...


#1
15:00, 8 авг. 2017

Судя по всему - да. Например CUDA это явно обещает.
Но вот делать ++ так уже не следует

#2
15:36, 8 авг. 2017

> Если да, то означает ли это, что если я в SSBO из одной нити пишу переменную типа float (4 байта = 32 бита), то это операция по любому будет атомарной и я смело могу читать эту ж переменную другими нитями, не боясь получить мусор?
-=MASTER=-, в теории - да, и все этим активно пользуются (есть много док с примерами и разжёвываниями на слайдшаре, например).

+ Но

#3
16:30, 8 авг. 2017

slava_mib
> Потому если делаешь для массовости, то тестируй это на каждом куске говна до
> которого сможешь добраться
всё понял, в принципе я так и делал всегда и по опыту скажу, что у дров AMD косяков больше, нежели в NVidia :-)
А вообще, все эти дрова под винду - унылое говно, которое делается за очередную взятку или денежный транш той или иной геймдевелоперской компании, которая говорит мол "сделай следующую версию дров спецом под мой унылый говнокод в моей новой  игре, я тебе дам столько то денег!" Разработчик дров "ну ты чё, я уже так сделал в предыдущей версии с другой конторой и если я ща подправлю под твою игру, я загажу малину остальным из - за совместимости".  "Да их хрен с ними, я тебе больше денег дам!" .  "А...ну ладно, тогда сделаю" :-)  В итоге дрова получаются как дрова.

#4
16:45, 8 авг. 2017

-=MASTER=-
> будет атомарной и я смело могу читать эту ж переменную другими нитями, не боясь
> получить мусор?

https://www.khronos.org/registry/OpenGL/extensions/ARB/ARB_shader… er_object.txt

где-то тут

The memory qualifiers "coherent",    "volatile", "restrict"

можно получить новые знания :)

#5
17:08, 8 авг. 2017

Эти квалификаторы - это чуть другое - если ордна нить записала значение, то когда другая нить это увидит
Мне показалось, что вопрос был в том,запишется ли значение целиком или же будет мусор - мусора не будет, запишется целиком, но может не сразу быть видно другим нитям.

#6
18:39, 8 авг. 2017

steps3d

Это и есть - новые знания

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

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