Библиотека линейной алгебры с использованием OpenGL ES 2.0 для iOS
Кто-нибудь знает библиотеку линейной алгебры для iOS, которая использует OpenGL ES 2.0 под прикрытием?
В частности, я ищу способ сделать матричное умножение на матрицах произвольного размера (например, намного больше, чем 4x4, больше как 5000 x 100 000), используя графические процессоры на устройствах iOS.
3 ответа
MetalPerformanceShaders.framework предоставляет некоторые настроенные BLAS-подобные функции. Это не GLES. Он металлический и работает на GPU. Смотрите MetalPerformanceShaders/MPSMatrixMultiplication.h
Есть ли конкретная причина, по которой вы просите "использовать OpenGL ES 2.0 под прикрытием?" Или вы просто хотите быструю аппаратно оптимизированную библиотеку линейной алгебры, такую как BLAS, которая встроена в iOS?
OpenGL на iOS, вероятно, неправильный путь. Металлическая поддержка на iOS была бы лучшим вариантом, если вы собираетесь использовать GPU.
металл
Вы можете использовать поддержку Apple для шейдеров Metal Compute. Я написал высокопроизводительный код для моей докторской диссертации в нем. Ранний эксперимент, который я провел при расчете некоторых фракталов с использованием металла, может дать вам несколько идей для начала.
В конечном счете, этот вопрос слишком широк. Для чего вы собираетесь использовать библиотеку или как вы собираетесь ее использовать? Это умножение один раз? Вы тестировали текущие библиотеки и обнаружили, что производительность слишком низкая? Если да, то сколько?
В общем, вы можете проводить образовательные или чисто информационные эксперименты по проверке производительности алгоритма X на процессоре в сравнении с GPU и специализированным аппаратным обеспечением, но чаще всего вы сталкиваетесь с законом Амдаля и вашим кодом против команды экспертов в данной области.
ускоряться
Вы также можете заглянуть в структуру ускорения, которая предлагает BLAS.
Apple, согласно докладу WWDC 2014 " Что нового в Accelerate Framework", вручную настроила библиотеки линейной алгебры, ориентированные на их оборудование текущего поколения. Они не просто быстрые, а энергоэффективные. Есть и более новые разговоры.