Как скомпилировать Eigen в iPhone

Я хочу скомпилировать Eigen и использовать его на iPhone с функциями NEON. Как скомпилировать Eigen в iPhone? Нужно ли компилировать для конкретного чипа ARM? И нужно ли мне изменять скрипт сборки?

Ваше здоровье.


person Blukee    schedule 17.09.2011    source источник


Ответы (1)


Поскольку явная векторизация для ARM NEON поддерживается из коробки в последних версиях Eigen, я предполагаю, что вам вообще не нужно делать ничего особенного. В разделе по установке в инструкции написано:

Чтобы использовать Eigen, вам просто нужно загрузить и извлечь исходный код Eigen (инструкции по загрузке см. на вики). Фактически, заголовочные файлы в подкаталоге Eigen — это единственные файлы, необходимые для компиляции программ с использованием Eigen. Заголовочные файлы одинаковы для всех платформ. Нет необходимости использовать CMake или что-либо устанавливать.

Резюме: это библиотека для всех заголовков. Компиляции не требуется.

Предполагая, что у вас правильно настроен набор инструментов, все должно быть хорошо. Если вы используете один из поддерживаемых компиляторов (я полагаю, gcc), он должен автоматически определять, какие оптимизации компилировать (редактировать: предполагая правильные флаги компилятора, например, NEON включен).

Что касается того, как компилировать материал для iPhone, ну, на эту тему я не обращаю внимания :D

person Staffan    schedule 17.09.2011
comment
Это не так просто — Eigen проделывает разные трюки на разных архитектурах, чтобы включить векторизацию. Не факт, что эти трюки будут работать на iPhone. - person quant_dev; 17.09.2011
comment
И почему бы нет? С поддерживаемым компилятором (например, gcc) и правильными флагами компилятора (-mfpu=neon -mfloat-abi=softfp) NEON должен определяться автоматически и использоваться явная векторизация NEON. Это в FAQ: eigen.tuxfamily.org/ - person Staffan; 17.09.2011
comment
Спасибо, парни. Я работал над ним несколько часов и, наконец, заработал. Я использовал xcode 4. Нужно использовать оптимизированную для armv7 арку в настройках сборки, кроме того, что мне нужно установить путь поиска заголовка пользователя и флаг компиляции, как сказал Стаффан. - person Blukee; 18.09.2011
comment
Еще одна вещь, которую я не могу понять, это то, что в библиотеках заголовков Eigen есть какой-то файл слушателя без использования расширения .h. В Xcode 4 я не могу использовать их #include. Я изменил этот файл на файлы .h, и он, наконец, работает. И я должен определить EIGEN_DONT_VECTORIZE, прежде чем включать библиотеки Eigen. В противном случае это дало мне команду /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 с ошибкой компиляции с кодом выхода 1. - person Blukee; 18.09.2011
comment
У gcc нет проблем с включением файлов независимо от расширения (пример: iostream), поэтому это должно быть исправлено (файлы включены в ваш путь включения? и т. д.). EIGEN_DONT_VECTORIZE как бы побеждает цель, поскольку таким образом вы не получите (явную) векторизацию. Может быть, вам повезет, и компилятор проделает для вас какое-то волшебство, кто знает :) - person Staffan; 18.09.2011
comment
Кроме того, похоже, вы сможете получить более подробную информацию об ошибке компиляции: stackoverflow.com/questions/1248520/ - person Staffan; 18.09.2011