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

Metal API вопросы (2 стр)

Страницы: 1 2 3 Следующая »
#15
20:11, 15 июня 2021

/A\
> Нельзя замерить время начала первого пасса и время конца последнего, надо
> замерять время всех пассов и складывать их, даже в таком случае есть
> вероятность, что другие пассы будут выполняться параллельно и периодически
> замедлять, те, что я замеряю.

да, добро пожаловать в этот прекрасный эппловский мир) его дебажить - вообще веселье

подписался

P.S. - при этом имхо это самое лучшее GAPI на текущий момент в сцепке API/железо. Кто с ним "на ты" выжимают просто что-то невероятно что из мобилок, что из десктопных маков.

#16
20:33, 15 июня 2021

/A\
> внутри рендер пасса
Metal и compute может делать внутри рендер пасса, увы и печалька, Vulkan сливает ему. Не вижу причин этого сделать в Vulkan хотя-бы через VkPhysicalDeviceLimits
ufna
> P.S. - при этом имхо это самое лучшее GAPI на текущий момент в сцепке
> API/железо. Кто с ним "на ты" выжимают просто что-то невероятно что из мобилок,
> что из десктопных маков.
Даже лучше Direct3D12 ?

#17
5:45, 16 июня 2021

Andrey
> Не вижу причин этого сделать в Vulkan хотя-бы через VkPhysicalDeviceLimits
В вулкане зарезервирован compute subpass для рендер пасса, но что-то никто не торопится его добавить.

> Metal и compute может делать внутри рендер пасса
Только на тайловой архитектуре, на маках прошлых поколений такого нет.

ufna
> его дебажить - вообще веселье
Да любой GAPI не просто дебажить.

#18
12:13, 16 июня 2021

Замер времени в метале добавили в iOS14 в конце 2020, так больше чем за полгода они не добавили их поддержку в frame capture.
Теперь при нажатии на capture вылезает ошибка, что каунтеры не поддерживаются и надо их все отключить. Но внезапно, это не всегда помогает. Я уже поудалял все что хоть как-то связано с каунтерами и все равно вылезает ошибка. Вот как можно было такое придумать?

#19
12:28, 16 июня 2021

Оказалось нельзя использовать computeCommandEncoderWithDescriptor и blitCommandEncoderWithDescriptor даже если каунтеры к нему не цепляются.

#20
11:16, 3 июля 2021

Нашел такой кусок кода в skia

+ Показать

Зачем так делается?
#21
15:51, 3 июля 2021
ufna
> да, добро пожаловать в этот прекрасный эппловский мир) его дебажить - вообще
> веселье
эх... делали порт KB на мак ... отладка ещё то веселье
#22
(Правка: 17:17) 17:14, 4 июля 2021

Что-то я не очень понимаю как профилировать метал.
У меня есть 2 рендер пасса, 1й на 50% нагружает вершинный шейдер и на 50% фрагментный, 2й на 100% фрагментный.
Если я запускаю компьют параллельно 2-му пассу, то общее время увеличивается, если параллельно 1-му, то уменьшается.
Если у меня 93% на вершинном шейдере и 7% на фрагментом, то все равно от параллельного компьюта время уменьшается.
Загруженость ALU для 1 пасса - 6%, для 2 пасса - 30%, на компьюте - 100%.

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

#23
23:14, 5 июля 2021

шото я плохо не понял, в метале нет геометрических шейдеров?

#24
23:37, 5 июля 2021

Misanthrope
Нет

#25
0:21, 6 июля 2021

Misanthrope
> шото я плохо не понял, в метале нет геометрических шейдеров?
неожиданно.

#26
0:36, 6 июля 2021

Почему неожиданно? Ими мало кто пользуется, а реализовать их эффективно невозможно.

#27
9:10, 6 июля 2021

assiduous
Пока что не выпили в других АПИ,
В Direct3D12 они же есть, есть ли они в Libgnm?

#28
19:31, 6 июля 2021

Andrey
Эппл ни на кого не смотрит и делает все как считает нужным сам. Метал они делали исключительно для того, чтобы сделать максимально эффективный АПИ на своем железе. Сделать как у других у них не было задачи.

#29
13:31, 12 июля 2021


/A\

Все стало еще запутанее.
thread_execution_width - The execution width of the compute unit. (Metal 1.0)
threads_per_simdgroup - The thread execution width of a SIMD-group. (Metal 2.0)

Насколько я знаю, у всех Аpple GPU (A6-A14) simd width фиксированная и равна 32. Это и есть thread_execution_width. Но в целом у маков с Intel может быть 8-16-32 например, и вроде как нельзя самому выбрать нужную, только запросить после компиляции
threads_per_simdgroup это, насколько я знаю, равно в шейдере thread_execution_width для всех simd групп кроме последней, если она не выровнена до размера thread_execution_width. Напривер если workgroup = 40, то первая simd group вернет 32(потоки в первой группе вернут 32), а вторая 8.
threads_per_simdgroup вроде как работает только с A11 bionic
Также с A11 bionic у них появились quad groups. Это не тоже самое что simd group, просто есть дополнительные функции для работы с квадами.

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