|
Виж темите без отговор | Виж активните теми
Дата и час: Пон Юли 27, 2026 9:08 pm
| Автор |
Съобщение |
|
DanielDimov
Ранг: Почетен член
Регистриран на: Нед Фев 16, 2014 3:36 pm Мнения: 953
|
 Re: Полезни алгоритми
Като направя теста - ще напиша какви са резултатите
|
| Нед Юни 28, 2015 1:30 pm |
|
 |
|
gicho
Ранг: Форумен бог
Регистриран на: Пон Мар 13, 2006 1:59 pm Мнения: 3867 Местоположение: Габрово
|
 Re: Полезни алгоритми
Като правиш теста можеш да свериш и точността - Newton-Raphson май не беше много точен? Иначе това P8600 сигурно си има SIMD инструкция за sqrt на double.
|
| Нед Юни 28, 2015 9:05 pm |
|
 |
|
DanielDimov
Ранг: Почетен член
Регистриран на: Нед Фев 16, 2014 3:36 pm Мнения: 953
|
 Re: Полезни алгоритми
Интересни неща се оказаха с кода за PC - при включени всички оптимизации компилатора на Microsoft разгъва циклите (до колкото е възможно) и не изпълнява изчисления резултата от които не се ползва. Заради тези оптимизации получавах нереално високи скорости. След като успях да "излъжа" компилатора да ми изпълнява всичко както искам - се достигна до по-реалистични резултати:
fastSqrt - 36 милиона изпълнения в секунда sqrt_u32 - 65 милиона изпълнения в секунда
Метода на колегата palavrov е около 2 пъти по-бърз.
|
| Нед Юни 28, 2015 11:04 pm |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: Полезни алгоритми
Само да допълня, че съм го оптимизирал за нормален ARM32 инструкшън сет с условно изпълнение на всички инструкции + ръчен loop unrolling т.е. никъде няма условни преходи и самия алгоритъм е написан така, че компилатора да се възползва от аритметични инструкции със шифтване на единия операнд. За този cortex m3 на който го пробваш не е ясно как ще се оптимизира с Thumb2 инструкциите ... ако не е проблем постни дизасемблиран код с objdump, че ми стана любопитно а не ми се подкарва туулчейн в момента и за него.
Едит: Това, че компилатора е оптимизирал добре трябва да те радва а не да се чудиш как му спреш оптимизациите - не мен ми се наложи да правя всичко ръчно с много итерации писане, компилиране, дизасемблиране, корекция, компилиране, дизасемблиране, корекция ... докато ми хареса.
_________________ Мразя да мразя ...
|
| Нед Юни 28, 2015 11:40 pm |
|
 |
|
ike
Ранг: Форумен бог
Регистриран на: Пет Фев 04, 2005 9:59 pm Мнения: 6019 Местоположение: София
|
 Re: Полезни алгоритми
Когато смяташ производителност трябва много да внимаваш, как точно бенчиш, защото технологиите се променят всяка година. Например в https://en.wikipedia.org/wiki/AVX-512 можеш да сложиш 16 броя 32 биточи числа - но това не е най-бързото на процеосорите. Сега всяко следващо поколение процесори е с 5% по-бързо от предходното, обаче видеокартата им е с пъти по-бърза и подържат разни нови технологии, като OpenCL 2.0 което допринася доста за производителността. Ето едно резюме: http://www.sisoftware.co.uk/?d=qa&f=apu_brw_gpu3
_________________ Warriors of the Night, ASSEMBLER!!!
|
| Пон Юни 29, 2015 1:44 am |
|
 |
|
bobihot
Ранг: Форумен бог
Регистриран на: Сря Фев 13, 2013 3:35 pm Мнения: 1803
|
 Re: Полезни алгоритми
OpenCl е ефективен когато имаш огромен брой данни с еднакви сметки, каквито са графиките и някои други, предимно матрични сметки. При поточно смятане на малки порции вграденият копроцесор е по-бърз в общият случай- поне така показаха на тестовете.
|
| Вто Юни 30, 2015 1:46 am |
|
|
Кой е на линия |
Потребители разглеждащи този форум: 0 регистрирани и 1 госта |
|
Вие не можете да пускате нови теми Вие не можете да отговаряте на теми Вие не можете да променяте собственото си мнение Вие не можете да изтривате собствените си мнения Вие не можете да прикачвате файл
|
|