Запуск функций на GPU с помощью swift - PullRequest
0 голосов
/ 27 июня 2018

У меня есть функция, которая может долго выполнять обработку задания (имеет несколько внутренних циклов). Я предполагаю, что запуск этого на GPU вместо CPU будет быстрее?

Есть ли способ запустить произвольные функции на графическом процессоре?

Apple заявила, что Металл:

Metal 2 обеспечивает почти прямой доступ к графическому процессору (GPU), , позволяя максимизировать ... вычислительный потенциал ваших приложений

Я вижу примеры использования Metal для игр и рендеринга графики, но есть ли примеры или ссылки, которые помогут мне просто запустить обычные функции?

1 Ответ

0 голосов
/ 27 июня 2018

Графический процессор может быть полезен для определенных видов чистых вычислений.

Задача должна быть в высокой степени распараллеливаемой.

Он не должен требовать каких-либо API из системных библиотек или платформ. Metal имеет свою собственную библиотеку, которая имеет только вычислительные возможности Нет доступа к диску. Нет структур данных, кроме массивов / буферов.

Существует верхний предел того, как долго система будет позволять запускать вычислительный шейдер (потому что это может быть бесконечный цикл без другого способа его остановки). Таким образом, в зависимости от того, что вы подразумеваете под «длительной обработкой», он может не подойти или подойдет, только если разбит на куски работы.

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

...