|
Какая производительность на плавающей точку у AllWinner A10?, Сколько пик, и сколько достигается? |
|
|
|
May 15 2013, 17:30
|
вопрошающий
    
Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436

|
Всем привет,
недавно в руки попала платка с оллвинером pcduino.com - многое сразу понравилось, как-то удобно что и компилишся и работаешь на одной и той же платформе и все интерфейсы под рукой есть и драйверы худо бедно почти без танцев с бубном заработали.
Есть правда вопрос по производительности процессора на плавающей точке. У меня есть несколько тестов, которые позволяют измерить достигаемую производительность с учетом того, что данных мало (все в регистрах и пайплайнится хорошо), данных чуть больше и все в кешу, данных много и они линейно или случайным образом индексируются в общей памяти.
К сожалению, результаты меня огорчили.
Я смог получить около 60МФлоп/с на регистрах, 20МФлоп/с (линейный доступ) 2МФлоп/с (случайный доступ) при работе с общей памятью. Разницы одинарная или двойная точность почти не видно, есть, но не в два раза, а примерно в 20-30%. Сильно настораживает, что на регистрах получается только 60МФлоп/с, хотя Джек Донгарра в своем докладе прошлой осенью писал, что де оллвинеры почти ГФлоп/с показывают.
Перепробовал кучу опций компиляции, похоже, что -Ofast без ничего другого показывает самые лучшие результаты, пробовал и неон включать, и vf*v3 но только хуже стало.
В связи с этим, возникают вопросы
1. какой реально достижимый пик на этом процессоре на плавающей точке, 2. может ли кто-то поделиться правильными опциями компиляции и примером в несколько строк где бы серьезно больше 60МФлоп/с получалось бы?
Спасибо
ИИВ
|
|
|
|
|
 |
Ответов
(1 - 8)
|
May 15 2013, 19:39
|
Местный
  
Группа: Участник
Сообщений: 468
Регистрация: 4-03-05
Пользователь №: 3 066

|
Цитата(iiv @ May 15 2013, 20:30)  ... Я смог получить около 60МФлоп/с на регистрах, 20МФлоп/с (линейный доступ) 2МФлоп/с (случайный доступ) при работе с общей памятью. Разницы одинарная или двойная точность почти не видно, есть, но не в два раза, а примерно в 20-30%. ... Перепробовал кучу опций компиляции, похоже, что -Ofast без ничего другого показывает самые лучшие результаты, пробовал и неон включать, и vf*v3 но только хуже стало.
В связи с этим, возникают вопросы
1. какой реально достижимый пик на этом процессоре на плавающей точке, 2. может ли кто-то поделиться правильными опциями компиляции и примером в несколько строк где бы серьезно больше 60МФлоп/с получалось бы? Не знаю, поможет или нет, но вот тут пишут, что включать надо одновременно и VFPv3 и neon опции. И еще до кучи с полдюжины других условий надобно соблюсти. А так, похоже, что работает только VFP сопроцессор, у него как раз 10...30 тактов на команду уходит.
|
|
|
|
|
May 16 2013, 08:01
|
вопрошающий
    
Группа: Свой
Сообщений: 1 726
Регистрация: 24-01-11
Пользователь №: 62 436

