<bgdev />free

Вход Регистрация

Задача НЕ за интервю
7

0 1 2 3 4 ....11 12 13 14 15 ....25 26 27 28 29 30 31 32 33 34 35 36
#13305 (ツ) |
Създадено на 30.09.2020, видяно: 1504 пъти.
ФейкПрофил

А с еднакви нива на оптимизация ли ги компилира ? Разликата ми се струва прекалено голяма.

Да, и двете с O6. Clang, разбира се се оплака, че такова ниво няма и го свали на О3.

#13306 (ツ) Евлампи
Създадено на 30.09.2020, видяно: 1500 пъти.
johnfound

Даже не знаех, че FASM има такава грешка...

Тия червените грешки са гадни, никой не ги знае кво що

#13307 (ツ) ФейкПрофил
Последно редактирано на 30.09.2020 от ФейкПрофил, видяно: 1495 пъти.
|
ФейкПрофил

А с еднакви нива на оптимизация ли ги компилира ? Разликата ми се струва прекалено голяма.

Да, и двете с O6. Clang, разбира се се оплака, че такова ниво няма и го свали на О3.

Като гледам най-голямото е О3 ? Кой знае как се е побъркало ГЦЦто rofl

#13308 (ツ) |
Създадено на 30.09.2020, видяно: 1492 пъти.
ФейкПрофил
|
ФейкПрофил

А с еднакви нива на оптимизация ли ги компилира ? Разликата ми се струва прекалено голяма.

Да, и двете с O6. Clang, разбира се се оплака, че такова ниво няма и го свали на О3.

Като гледам най-голямото е О3 ? Кой знае как се е побъркало ГЦЦто rofl

И с О3 пробвах, никаква разлика.

#13310 (ツ) johnfound
Последно редактирано на 30.09.2020 от johnfound, видяно: 1489 пъти.
|
johnfound
|
~/tmp/work/AsmLeven$ fasm -m 300000 ./Levenshtein.asm
flat assembler  version 1.73.22  (300000 kilobytes memory)
error: out of stack space.

Даже не знаех, че FASM има такава грешка... Или това е грешка на операционната система?

Това FASM за каква OS e?


allegro:~$ fasm -v
flat assembler  version 1.73.22

Ubuntu-server 20.04

Ами при мене всичко се компилира:

$ export lib=/work/asmwork/FreshFs/FreshLibDev/freshlib/
$ export TargetOS=Linux
$ fasm -m 300000 ./Levenshtein.asm
flat assembler  version 1.73.24  (300000 kilobytes memory, x64)
I18n strings placeholders: $8049EE44
7 passes, 2.0 seconds, 3715 bytes.

Единственото, което ми хрумва в момента е, че използваш някаква грешна версия на FASM несъответстваща на операционната система. Това съобщение за стека е от операционната система - компилатора просто крашва.

Въобще, виж на сайта https://flatassembler.net - За Linux/Unix има 2 версии. Едната е нейтив, а другата с използване на libc (примерно на BSD). Може някоя от тях да се държи по-добре.

#13311 (ツ) |
Последно редактирано на 30.09.2020 от johnfound, видяно: 1480 пъти.
johnfound

Ами при мене всичко се компилира:

$ export lib=/work/asmwork/FreshFs/FreshLibDev/freshlib/
$ export TargetOS=Linux
$ fasm -m 300000 ./Levenshtein.asm
flat assembler  version 1.73.24  (300000 kilobytes memory, x64)
I18n strings placeholders: $8049EE44
7 passes, 2.0 seconds, 3715 bytes.

Единственото, което ми хрумва в момента е, че използваш някаква грешна версия на FASM несъответстваща на операционната система. Това съобщение за стека е от операционната система - компилатора просто крашва.

Въобще, виж на сайта https://flatassembler.net - За Linux/Unix има 2 версии. Едната е нейтив, а другата с използване на libc (примерно на BSD). Може някоя от тях да се държи по-добре.

Просто инсталирах пакета който идва с Ubuntu. Ще погледна като имам време...

#13312 (ツ) ФейкПрофил
Последно редактирано на 30.09.2020 от ФейкПрофил, видяно: 1478 пъти.

Какво дава

ulimit -s

300M стек е много, на моята машина дава 8М

#13315 (ツ) johnfound
Създадено на 30.09.2020, видяно: 1475 пъти.
ФейкПрофил

Какво дава

ulimit -s

300M стек е много, на моята машина дава 8М

Не. Това не е стека, а паметта, която да използва компилатора при компилирането. Особеност на самият FASM. Стека не би трябвало да крашва. Няма от какво.

#13317 (ツ) |
Създадено на 30.09.2020, видяно: 1470 пъти.
ФейкПрофил

