Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Куда при сборке gcc с сорсов написать -mfloat-abi=hard ?

1276  1 2 все
UVV старожил23.03.21 11:19
NEW 23.03.21 11:19 
в ответ wasja-de 23.03.21 10:16
так это перетаскивание конфигурации ног FPGA-HPS на новый дистрибутив.

А как конфигурация FPGA связана с линукс? Они вообще ортогональны

#21 
wasja-de посетитель23.03.21 12:04
NEW 23.03.21 12:04 
в ответ UVV 23.03.21 11:19
А как конфигурация FPGA связана с линукс? Они вообще ортогональны

у кого как, я, например, сгружаю прошивку из линукса, посылая ее на /dev/fpga (на DE0-Nano-SoC) и потом через DMA таскаю данные с HPS на FPGA и обратно. Более того, прошивку часто приходится менять - типа 2 минуты - первая прошивка, следующая минута - вторая прошивка, и так по циклу (ресурсов плиски не хватает для хороших таймингов, поэтому так все сложно). К сожалению и трафик между HPS и FPGA у меня не маленький, около 100МБ/с, поэтому правильно установленные модули и всякие настройки для меня важны. Я к сожалению, в этих настройках не очень хорошо разбираюсь и, поэтому, панически боюсь туда лезть, чтобы что-то не навредить.

#22 
UVV старожил23.03.21 15:52
NEW 23.03.21 15:52 
в ответ wasja-de 23.03.21 12:04
посылая ее на /dev/fpga (на DE0-Nano-SoC)

Это только в альтеровском ядре есть. В upstream такого нету. Разве что у intel'a есть обновляшки с такими же дровами.

Скажите, пожалуйста, как перетащить такую "железячную" конфигурацию из моей сборки на свежую yoct-у?

Ну тут только разбираться. Это небыстро и дорого

ресурсов плиски не хватает для хороших таймингов, поэтому так все сложно).

Вангую, что в твоём fpga баг, раз так всё сложно.

#23 
wasja-de посетитель23.03.21 17:33
NEW 23.03.21 17:33 
в ответ UVV 23.03.21 15:52, Последний раз изменено 23.03.21 19:34 (wasja-de)
Вангую, что в твоём fpga баг, раз так всё сложно.


в больший кристалл, например, в стратикс все лезет, но нет подходящей и не дорогой борды, а эта борда по пинам подходит. И где тут может быть баг?


Ну тут только разбираться. Это небыстро и дорого

да, я тоже как-то подозревал, что это сложно, поэтому и не хочу в этом направлении двигаться.

#24 
schizo коренной житель23.03.21 21:04
schizo
NEW 23.03.21 21:04 
в ответ wasja-de 22.03.21 13:30

а покажите, что у Вас gcc -dumpmachine показывает на arm?

Храни Вас Г-дь!
#25 
Wanderer_ завсегдатай23.03.21 22:25
NEW 23.03.21 22:25 
в ответ wasja-de 22.03.21 23:21

Какой у Вас toolchain на плате стоит? Может возможно есть новая сборка и можно просто актуализировать(update)?

Пробовали другой toolchain поставить? Вот здесь есть список.

Пробовали на Вашем Host PC этот GCC собрать?


Почему не хотите поставить на вашем компьютере кросс компилятор для АРМа и на нём же делать компиляцию и отладку для дев-платы?


#26 
wasja-de посетитель24.03.21 08:23
NEW 24.03.21 08:23 
в ответ schizo 23.03.21 21:04

Спасибо за ответы,


gcc -dumpmachine показывает:


arm-angstrom-linux-gnueabi

#27 
wasja-de посетитель24.03.21 08:29
NEW 24.03.21 08:29 
в ответ Wanderer_ 23.03.21 22:25, Последний раз изменено 24.03.21 09:34 (wasja-de)

