Здравствуйте, minorlogic, Вы писали:
M>Здравствуйте, SleepyDrago, Вы писали:
SD>>нет оно выполняет reverse части перестановки в цикле. переставляются байты. SD>>вот опубликован фикс на проблемы кодогена — там комментарий в интересном месте на 2 строки )
M>
M>void reverse(int n)
M>{
M> // following lines are very carefully written to meet both test
M> // conditions and reasonable timings.
M> char * lo = &data[0], * hi = &data[n];
M> for (; lo < hi; ++lo, --hi)
M> swap( *lo, *hi );
M>}
M>
M>Выглядит exactly как std::reverseю А своп по правилам можно через XOR например ?
выглядит именно. но как показывает весь этот топик при уродских хотспотах >90% общего времени abstraction penalty hurts
Здравствуйте, minorlogic, Вы писали:
M>Жесть! срочно менять компилятор на кошерный
компилятор — это системный g++ 4.4 который идет во всех новых системах по дефолту. Делайте выводы так сказать.
Ну можно и подвести итоги наверное :
Основной чарт: 32 бита, 1 цпу — место №1 cpu time 47.29 elapsed 47.30линк
32 бита, 4 цпу — место №1 cpu time 47.60 elapsed 12.12 загрузка цпу 97% 98% 99% 99% линк
64 бита, 1 цпу — место №1 cpu time 49.35 elapsed 49.37линк
64 бита, 4 цпу — место №1 cpu time 49.42 elapsed 12.63 загрузка цпу 100% 99% 94% 98% линк
Альтернативный чарт: 32 бита, 1 цпу — место №1 cpu time 29.33 elapsed 29.34линк
32 бита, 4 цпу — место №1 cpu time 29.34 elapsed 7.41 загрузка цпу 100% 97% 100% 99% линк
64 бита, 1 цпу — место №1 cpu time 30.48 elapsed 30.51линк
64 бита, 4 цпу — место №1 cpu time 30.49 elapsed 7.71 загрузка цпу 100% 100% 97% 99% линк
Обсуждению побочных приключений посвящена эта тема — спасибо за комментарии.
ps. Все началось с прочтения желания поспорить с некими высказываниями в интернете лежа с температурой на больничном.
pps. Что можно улучшить ?
1)В отличие от джавы не сделана балансировка нагрузки при 4х cpu. То есть работа тупо делится на 4 части и кидается на потоки и как система их разбалансирует так и будет. Причина — разрабатывал под MSVC и тупо не нашел удобного atomic API.
2)Стиль оптимизированной программы можно причесать и привести к стилю той что в основном чарте. Они могут отличаться только типом данных "перестановка" и передачей ее по значению а не по ссылке. Поскольку она заработала почти сразу ( пришлось ее замедлить для случая когда cpu не поддерживает SSE4.1 ) то это не понадобилось. С программой в основной части можно делать почти все — опасно трогать функцию reverse и цикл count flips а остальное можно менять как угодно.
Re: shootout fannkuch-redux. Проблема в скорости на X86 -25%
Здравствуйте, minorlogic, Вы писали:
M>Кстати непонятно почему такая медленная версия mandelbrot бенчмарка. руки зачесались переписать.
в свое оправдание могу сказать что в том тесте где я развлекался плюсовой программы не было вообще
Re[11]: shootout fannkuch-redux. Проблема в скорости на X86
Выкапываю из могилки эту тему только для того чтобы сказать что случайно обратил внимание что они обновились на новый gcc
Для тех кто следил с попкорном за полетами gcc 4.4.4 — взгляните на результаты 4.5.2 (железо походу они не меняли так как cpu все еще Intel Q6600).
кстати линки в табличке не поменялись = так что старые увидеть уже не получится.
Основной чарт: 32 бита, 1 цпу — место №7 cpu time 61.84 elapsed 61.85линк
32 бита, 4 цпу — место №4 cpu time 61.77 elapsed 15.73 загрузка цпу 100% 99% 99% 96% линк
64 бита, 1 цпу — место №12 cpu time 69.71 elapsed 69.73линк
64 бита, 4 цпу — место №8 cpu time 69.83 elapsed 17.82 загрузка цпу 100% 96% 100% 97% линк
Альтернативный чарт (3 участника): 32 бита, 1 цпу — место №2 cpu time 42.73 elapsed 42.75линк
32 бита, 4 цпу — место №2 cpu time 42.75 elapsed 10.79 загрузка цпу 100% 100% 98% 99% линк
64 бита, 1 цпу — место №1 cpu time 36.71 elapsed 36.73линк
64 бита, 4 цпу — место №1 cpu time 36.73 elapsed 9.28 загрузка цпу 100% 99% 100% 97% линк
На что я могу только сказать double_facepalm.jpg
зы. Я попробую проверить на своем железе и виртуалках что за цирк тут происходит, но это то что я вижу опубликованное на сайте
SD>Здравствуйте, minorlogic, Вы писали: M>>Жесть! срочно менять компилятор на кошерный SD>компилятор — это системный g++ 4.4 который идет во всех новых системах по дефолту. Делайте выводы так сказать.
SD>Ну можно и подвести итоги наверное : SD> SD>Основной чарт: SD> SD>32 бита, 1 цпу — место №1 cpu time 47.29 elapsed 47.30линк SD>32 бита, 4 цпу — место №1 cpu time 47.60 elapsed 12.12 загрузка цпу 97% 98% 99% 99% линк SD>64 бита, 1 цпу — место №1 cpu time 49.35 elapsed 49.37линк SD>64 бита, 4 цпу — место №1 cpu time 49.42 elapsed 12.63 загрузка цпу 100% 99% 94% 98% линк SD>
SD>Альтернативный чарт: SD> SD>32 бита, 1 цпу — место №1 cpu time 29.33 elapsed 29.34линк SD>32 бита, 4 цпу — место №1 cpu time 29.34 elapsed 7.41 загрузка цпу 100% 97% 100% 99% линк SD>64 бита, 1 цпу — место №1 cpu time 30.48 elapsed 30.51линк SD>64 бита, 4 цпу — место №1 cpu time 30.49 elapsed 7.71 загрузка цпу 100% 100% 97% 99% линк SD>SD>