Какво дава

ulimit -s

300M стек е много, на моята машина дава 8М

Като вдигнах стека се компилира. Но Ubuntu отказва да изпълни 32-бит application. :)


allegro:~/tmp/work/AsmLeven$ file Levenshtein
Levenshtein: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), dynamically linked, interpreter ./ld-musl-i386.so, no section header
allegro:~/tmp/work/AsmLeven$ ./Levenshtein
-bash: ./Levenshtein: No such file or directory
#13319 (ツ) johnfound
Създадено на 30.09.2020, видяно: 1468 пъти.
johnfound
ФейкПрофил

Какво дава

ulimit -s

300M стек е много, на моята машина дава 8М

Не. Това не е стека, а паметта, която да използва компилатора при компилирането. Особеност на самият FASM. Стека не би трябвало да крашва. Няма от какво.

Сега погледнах в сорсовете - излиза, че това си е грешка на компилатора. Свързана е действително със надвишаване на лимита на стека при вложени всякакви скоби и други вложени конструкции. Но нещо не намирам от какво се определя...

А при мене всичко се компилира. :-(

#13323 (ツ) johnfound
Последно редактирано на 30.09.2020 от johnfound, видяно: 1460 пъти.
|
ФейкПрофил

Какво дава

ulimit -s

300M стек е много, на моята машина дава 8М

Като вдигнах стека се компилира. Но Ubuntu отказва да изпълни 32-бит application. :)


allegro:~/tmp/work/AsmLeven$ file Levenshtein
Levenshtein: ELF 32-bit LSB executable, Intel 80386, version 1 (GNU/Linux), dynamically linked, interpreter ./ld-musl-i386.so, no section header
allegro:~/tmp/work/AsmLeven$ ./Levenshtein
-bash: ./Levenshtein: No such file or directory

Уф, това го забравих. Изкоментирай реда:

LINUX_INTERPRETER equ './ld-musl-i386.so'

Намира се някъде в началото на сорса. Иначе ще имаш нужда от MUSL, което вече съвсем сложно става...

#13324 (ツ) johnfound
Последно редактирано на 30.09.2020 от johnfound, видяно: 1456 пъти.
johnfound

Уф, това го забравих. Изкоментирай реда:

LINUX_INTERPRETER equ './ld-musl-i386.so'

Намира се някъде в началото на сорса. Иначе ще имаш нужда от MUSL, което вече съвсем сложно става...

Всъщност не е чак толкова сложно. Ето ти един bash скрипт за компилиране на MUSL:

#!/bin/sh

rm -rf ./muslsrc/

if [ -f ./ld-musl-i386.so ]; then
  echo "The library is already compiled. Delete the binary files for rebuild."
  exit 0
fi

