Re[8]: shootout fannkuch-redux. Проблема в скорости на X86 -
От: SleepyDrago Украина  
Дата: 28.10.10 18:33
Оценка:
Здравствуйте, 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

#if 0
                    p.reverse(f);
#else
                    std::reverse( &p.data[0], &p.data[f+1]);
#endif

real 0m4.673s

#if 1
                    p.reverse(f);
#else
                    std::reverse( &p.data[0], &p.data[f+1]);
#endif

real 0m3.430s

обе выдают
556355
Pfannkuchen(11) = 51
Re[9]: shootout fannkuch-redux. Проблема в скорости на X86 -
От: minorlogic Украина  
Дата: 28.10.10 20:46
Оценка:
Жесть! срочно менять компилятор на кошерный
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[10]: shootout fannkuch-redux. Проблема в скорости на X86
От: SleepyDrago Украина  
Дата: 29.10.10 15:14
Оценка: 4 (1)
Здравствуйте, 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 Украина  
Дата: 30.10.10 09:31
Оценка:
Кстати непонятно почему такая медленная версия mandelbrot бенчмарка. руки зачесались переписать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: shootout fannkuch-redux. Проблема в скорости на X86 -
От: SleepyDrago Украина  
Дата: 30.10.10 09:50
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Кстати непонятно почему такая медленная версия mandelbrot бенчмарка. руки зачесались переписать.

в свое оправдание могу сказать что в том тесте где я развлекался плюсовой программы не было вообще
Re[11]: shootout fannkuch-redux. Проблема в скорости на X86
От: SleepyDrago Украина  
Дата: 11.08.11 14:36
Оценка:
Выкапываю из могилки эту тему только для того чтобы сказать что случайно обратил внимание что они обновились на новый 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>
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.