Какая самая быстрая векторная / матричная математическая библиотека в игре C для iPhone? - PullRequest
8 голосов
/ 10 февраля 2010

В качестве названия я нахожу векторную / матричную библиотеку в C, оптимизированную для процессоров iPhone / iPod. Или просто вообще быстро.

--- (редактировать) ---

Извините за неясный вопрос. Я ищу быстрый lib для коммерческих игр для iPhone / iPod. Таким образом, GPL lib не может быть использован.

Тем не менее, я перестану искать самую быструю библиотеку, это может быть бессмысленно.

Ответы [ 2 ]

5 голосов
/ 26 июня 2010

Сейчас (2010.06.26) Ускорение фреймворка включено в iOS4, поэтому доступны функции vDSP / BLAS.

При этом используется аппаратная функция (ЦП или SIMD) для ускорения операций с плавающей запятой, поэтому с помощью этого можно получить более высокую скорость (в среднем 2 ~ 4,5x, максимум 8x) и меньшее потребление энергии (максимум 0,25x).

Спасибо людям за другие ответы.

2 голосов
/ 10 февраля 2010

Очень сильно зависит от ваших потребностей, если вы просто используете математику с плавающей запятой, вы, вероятно, обнаружите, что компилятор будет использовать программный метод с плавающей запятой, который будет очень медленным. Итак, первый шаг - убедиться, что вы используете аппаратный модуль с плавающей запятой, доступный в процессоре iPhone.

На втором этапе используется уже хорошо зарекомендовавшая себя библиотека, их несколько, Хасан уже предоставил вам ссылку на GNU GSL, что приятно.

Следующим шагом будет использование возможностей VFP SIMD. VFP на самом деле не SIMD, но предоставляет SIMD-подобные инструкции, для которых отдельные операции выполняются последовательно. Преимущество дальнейшего использования этих инструкций состоит в том, что текст вашей программы будет короче, что позволит лучше использовать кэш команд и меньше проблем при пропуске прогнозов ветвлений и так далее. Однако я не знаю ни одной векторной библиотеки, использующей преимущества VFP, вам нужно было бы сделать хороший поиск и написать свою собственную, если она недоступна.

Наконец, если вам все еще нужно больше скорости, вы захотите использовать настоящий SIMD-блок в процессоре iPhone. Однако эта единица не является единицей с плавающей запятой, а является целочисленной единицей. Итак, если вы хотите получить реальные числа, вы застрянете с фиксированной точкой, это зависит от вашего приложения, можете ли вы сойти с рук. Опять же, мне неизвестно о какой-либо векторной библиотеке, предоставляющей арифметику с фиксированной точкой с использованием SIMD-блока, предоставляемого процессором iPhone, поэтому снова вам потребуется тщательный поиск и, возможно, грязные руки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...