Какой у Вас toolchain на плате стоит?


Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/arm-angstrom-linux-gnueabi/6.2.1/lto-wrapper
Target: arm-angstrom-linux-gnueabi
Configured with: ../../../../../../work-shared/gcc-linaro-6.2-r2016.11/git/configure --build=x86_64-linux --host=arm-angstrom-linux-gnueabi --target=arm-angstrom-linux-gnueabi --prefix=/usr --exec_prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/libexec --datadir=/usr/share --sysconfdir=/etc --sharedstatedir=/com --localstatedir=/var --libdir=/usr/lib --includedir=/usr/include --oldincludedir=/usr/include --infodir=/usr/share/info --mandir=/usr/share/man --disable-silent-rules --disable-dependency-tracking --with-libtool-sysroot=/build/jenkins/v2016.12/machine/ifc6410/build/tmp-angstrom-glibc/sysroots/ifc6410 --with-gnu-ld --enable-shared --enable-languages=c,c++ --enable-threads=posix --enable-multilib --enable-c99 --enable-long-long --enable-symvers=gnu --enable-libstdcxx-pch --program-prefix=arm-angstrom-linux-gnueabi- --without-local-prefix --enable-lto --enable-libssp --enable-libitm --disable-bootstrap --disable-libmudflap --with-system-zlib --with-linker-hash-style=gnu --enable-linker-build-id --with-ppl=no --with-cloog=no --enable-checking=release --enable-cheaders=c_global --without-isl --with-float=hard --with-sysroot=/ --with-build-sysroot=/build/jenkins/v2016.12/machine/ifc6410/build/tmp-angstrom-glibc/sysroots/ifc6410 --with-gxx-include-dir=/usr/include/c++/6.2.1 --without-long-double-128 --enable-nls --enable-initfini-array --with-arch=armv7-a
Thread model: posix
gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11)


Пробовали другой toolchain поставить? Вот здесь есть список.


Не получается, в ангстреме нет, другие не ставятся, вернее у меня не получилось.


Пробовали на Вашем Host PC этот GCC собрать?


надо cross-native, я несколько раз пробовал собирать на 9.3 и 10.2, но так и не получилось. crosstool-ng ставил, пытался с его помощью собрать, но, не все до конца понял и поставить не смог.


Почему не хотите поставить на вашем компьютере кросс компилятор для АРМа и на нём же делать компиляцию и отладку для дев-платы?

Нет, так нельзя. Если использовать софт с кросс-компилятора, то производительность будет около 200МФлоп/с, а если оптимизировать на самом арме, то где-то 1.5ГФлопс. Для меня эта разница критична. Оптимизация получается перекомпиляцией сотни вариантов с учетом размеров кеша и конвейерности инструкций, это очень сложно сделать даже для своего софта через cross-compile, а тут используется еще много стороннего софта, который не позволяет делать такую оптимизацию через cross-compile. Я не готов тот же атлас переписать. Я технически понимаю как это сделать, но по времени это на пару лет разработки может потянуть.

#28 
schizo коренной житель24.03.21 11:48
schizo
NEW 24.03.21 11:48 
в ответ wasja-de 24.03.21 08:23

ну вот и попробуйте собрать с ./configure --target=arm-angstrom-linux-gnueabihf

Храни Вас Г-дь!
#29 
wasja-de посетитель24.03.21 12:24
24.03.21 12:24 
в ответ schizo 24.03.21 11:48
ну вот и попробуйте собрать с ./configure --target=arm-angstrom-linux-gnueabihf

очевидно, что пробовал, и, к сожалению, не собралось. Или вы имеете ввиду как cross-native? Как cross-native не собирал, так как не смог дособрать необходимые тулсы, для этого, а как cross-compile - не интересно, так как это не решает моей задачи, я об этом писал выше.

#30 
Murr патриот24.03.21 12:25
Murr
NEW 24.03.21 12:25 
в ответ wasja-de 24.03.21 08:29