if [ ! -f ./musl*.tar.gz ]; then
  echo "Downloading MUSL source archive..."
  { wget https://www.musl-libc.org/releases/musl-latest.tar.gz 2> /dev/null; } || { echo >&2 "Error: missing MUSL sources."; exit 1; }
fi

mkdir muslsrc
{ tar --wildcards --strip-components 1 -C ./muslsrc/ -xzf ./musl*.tar.gz 2> /dev/null; } || { echo "Error: Broken MUSL source archive."; exit 2; }

cd muslsrc

echo "Compiling MUSL ..."

./configure --prefix=../musl --host=i386 CC="gcc -m32" CFLAGS="-Os -fno-omit-frame-pointer -mpreferred-stack-boundary=2 -march=x86-64" CROSS_COMPILE="/bin/" > /dev/null 2>&1 || { echo >&2 "Error: Can't configure MUSL."; exit 3; }
make -j 4 > /dev/null 2>&1 || { echo >&2 "Error: Can't compile MUSL."; exit 3; }
make -j 4 install > /dev/null 2>&1 || { echo >&2 "Error: Can't install MUSL to the current directory."; exit 3; }

cd ..
rm -rf ./muslsrc/ &

strip ./ld-musl-i386.so

echo "Building process finished successfully."

Ако решиш така (ако нямаш инсталирана поддръжка за 32 битови приложения, то само така) то нищо не коментирай в сорса, а компилираната библиотека ld-musl-i386.so я сложи при изпълнимия файл и тогава ще тръгне.

#13351 (ツ) johnfound
Създадено на 01.10.2020, видяно: 1428 пъти.

А сега малко зарибявка. rofl Последни резултати на Pentium N3540:

0: Dist: 4, Time: 751 ms
1: Dist: 4, Time: 700 ms
2: Dist: 4, Time: 723 ms
3: Dist: 4, Time: 23 ms
4: Dist: 40, Time: 753 ms
5: Dist: 4, Time: 404 ms
6: Dist: 9, Time: 654 ms
7: Dist: 6, Time: 755 ms
8: Dist: 4, Time: 226 ms
9: Dist: 6, Time: 686 ms

Това според мене е по-бързо от варианта с trie на числотрошачката на Пайпа.

Напомням, че това е процесор с пасивно охлаждане на нетбук Acer.

Дали мога да бия и GPU-то? rofl

#13352 (ツ) Delegate
Създадено на 01.10.2020, видяно: 1421 пъти.

Това ще работи ли толкоав бързо със всякакъв вид входни данни с тази дължина на стринга ?

#13353 (ツ) johnfound
Последно редактирано на 01.10.2020 от johnfound, видяно: 1417 пъти.
Delegate

Това ще работи ли толкоав бързо със всякакъв вид входни данни с тази дължина на стринга ?

Да. Може и с други дължини, но алгоритъма си е все О(n^2).

#13362 (ツ) synergie
Последно редактирано на 01.10.2020 от synergie, видяно: 1399 пъти.
johnfound

А сега малко зарибявка. rofl Последни резултати на Pentium N3540:

0: Dist: 4, Time: 751 ms
1: Dist: 4, Time: 700 ms
2: Dist: 4, Time: 723 ms
3: Dist: 4, Time: 23 ms
4: Dist: 40, Time: 753 ms
5: Dist: 4, Time: 404 ms
6: Dist: 9, Time: 654 ms
7: Dist: 6, Time: 755 ms
8: Dist: 4, Time: 226 ms
9: Dist: 6, Time: 686 ms

Това според мене е по-бързо от варианта с trie на числотрошачката на Пайпа.

Напомням, че това е процесор с пасивно охлаждане на нетбук Acer.

Дали мога да бия и GPU-то? rofl

Doctors HATE him for revealing this secret

Това без векторни инструкции?

#13367 (ツ) Delegate
Създадено на 01.10.2020, видяно: 1385 пъти.

Подозирам, че се е заиграл баш с avx

#13373 (ツ) johnfound
Създадено на 01.10.2020, видяно: 1378 пъти.

Не. Само MMX.

#13375 (ツ) |
Създадено на 01.10.2020, видяно: 1373 пъти.
johnfound

А сега малко зарибявка. rofl Последни резултати на Pentium N3540:

0: Dist: 4, Time: 751 ms
1: Dist: 4, Time: 700 ms
2: Dist: 4, Time: 723 ms
3: Dist: 4, Time: 23 ms
4: Dist: 40, Time: 753 ms
5: Dist: 4, Time: 404 ms
6: Dist: 9, Time: 654 ms
7: Dist: 6, Time: 755 ms
8: Dist: 4, Time: 226 ms
9: Dist: 6, Time: 686 ms

Това според мене е по-бързо от варианта с trie на числотрошачката на Пайпа.

Напомням, че това е процесор с пасивно охлаждане на нетбук Acer.

Дали мога да бия и GPU-то? rofl

Nice. Ако си спомням правилно средното време с GPU-то беше някъде около 60 ms обаче.

#13378 (ツ) johnfound
Създадено на 01.10.2020, видяно: 1368 пъти.
|
johnfound

А сега малко зарибявка. rofl Последни резултати на Pentium N3540:

0: Dist: 4, Time: 751 ms
1: Dist: 4, Time: 700 ms
2: Dist: 4, Time: 723 ms
3: Dist: 4, Time: 23 ms
4: Dist: 40, Time: 753 ms
5: Dist: 4, Time: 404 ms
6: Dist: 9, Time: 654 ms
7: Dist: 6, Time: 755 ms
8: Dist: 4, Time: 226 ms
9: Dist: 6, Time: 686 ms

Това според мене е по-бързо от варианта с trie на числотрошачката на Пайпа.

Напомням, че това е процесор с пасивно охлаждане на нетбук Acer.

Дали мога да бия и GPU-то? rofl

Nice. Ако си спомням правилно средното време с GPU-то беше някъде около 60 ms обаче.

Е, на твоята числотрошачка и моята програма ще е по-бърза. А пък на моето "GPU", времето сигурно няма да е 60ms (ако въобще тръгне).

Пък и това, мисля, не е тавана. Имам още някой и друг фокус в ръкава. ;-)

0 1 2 3 4 ....11 12 13 14 15 ....25 26 27 28 29 30 31 32 33 34 35 36

Задача НЕ за интервю
7

AsmBB v3.0 (check-in: a316dab8b98d07d9); SQLite v3.42.0 (check-in: 831d0fb2836b71c9);
©2016..2023 John Found; Licensed under EUPL. Powered by Assembly language Created with Fresh IDE