x86 Optimization Manuals

Тема в разделе "WASM.A&O", создана пользователем cppasm, 29 дек 2008.

  1. murder

    murder Member

    Публикаций:
    0
    Регистрация:
    3 июн 2007
    Сообщения:
    628
    cppasm
    У меня Athllon XP:)

    Мне кажется, что у подавляющего большинства пользователей есть SSE. Хотя если тебе не лень писать две версии программы - пожалуйста это приветствуется :)

    P.S.
    Атлон только теоретически может выполнять по 3 инструкции за такт. Это вовсе не значит, что твой код можно так оптимизировать.
     
  2. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Программа одна - в ней разные ветки кода выполняются в зависимости от того на каком процессоре запущено.
    А вообще я не сторонник подхода "у всех есть".
    А если я возьму и сделаю код под SSE2 (на Athlon XP нету) - я не думаю что ты сильно обрадуешся если программа которая тебе нравится и работает на P4 у тебя на AthlonXP откажется работать, при том что вычислительных мощностей для неё хватает.
    К тому же я не весь код пишу в нескольких вариантах, а узкие места в мультимедиа обработке.
    Да это понятно.
     
  3. exst

    exst New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2009
    Сообщения:
    91
    Аналогично, если прога использует 3dnow, а выполняется на новых Intel Core или Xeon...
     
  4. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Для тех кто на бронепоезде.
    3DNow! используется только если при старте был обнаружен процессор AMD с поддержкой 3DNow!.
    Если нет 3DNow! но есть SSE - используется SSE.
    Если нет ничего - используется fixed point реализация на обычных командах x86.
     
  5. exst

    exst New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2009
    Сообщения:
    91
    А как же ММХ и FMA? ))) А вслучае Itanium - запустить соответствуюющий код)
     
  6. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    exst, cppasm правильно всё говрит. Делает таблицы функций и прыгает на них динамически в зависимости от возможностей процессора. только думается проверка должна не от 3dnow начинаться, а от самых последних наборов инструкций к самым младшим.
     
  7. exst

    exst New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2009
    Сообщения:
    91
    3dnow действительно достаточно быстр...
     
  8. exst

    exst New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2009
    Сообщения:
    91
    Интресерно на счет тригонометрии: Если требуется вычеслить более 300000 sin или cos, то как лучше поступить? использовать FPU или SSE? Просто интересно...
     
  9. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    По барабану. И то и другое будет медленно.
    Я так и делаю. Точнее почти так :)
    Для разных реализаций замеряется число тактов по RDTSC и проверка идёт от самых быстрых к самым медленным.
     
  10. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    в рантайме скорость меряется? если да, тогда эт уже обучаемая программа получается. JIT прям) Иначе же скорость именно от той машины, где этот самый rdtsc и делается.
    И всё-таки проверка на расширения первична, измерение скорости всех доступных вторична.
     
  11. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Нет, не во время запуска.
    Я меряю до окончательной сборки и потом в зависимости от результатов выставляю приоритет используемых реализаций.
    Неа. Разница есть конечно, но небольшая.
    Например на P4 SSE работает быстрее чем на Athlon.
    А так - RDTSC меряет в тактах, так что тактовая частота значения не имеет.
    Достаточно сделать статистику по ряду архитектур Intel и AMD и усреднить результаты.
    Так на этой проверке всё и посторено.
    От статистики скоростей исполнения зависит только в каком порядке эти расширения проверяются на наличие.
     
  12. asmfan

    asmfan New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2006
    Сообщения:
    1.004
    Адрес:
    Abaddon
    cppasm звучит здорово это всё, только где такие скорости то применять (если не секрет:)?
     
  13. exst

    exst New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2009
    Сообщения:
    91
    cppasm, Откуда у вас такое интереный скрин? Мегаотладчик?
     
  14. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Обработка изображений, сжатие/распаковка jpeg.
    Там же написано было :)
    Профилировщик это - AMD CodeAnalyst.
    Ещё есть Intel VTune если интересно - но он немного не бесплатный :)