Если использовать софт с кросс-компилятора, то производительность будет около 200МФлоп/с, а если оптимизировать на самом арме, то где-то 1.5ГФлопс.

-----

Так может быть только при неправильной конфигурации либо цeлевой системы, либо опций компилятора.

#31 
Murr патриот24.03.21 12:28
Murr
NEW 24.03.21 12:28 
в ответ wasja-de 24.03.21 12:24

не собралось.

------

Стоит посмотреть в доки - поддерживает ли то что ты берешь из репозитория железо на котором планируешь использовать. По ощущениям - тот пакет что идет с бордой допилен именно под нее.

#32 
wasja-de посетитель24.03.21 17:08
NEW 24.03.21 17:08 
в ответ Murr 24.03.21 12:25
Так может быть только при неправильной конфигурации либо цeлевой системы, либо опций компилятора.


умножение матриц - требует в идеале N*N операций чтения из медленной общей памяти, и N*N*N операций умножения и сложения. Если скорость доступа к памяти в разы медленнее, чем флопы на процессоре (для конкретно этого экземпляра отношение примерно в 50 раз), то так и будет и ни от какой конфигурации системы не зависит. Более детально можно почитать, например, погуглив на ATLAS (Automatically Tuned Linear Algebra Software).


#33 
wasja-de посетитель24.03.21 17:12
NEW 24.03.21 17:12 
в ответ Murr 24.03.21 12:28, Последний раз изменено 24.03.21 17:18 (wasja-de)
Стоит посмотреть в доки - поддерживает ли то что ты берешь из репозитория железо на котором планируешь использовать. По ощущениям - тот пакет что идет с бордой допилен именно под нее.

А, да, выше еще не успел сказать. На этом железе другая сборка без альтеровского ядра на раз поддерживает все, что мне надо, но там нет возможности общаться через DMA c FPGA, и пилить это мне самому не хочется.


Скопировать с того, на эту сборку - не получилось, было много unresolved, в общем, они конечно сильно разные одна - lubuntu, другая - yocto.

#34 
Murr патриот24.03.21 17:37
Murr
NEW 24.03.21 17:37 
в ответ wasja-de 24.03.21 17:08

Если скорость доступа к памяти в разы медленнее, чем

------

Я этого "не пойму" - не в состоянии. смущ


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

Оба могут компилировать исходники и построить бинарник. ОБА.

Что именно они строят - определяется:

- возможностями компилятора - поскольку ты пытаешься заменить одно другим - принимаем равноценными.

- заданными параметрами построения.

Зависимости от того какой физический процессор выполняет процесс компиляции - нет.

Так что на кроссе нужно правильно выставить конфигурацию, правильно задать параметры и аккуратно закинуть на борду полученный бинарник.

Вроде все. спок

#35 
Murr патриот24.03.21 17:39
Murr
NEW 24.03.21 17:39 
в ответ wasja-de 24.03.21 17:12

сильно разные одна - lubuntu, другая - yocto.

------

Извини - в версиях *никсов Я ничего не понимаю.

#36 
wasja-de посетитель24.03.21 19:13
NEW 24.03.21 19:13 
в ответ Murr 24.03.21 17:39, Последний раз изменено 24.03.21 21:06 (wasja-de)
Извини - в версиях *никсов Я ничего не понимаю.

если не понимаешь, не суйся, будь так любезен. И с предыдущим твоим комментарием - иди мат часть учи. Твой уровень познания, это треугольник со сторонами 5, 10 и 15:


https://foren.germany.ru/programmer/f/37750965.html?Cat=&p...


а эта тема - не твоего уровня.

#37 
Murr патриот24.03.21 19:25
Murr
NEW 24.03.21 19:25 
в ответ wasja-de 24.03.21 19:13

иди мат часть учи

------

Ой....

Мат.часть, к моему сожалению, нужно учить тебе. спок

Ну хотя бы потому, что не получается не у меня... безум

#38 
1 2 все