Forth http://fforum.winglion.ru/ |
|
СПФ и оптимизатор http://fforum.winglion.ru/viewtopic.php?f=18&t=159 |
Страница 23 из 25 |
Автор: | `Kopa [ Вт мар 06, 2012 17:19 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
Mihail писал(а): Я действую от частного к общему. Новые более абстрактные правила могут перекрывать собой старые жесткие. Чтобы выявить невостребованные правила я написал программу: Для выявления, действительно уже неактуальных правил, придётся прогнать через макрооптимизатор "представительный" набор тестов, для понимания на какие цепочки Форт кода сработало то или иное правило и степень его актуальности после исключения (перекроется ли данное правило набором других оставшихся правил). Задача,по моему, достаточно нетривиальная, оценивая возможное комбинаторное число оптимальных правил. Можно сделать генератор "случайного" кода и прогнать его через оптимизатор, для выявления "всех" возможных вариантов срабатывания правил. |
Автор: | `Kopa [ Вт мар 06, 2012 17:41 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
Mihail писал(а): Какие еще библиотеки следовало-бы протестировать на использование правил? Можно прогнать этот комплексный тест http://www.complang.tuwien.ac.at/forth/appbench-1.2.zip ранняя версия упоминалась на форуме. (~ygrek, вроде правил и почти всё из него выполнялось под spf4) и другие подходящие тесты. P.S. Может, имеет смысл, выделить топики про производительность Форт реализаций и собрать в одном месте подраздела форума? |
Автор: | Mihail [ Ср мар 07, 2012 11:36 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
Mihail писал(а): Обнаружил, что : BB I I I */ ; компилит нечто несуразное, но разбираться было некогда. Сегодня на работе вижу нормальный код и тест работает. Таки ошибка в оптимизаторе. исправил: http://fpauk.narod.ru/macroopt.f Вместо MOV ECX , EBX компилилось MOV EDX , EAX Работало нормально когда правило не срабатывало. Почему правило не всегда срабатывает тоже надо разбираться. Должно быть так: Код: REQUIRE SEE lib\ext\disasm.f : a I I I */ ; SEE a 5751B7 8945FC MOV FC [EBP] , EAX 5751BA 8B0424 MOV EAX , [ESP] 5751BD 2B442404 SUB EAX , 4 [ESP] 5751C1 8945F8 MOV F8 [EBP] , EAX 5751C4 8B0424 MOV EAX , [ESP] 5751C7 2B442404 SUB EAX , 4 [ESP] 5751CB 8B1C24 MOV EBX , [ESP] 5751CE 2B5C2404 SUB EBX , 4 [ESP] 5751D2 8BCB MOV ECX , EBX 5751D4 F76DF8 IMUL F8 [EBP] 5751D7 F7F9 IDIV ECX 5751D9 8D6DFC LEA EBP , FC [EBP] 5751DC C3 RET NEAR `Kopa писал(а): Mihail писал(а): Какие еще библиотеки следовало-бы протестировать на использование правил? Можно прогнать этот комплексный тест http://www.complang.tuwien.ac.at/forth/appbench-1.2.zip Желательно, подборку делать из SPF релиза, тогда и данную проверку можно включить в поставку. |
Автор: | `Kopa [ Ср мар 07, 2012 14:55 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
Mihail писал(а): Mihail писал(а): Обнаружил, что : BB I I I */ ; компилит нечто несуразное, Таки ошибка в оптимизаторе. исправил:[/url] У меня тест не проходит Код: : BB I I I * /; выдал 572C4B 8945FC MOV FC [EBP] , EAX 572C4E 8B0424 MOV EAX , [ESP] 572C51 2B442404 SUB EAX , 4 [ESP] 572C55 8945F8 MOV F8 [EBP] , EAX 572C58 8B0424 MOV EAX , [ESP] 572C5B 2B442404 SUB EAX , 4 [ESP] 572C5F 8B1C24 MOV EBX , [ESP] 572C62 2B5C2404 SUB EBX , 4 [ESP] 572C66 8BD1 MOV EDX , ECX 572C68 F76DF8 IMUL F8 [EBP] 572C6B F7F9 IDIV ECX 572C6D 8D6DFC LEA EBP , FC [EBP] 572C70 C3 RET NEAR Mihail писал(а): Желательно, подборку делать из SPF релиза, тогда и данную проверку можно включить в поставку. Тогда нужен свой вариант бенчмарк-а в SPF4 для комплексного теста макрооптимизатора. |
Автор: | spf [ Ср мар 07, 2012 20:38 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
Mihail писал(а): Mihail писал(а): Обнаружил, что : BB I I I */ ; компилит нечто несуразное, Таки ошибка в оптимизаторе. исправил: http://fpauk.narod.ru/macroopt.fОна также проявляется в macroopt.f,v1.74 и v1.73; а в v1.72 тест проходит нормально. |
Автор: | Mihail [ Ср мар 07, 2012 21:36 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
spf писал(а): У меня эта ошибка продолжает проявлятся на данной версии macroopt.f. Да, что-то я перепутал версии еше раз: http://fpauk.narod.ru/macroopt.f |
Автор: | Mihail [ Пн мар 12, 2012 10:47 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
`Kopa писал(а): Может будет полезно такое сравнение Spf4 и VFX Код: HEX : a DP @ OVER - 7E > IF DROP EXIT THEN DP @ HERE <> IF DROP EXIT THEN ; SEE a 572CA3 E87446FEFF CALL 55731C ( DP ) ( 004C8E50 8B1524214000 ) MOV EDX, [00402124] . . . C DP в СПФ перемудрили. На сколько я знаю, замысел остался не востребован. Может сделать его USER переменной? Или вообще обычной переменной? |
Автор: | Mihail [ Пн мар 12, 2012 12:41 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
Mihail писал(а): На сколько я знаю, замысел остался не востребован. Это я опрометчиво. TEMP-WORDLIST используется. Тогда предлагаю, условие заменить дополнительной косвенностью: Код: : DP ( -- addr )
GET-CURRENT 7 CELLS + @ ; |
Автор: | Mihail [ Вт мар 13, 2012 15:29 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
В samples\bench\benchmark.f [o/n] для СПФ следует определить как Код: : [o/n] HERE DROP ; IMMEDIATE Если [o/n] - пустое слово, то тест не честный. ЗЫ Последняя версия оптимизатора |
Автор: | `Kopa [ Вт мар 13, 2012 16:43 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
Результаты замера benchmark на последней версии оптимизатора (Celeron 900, 1Гб) нетбук eee900 VFX vs SPF4 Код: VFX SPF4 ms DO LOOP 6 31 + 8 47 M+ 8 63 * 8 46 / 14 63 M* 7 31 M/ 14 109 /MOD 15 78 */ 40 219 ARRAY fill 12 16 Total: 132 734 This system's O/S interface Test time including overhead ms Win32 API: SendMessage 16 125 Win32 API: COUNTER 374 266 System I/O: KEY? 19 969 Total: 409 1360 This system's application performance Test time including overhead ms times Eratosthenes sieve 1899 Primes 259 250 Fibonacci recursion ( 35 -> 9227465 ) 381 359 Hoare's quick sort (reverse order) 227 281 Generate random numbers (1024 kb array) 260 266 LZ77 Comp. (400 kb Random Data Mem>Mem) 301 344 Dhrystone (integer) 224 250 Total: 1652 1750 P.S. Результаты по комплексным тестам где то близко. Тест по примитивам, почему то провален. Можно будет добавить ещё iForth, у него результаты, вероятней всего, будут лучше. |
Автор: | Mihail [ Вт мар 13, 2012 17:12 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
`Kopa писал(а): Тест по примитивам, почему то провален. Может у тебя старая версия DO LOOP Новая в: http://fpauk.narod.ru/spf_forthproc.f http://spf.cvs.sourceforge.net/viewvc/spf/src/tc_spf.F (UNIX) http://spf.cvs.sourceforge.net/viewvc/spf/src/compiler/spf_immed_loop.f (UNIX) |
Автор: | rvm [ Вт мар 13, 2012 20:33 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
Mihail писал(а): Михаил, есть ошибка в отпимизаторе — слово HASH не работает. Посмотри пожалуйста багрепорт. Наверное, уведомления от багтрекера к тебе на электропочту не доходят? |
Автор: | Mihail [ Вт мар 13, 2012 22:11 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
rvm писал(а): слово HASH не работает. Посмотри пожалуйста багрепорт. Исправил |
Автор: | rvm [ Вт мар 13, 2012 23:39 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
Mihail писал(а): Спасибо, работает.
|
Автор: | ac [ Ср мар 14, 2012 12:45 ] |
Заголовок сообщения: | Re: СПФ и оптимизатор |
`Kopa писал(а): Можно будет добавить ещё iForth, у него результаты, вероятней всего, будут лучше. А знает ли кто-нибудь, в каких реальных приложениях применяются все эти замечательные импортные форты? Куда идёт вся эта непревзойденная (в тестах) мощь? Мне в виндовом SPF производительности всегда хватало, "узкие места" всегда вне SPF. Правда вот в ARM'овом форте не всегда хватает (часть циклов в драйверах пришлось переписать на асме - дает ускорение в 3-10 раз), но там CODE-слов всего около 30, оптимизация отсутствует вообще. |
Страница 23 из 25 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |