Как использовать функцию вычисления в Metal API в iOS для умножения

Я новичок в Metal API в iOS. Итак, мой вопрос: как использовать функцию вычислений Metal для умножения, например,

скажем, у нас есть два массива float[] длиной 2048, мы хотим умножить соответствующие элементы вместе, образуя другой массив float[] из 2048

как это

рез[я] = а[я] * б[я];

С a[] и b[] массив из 2048 чисел с плавающей запятой

и res[] другой массив из 2048 чисел с плавающей запятой

Следующий шаг — выполнить эту «операцию» 2048 раз.

Может кто-нибудь, пожалуйста, помогите мне с этим.

если возможно, мне нужно сделать это в Objective-c, но я также умею читать быстро.

Заранее спасибо.


person Razza    schedule 13.02.2019    source источник
comment
Почему бы не использовать ускорение в процессоре? Процессор быстрее для длинного массива.   -  person E.Coms    schedule 13.02.2019
comment
Для этого можно использовать MetalPerformanceShader.   -  person E.Coms    schedule 14.02.2019
comment
@E.Coms Спасибо, MetalPerformanceShader был именно тем, что я искал.   -  person Razza    schedule 18.02.2019


Ответы (2)


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

person MoDJ    schedule 13.02.2019

Это руководство: https://machinethink.net/blog/mps-matrix-multiplication/ А также этот: https://www.youtube.com/watch?v=lSofOJrFsJ4&ut=

Реально выручил меня!

person Razza    schedule 18.02.2019