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

Vulkan API (вышел!) (548 стр)

Страницы: 1543 544 545 546 547 548
#8205
4:16, 23 фев. 2021

HolyDel
> Но, как мне кажется, худшее, что может возникнуть без правильной синхронизации - это при семплинге текстуры вернется некорректный результат
ахаха, или bsod на amd, если семплить кубмапу как шадоумапу.


#8206
8:35, 23 фев. 2021

Suslik
> если семплить кубмапу как шадоумапу.
и как такое же может быть? вот мне в теме про исключения пишут что нужно жёстко тестировать:)

#8207
23:31, 23 фев. 2021

VK_EXT_descriptor_indexing на мобильных GPU https://community.arm.com/developer/tools-software/graphics/b/blo… ptor-indexing

#8208
17:35, 24 фев. 2021

/A\
Таймлиайн семафор ещё. Я так понимаю он будет как Fence из Dx12 работать

#8209
16:02, 25 фев. 2021

UP
Возник возможно глупый вопрос по шейдерам на современных видеокартах.

Есть у меня полноэкранный квадрат и фрагментный шейдер. Во фрагментном шейдере есть цикл, который читает какие-то данные (источники освещения, например) и для каждой итерации производит некоторые вычисления. При этом в процессе этих вычислений возможны некоторые ветвления. Поскольку все соседние потоки имеют одинаковые входные общие данные и соответственно цикл для них всегда будет иметь одинаковое количество итераций, но вот уже внутри итераций могут быть ветвления разные для разных фрагментов, но не совсем хаотично, а более-менее упорядоченно.
Вопрос следующий - есть ли способ как-то указать что в таком-то месте у меня должна быть синхронизация потока управления для всех фрагментов в группе, чтобы предотвратить случай, когда на первой итерации вычислений произвойдёт рассихнроназиция потока управления и как следствие, все дальнейшие итерации будут выполняться несинхронно (а значит медленно)?

#8210
16:42, 25 фев. 2021

Не очень понял, что ты хочешь, но наверное тебе подойдёт shader subgroup: https://www.khronos.org/blog/vulkan-subgroup-tutorial

#8211
17:48, 25 фев. 2021

Настало время на реализацию VK_EXT_descriptor_index с учетом поддержки на android: https://vulkan.gpuinfo.org/listdevicescoverage.php?extension=VK_E… tform=android

Vulkan 1.2 на Android
https://vulkan.gpuinfo.org/displayreport.php?id=9843

#8212
18:46, 25 фев. 2021

Panzerschrek[CN]
> Вопрос следующий - есть ли способ как-то указать что в таком-то месте у меня должна быть синхронизация потока управления для всех фрагментов в группе
В пределах варпа рассинхронизация принципиально не возможна, потому что "потоки" по терминологии GPU маркетологов — это отдельные элементы SIMD регистров. Рассинхронизация возможна в пределах сабгрупп, которые суть пачка потоков в режиме гипертрединга, работающая на одном ядре. Для локальной синхронизации сабгрупп обычно есть инструкции барьеров. Ну и для синхронизации между ядрами (глобальной) вменяемых средств обычно нету.

#8213
18:52, 25 фев. 2021

Andrey
> Vulkan 1.2 на Android
А толку? Полно девайсов, где вулкан версии 1.0.62, у меня самый старый на 1.0.82

#8214
19:19, 25 фев. 2021

}:+()___ [Smile]
> В пределах варпа рассинхронизация принципиально не возможна
Значит ли это, что при первом ветвлении с разным результатом GPU раскидает поток управления по разным warp-ам? Если да, то как подсказать ему, что в таком-то месте надо их обратно в один warp помещать?

> Рассинхронизация возможна в пределах сабгрупп, которые суть пачка потоков в
> режиме гипертрединга
Вот здесь не понял. Поток управления в подгруппах принципиально разный же? Если да, то мне безразлична их на синхронизация, ибо прироста в производительности я от этого не получу.

HolyDel
> shader subgroup
Чё-то мне подсказывает, что то, что описано в статье и есть разбиение вычислений на эти подгруппы с независимым потоком управления.

#8215
20:56, 25 фев. 2021

Panzerschrek[CN]
> Значит ли это, что при первом ветвлении с разным результатом GPU раскидает поток управления по разным warp-ам?
Нет, каждый поток жестко прибит к варпу (по типу: warp_id = thread_id >> 5).
Если в пределах одного варпа есть ветвление, то сначала варп выполняет первую ветку с соответствующей маской записи, а потом — вторую с дополнительной маской. В принципе, один-в-один то, что приходится делать при векторизации кода с ветвлениями на SSE/AVX или любом другом SIMD. Еще можно посмотреть AVX512 — эта система инструкций родилась как раз под видеокарты, там есть все эти операции с масками и пр.

> Поток управления в подгруппах принципиально разный же?
Да, это независимые потоки. От потоков на разных ядрах их отличает доступ к быстрой локальной памяти и возможности взаимной синхронизации.

#8216
12:55, 26 фев. 2021

}:+()___ [Smile]
> Если в пределах одного варпа есть ветвление, то сначала варп выполняет первую
> ветку с соответствующей маской записи, а потом — вторую
А после ветвления warp будет продолжать дальше выполнять параллельно код после ветвления?
А что при этом происходит с циклами? А что если у меня есть switch-case на десяток вариантов или аналогичная ему цепь if-else?

#8217
14:51, 26 фев. 2021

не подскажите, в чем кардинальное отличие pass от subpass, и зачем нужны последние?

#8218
15:00, 26 фев. 2021

MAMOHT-92
Что за pass? Renderpass? Если да, то рендерпасс - это такая штука, по окончании работы которой у тебя окажется в памяти какая-то картинка. А субпассы за милую душу эту картинку оставляют временно, в локальной памяти для тайла, например. Вобщем сабпасы нужны для мобилок в первую очередь (ИМХО). Чтобы можно было посчитать условный G-Buffer и его освещение внутри тайла, не гоняя пиксели туда-сюда в основную память.
Но это все так, дилетантское ИМХО, с мобилками плотных дел не имел.

Страницы: 1543 544 545 546 547 548
ПрограммированиеФорумГрафика