|
Спасибо всем за отклики! Цитата(DASM @ May 16 2013, 00:46)  60 mflops это мало?? Это же не DSP.Почему Вы решили что будет больше? Да, так как, например, мой лаптоп показывает под 100ГФлопс на одинарной и 50ГФлоп/с на двойной точности, и от таблеточного железа хочется хотя бы гигафлоп. Вот здесь говорят, что на однопроцессорном 3-ем omapе можно получить гигафлоп на одинарной и 50МФлоп/с на двойной точности. Цитата(DASM @ May 16 2013, 00:46)  Хотите — могу завтра на omap44 прогнать, только код теста дайте. тест собственно там же, только надо вначале поставить ATLAS и с ним скомпилить маленький тест, правда установка атласа у меня на аоллвинере заняла больше дня, и, во время инсталляции, желательно на железке ничего не делать, поэтому повторить может оказаться довольно сложно. Цитата(DASM @ May 16 2013, 00:46)  Ааа, понял.. Это же результаты Gpu соопроцессора.. Вот тут что то сравнивали, правда я не понял как это запускать Сам только начал с сопроцессорами разбираться тут тесты ГПУнеее, боюсть, на ГПУ можно еще на порядок больше получить. Про то, что надо и неон и вфпв3 включать видел и уже пробовал, пока это результаты не улучшало, похоже, ГНУ компилер сам это знает, если -Ofast написать.
|
|
|
|
|
May 16 2013, 09:24
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(iiv @ May 16 2013, 12:01)  Вот здесь говорят, что на однопроцессорном 3-ем omapе можно получить гигафлоп на одинарной и 50МФлоп/с на двойной точности. Ключевой момент производительности cortex-a8 на плавучке c двойной точностью Цитата non-pipelined VFP floating-point unit of the A8 а NEON поддерживает только одинарную точность Цитата неее, боюсть, на ГПУ можно еще на порядок больше получить. По-моему для mali400 нет поддержки OpenCL или какой-либо другой поддержки GPGPU
|
|
|
|
|
May 16 2013, 10:57
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(iiv @ May 16 2013, 13:56)  простите, но я совсем не понял оба этих утверждения - вроде и то и то cortex-a8 вроде по-русски написал.. Цитата мне хочется видк раз ееть гигафлопы хотя бы на одинарной точности, вроде неон как раз ее-то и поддерживает, так как мне получить гигафлопс на сингле на оллвинере? может FAQ прочитать надо было перед сборкой ? http://www.vesperix.com/arm/atlas-arm/faq/index.htmlЦитата ATLAS 3.10.0 includes architecture defaults for a Cortex A9 with the soft floating-point ABI (like Angstrom-based distributions and Ubuntu prior to 12.04). If you have a distribution using the hard floating-point ABI (like Ubuntu 12.04 or later), you can buld ATLAS 3.10.0 using
../configure -D c -DATL_ARM_HARDFP=1 -Si archdef 0 -Fa alg -mfloat-abi=hard
Note that mainline ATLAS releases like 3.10 have always ignored any floating point unit that does not conform to the IEEE 754 specification, so what you'll get if you do this is a BLAS library using the IEEE compliant VFP. If you need the somewhat higher single precision speed of NEON, you'll need to specifically tell ATLAS to use non-IEEE compliant routines, by using
../configure -D c -DATL_NONIEEE=1 -Si archdef 0 for the soft floating-point ABI, and
../configure -D c -DATL_NONIEEE=1 -D c -DATL_ARM_HARDFP=1 -Si archdef 0 -Fa alg -mfloat-abi=hard if your distribution has a hard floating-point ABI.
Сообщение отредактировал sasamy - May 16 2013, 10:58
|
|
|
|
|
May 16 2013, 11:45
|
Знающий
   
Группа: Участник
Сообщений: 783
Регистрация: 22-11-08
Пользователь №: 41 858

|
Цитата(iiv @ May 16 2013, 15:13)  проблемка-то в том, что я как раз с опцией Код ../configure -D c -DATL_NONIEEE=1 -D c -DATL_ARM_HARDFP=1 -Si archdef 0 -Fa alg -mfloat-abi=hard и компилил... Еслиб все было бы так просто, не вопрошал бы  Пока что только одна мысль - проверьте включена ли поддержка NEON в ядре (выполните в директории с исходниками ядра) Цитата $ grep CONFIG_NEON .config CONFIG_NEON=y надо экспериментировать, чтобы понять что там происходит - снаскоку не могу сказать..
Сообщение отредактировал sasamy - May 16 2013, 11:46
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|