Поддерживает ли Raspberry Pi поддержку плавающих точек?

Есть несколько статей, в которых говорится, что лучше всего использовать алгоритмы с мягким поплавком на устройствах ARM, потому что очень немногие чипы ARM имеют жесткие сопроцессоры с плавающей запятой. Итак, поддерживает ли RPi жесткую поддержку поплавка? Если да, то быстрее, чем мягкий поплавок? (Должно быть, правильно?)

34 голоса | спросил Alex Chamberlain 20 J0000006Europe/Moscow 2012, 12:16:18

5 ответов


28

Согласно часто задаваемым вопросам , Raspberry Pi использует чип ARM 11 с поддержкой с плавающей запятой:

  

Какой SoC вы используете?

     

SoC - это Broadcom BCM2835. Это содержит ARM1176JZFS, с   с плавающей запятой, с частотой 700 МГц и графическим процессором Videocore 4. Графический процессор   способный воспроизводить качество воспроизведения BluRay, используя H.264 со скоростью 40 Мбит /с. Оно имеет   быстрое трехмерное ядро, доступное с использованием поставляемых OpenGL ES2.0 и OpenVG   библиотеки.

Это будет быстрее, чем мягкий плавающий (если он не будет, я порадуюсь!), хотя на системах без аппаратной поддержки часто лучше использовать рычаги обработки с фиксированной точкой, если вы не используете ™ t требуется диапазон, предлагаемый с точки зрения точности с плавающей точкой.

ответил Matt Lacey 20 J0000006Europe/Moscow 2012, 12:27:52
9

У него есть аппаратная поддержка с плавающей запятой. Насколько мне известно, это недоступно в дистрибутиве Debian по умолчанию для RPi (пока). Я не слишком уверен в Arch, хотя, если у них нет поддержки, я думаю, что это будет скоро.

У меня есть Gentoo на моем RPi, поэтому у меня есть все, скомпилированные с поддержкой жесткого поплавка по умолчанию. Это быстро:)

CFLAGS="-O2 -pipe -mcpu=arm1176jzf-s -mfpu=vfp -mfloat-abi=hard"
CXXFLAGS="${CFLAGS}"
CHOST="armv6j-hardfloat-linux-gnueabi"

(distcc и кросс-компиляция, используемая экстенсивно, конечно!)

ответил Xiol 21 J0000006Europe/Moscow 2012, 01:47:35
6

С 18 сентября 2012 года Arch Linux ARM также имеет жесткую поддержку с плавающей запятой. Прочтите это объявление:

  

Сегодня мы открываем новые хранилища hardv float armv6 для   public, со всеми пакетами, созданными для поддержки блока с плавающей точкой VFP   доступный в малине Pi и Via APC-IO. Потому что нет   путь обновления между хранилищем soft-float armv5 и новым   armv6h, мы также выпустили новый установочный образ для   Малина Пи. Ссылка на изображение доступна на   Страница установки для Pi на нашем основном сайте. Это изображение также установлено   для systemd вместо sysvinit и initscripts, поэтому время загрузки   быстрее, и установка будет надежной для изменений, которые   в конечном итоге становится постоянным в Arch.

Arch Linux ARM Raspberry Pi

ответил Toni 24 thEurope/Moscowp30Europe/Moscow09bEurope/MoscowMon, 24 Sep 2012 09:55:02 +0400 2012, 09:55:02
4

Да, как утверждают другие, у малины Pi есть жесткая поддержка поплавка. Ознакомьтесь с операционной системой Raspbian .

  

Raspbian - неофициальный порт Debian Wheezy armhf с настройками компиляции, скорректированными с целью получения оптимизированного «жесткого плавающего» кода, который будет работать на Малиновой Пи. Это должно обеспечить значительно более высокую производительность для приложений, которые сильно используют арифметические операции с плавающей запятой.

ответил Christopher 21 J0000006Europe/Moscow 2012, 06:25:05
4
  

Итак, поддерживает ли RPi жесткую поддержку float?

Да, в частности (на исходном Pi) VFPv2.

  

Если да, то быстрее ли это мягкое плавание?

Да

  

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

В 2007 году плавающая точка на руке была беспорядком, у многих фишек вообще не было FPU. Те, которые часто имели один из нескольких разных и несовместимых. Хуже того, Debian (один из основных дистрибутивов Linux) был создан по историческим причинам, построенным для FPU под названием FPA, который был очень немногим, и в основном полагался на эмуляцию ядра для плавающей запятой (программная плавающая точка медленная, с эмуляцией ядра с плавающей запятой медленнее). Я думаю, что ситуация в других дистрибутивах была сходной, но я не уверен в этом.

Учитывая беспорядок в то время, было принято решение о том, что лучшим вариантом было бы сделать порт EABI с использованием базовой версии (soft-float) EABI. Этот ABI был спроектирован таким образом, что код мог использовать базовый ABI, а при необходимости использовать FPU. Идея в то время состояла в том, что ядро ​​дистрибутива было бы построено с использованием программной плавающей запятой, а затем с помощью специального кода, который сильно используемая плавающая точка могла бы быть построена с аппаратной плавающей точкой, но при этом использовала базовый (soft float) ABI. Этот порт был известен в мире Debian как «armel».

Однако «конкретные пакеты, построенные с использованием аппаратного с плавающей запятой», на самом деле не работали. На практике несколько пакетов беспокоились о том, чтобы сделать такую ​​вещь, и также были накладные расходы на перетасовку значений между целыми и регистровыми платами.

Ускорьте вперед до 2011 года, и ситуация изменилась. Рука агрессивно подталкивала VFP, и подавляющее большинство «процессоров приложений» (например, вы нашли в мобильных телефонах и simliar) приняли ее. Ряд основных дистрибутивов linux (по крайней мере, Debian, Ubuntu и Fedora изначально, более поздние) решили делать порты с использованием аппаратной плавающей запятой и жесткой плавающей ABI. К сожалению, для Pi эти дистрибутивы (которые доходили до завершения примерно в то время, когда был выпущен Pi) обычно устанавливали минимальные аппаратные требования, такие как ARMv7 с VFPv3_d16, чтобы они не запускались на Pi.

Итак, поклонники Pi начали работу над pi-специфическими вариантами дистрибутива, которые использовали аппаратную плавучую точку и жесткий плавающий ABI, но были построены с настройками компилятора, которые будут работать на pi.

ответил Peter Green 5 FebruaryEurope/MoscowbFri, 05 Feb 2016 18:33:06 +0300000000pmFri, 05 Feb 2016 18:33:06 +030016 2016, 18:33:06

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132