Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых) |
eXeL@B —› Программирование —› Статьи, гайды, мануалы наборам SSE2/3/4/5, AVX, XOP, FMA, MMX, AES... |
Посл.ответ | Сообщение |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 26 октября 2014 11:29 · Личное сообщение · #1 Здравствуйте! Начал потихоньку использовать SSE2 инструкции в асм вставках, хотелось бы почитать побольше хороших статей на русском + нормальное объяснение где и как уместно использовать ( вот по типу такого: http://www.allasm.ru/proc_09.php ) Я понимаю, что есть интеловские гайды https://software.intel.com/sites/landingpage/IntrinsicsGuide/, но мне они не очень нравятся. Может кто-то поделиться своими статьями, наблюдениями по данному поводу | Сообщение посчитали полезным: sivorog |
|
Создано: 26 октября 2014 14:33 · Личное сообщение · #2 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 26 октября 2014 14:44 · Личное сообщение · #3 |
|
Создано: 26 октября 2014 14:52 · Личное сообщение · #4 ELF_7719116 пишет: В том-то и дело, я ожидал от intel компиля SSE2, а он в обычный цикл развернул. Пришлось вручную переписать. Насколько я помню, многие опции необходимо было активировать в настройках проекта. Еще может быть компилятор посчитал, что в вашем случае не обоснованно "по-другому" разворачивать цикл. |
|
Создано: 26 октября 2014 17:52 · Личное сообщение · #5 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 26 октября 2014 18:06 · Личное сообщение · #6 |
|
Создано: 26 октября 2014 19:03 · Личное сообщение · #7 |
|
Создано: 26 октября 2014 19:04 · Поправил: r_e · Личное сообщение · #8 |
|
Создано: 27 октября 2014 00:12 · Личное сообщение · #9 ELF_7719116 пишет: дравствуйте! Начал потихоньку использовать SSE2 инструкции в асм вставках, хотелось бы почитать побольше хороших статей на русском поддержу топик. тоже интересно. боюсь нареканий. но очено многие бруты требуют оптимизаиции. страдал на досуге, но жаль представить не чего. но почиталбы с удовольствием.. еще. может приложить сюда.. алго оптимизированные с учетом размерности регистров ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 27 октября 2014 08:21 · Личное сообщение · #10 r_e пишет: а условие что если проц АМД не интел, то компилить только базовым набором инструкций. у меня 10.1, вроде SSE2 есть в ексешнике. Во всяком случае, залезть оледебагером и по CPUID найти переход, думаю, несложно будет ... или так что-то навешано должно быть?? такой вопрос: а для возведения числа в степень, в SSE2(3/4/5) инструкции не предусмотрено? хорошо если степень маленькая, можно pmuludq xmm0, xmm1 друг за дружкой написать. А если большая степень - банально крутить в цикле? |
|
Создано: 27 октября 2014 08:43 · Личное сообщение · #11 r_e пишет: если проц АМД не интел, то компилить только базовым набором инструкций разве не компилировались несколько наборов инструкций, а потом, при запуске программы определялся проц и выполнялась соответствующая ветка? r_e пишет: Ну там не пакость была угу, мимимишная подставочка. Без предупреждения. |
|
Создано: 27 октября 2014 10:20 · Личное сообщение · #12 ELF_7719116 пишет: а для возведения числа в степень, в SSE2(3/4/5) инструкции не предусмотрено? ты там случаем.. не РСА оптимизиш? для РСА нужно просто по другому задачу рассматривать. Типа адаптивные алгоритмы юзать ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
|
Создано: 27 октября 2014 10:20 · Личное сообщение · #13 а если степень большая то переписать формулу x^y на exp и log http://jrfonseca.blogspot.com/2008/09/fast-sse2-pow-tables-or-polynomials.html итд, гугл полон ответов Добавлено спустя 4 минуты да и вообще зачем заморачиваться асмом когда люди на С уже все написали либ по гуглу дофига http://web.archive.org/web/20120724203759/http://yoffy.dyndns.org/svn/yofcpp/trunk/yoffy/simdmath/sse2/ вместе с формулами где не exp а 2^ |
|
Создано: 27 октября 2014 12:07 · Личное сообщение · #14 |
|
Создано: 27 октября 2014 12:29 · Личное сообщение · #15 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 27 октября 2014 18:53 · Личное сообщение · #16 VodoleY пишет: для РСА нужно просто по другому задачу рассматривать. Типа адаптивные алгоритмы юзать потом может и рса коснется. что такое "адаптивные алгоритмы"? r_e пишет: Имел в виду что в случае неинтел управление уходило на неэффективную ветку. Где-то в описаниях встречал что "неэффективность" была в использовании только базового набора, якобы для обеспечения совместимости со всеми процами. А действительно, есть такая функция в ексешнике...вот же суки! впрочем, все это несложно исправить Code:
вот! |
|
Создано: 27 октября 2014 20:01 · Поправил: VodoleY · Личное сообщение · #17 ELF_7719116 пишет: "адаптивные алгоритмы"? узко заточенные, но работающие на голову быстрее. могу привести пример умножение больших чисел. например х*х , х+1*х+1. ну типа перебор при бруте... не помню, помойму пифогоровое.. вобщем все сводится к тому.. что ты (х+1)^2 = x^2+2x+1 разворачиваеш. и в результате чтоб посчитать тебе надо.. предыдущий результать хранить.. привать к нему shl 1 от х .. и потом and 1. это гораздо быстрее чем умножение. Правда требуется немного памяти дополнительной, чтоб предыдущий результат хранить З.Ы. очень советую почитать древнюю статью от Зобми.. касательно оптимизации крипто брутов АДД. соврал. то что я приввел очень полезно для брута РСА по Ферма по пифагору.. там по быстрому тест, на то является ли число квадратом.. но я могу более быстрый эксресс тест предложить ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 27 октября 2014 20:36 · Личное сообщение · #18 |
|
Создано: 27 октября 2014 21:26 · Личное сообщение · #19 |
|
Создано: 28 октября 2014 04:43 · Личное сообщение · #20 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 28 октября 2014 08:21 · Личное сообщение · #21 Gideon Vi пишет: ...гонясь за мифической авто-оптимизацией. если говорить об оптимизации вообще, то в моей случае родной компиль MS VS Studio 6.0 дает код заметно хуже по быстродействию, чем интел цпп (особенно по циклам видно). вопрос такого optimization плана: для оператора memset® ( void * memptr, int val, size_t num ) , SSE2(3/4/5...) целесообразно использовать? если num кратен 16 или больше, чем 100500, делаем как-то так: Code:
компилятор развернет это все, в лучшем случае, аналогично: Code:
или в цикле все крутить будет, обычным вызовом отдельно-оформленного memset |
|
Создано: 28 октября 2014 08:33 · Поправил: VodoleY · Личное сообщение · #22 ELF_7719116 а ты по тикам посчитай, че там огород городить? З,Ы почитай еще тему.. я с пол года назад создавал.. про алгоритмы и оптимизации.. ктото давал линку на человека, который пишет статьи и занимается исключительно оптимизацие кода З.Ы.Ы и да.. еще с 90ых.. не забываем что оптимизация идет в 2ух напрявлениях.. или по скорости или по обьему З.Ы.Ы.Ы еще есть касательно алго, чудесные в ПДФ лекции помойму Тюменского института, по криптографии. Там были алго развернуты с вариантами оптимизации. Это если решил бруты оптимизить ----- Наша работа во тьме, Мы делаем, что умеем. Мы отдаем, что имеем, Наша работа во тьме.... |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 08 ноября 2014 10:51 · Личное сообщение · #23 VodoleY окей. (!)касаемо общей оптимизации. Допустим для itoa, с определенным радиксом, я предпочитаю использовать заточенный xtoa (копирую и перерабатываю для себя), т.е. вместо itoa(any_integer,&buffer[0],16); использовать заточенный Code:
оптимизирующий компиль вставит вместо div/mul - SHR, ну и тд еще пару типичных функций от меня (elf edition) на основе xtoa 1. Переводим последовательность (одномерный массив) байт любой длины в 16-ричную ASCIIZ строку ... = {1a,fb,cd,ca,fe,17,a1,b7}; "1afbcdcafe17a1b7" Code:
2. ОБРАТНОЕ ПРЕОБРАЗОВАНИЕ. Из ACSIIZ(16-ричный формат) любой длины в последовательность (одномерный массив) байт Code:
Арчи сказал, что местами страшно, но годно Впрочем, кому не нравиться - милости прошу: выложите свой быстродействующий вариант |
|
Создано: 08 ноября 2014 14:31 · Поправил: r_e · Личное сообщение · #24 ELF_7719116 Мало того что страшно, но еще и с багами. Code:
обратку тебе на ДЗ ))) ----- старый пень | Сообщение посчитали полезным: ELF_7719116 |
Ранг: 419.0 (мудрец), 647thx Активность: 0.46↗0.51 Статус: Участник "Тибериумный реверсинг" |
Создано: 08 ноября 2014 19:23 · Поправил: ELF_7719116 · Личное сообщение · #25 r_e бле...посмотрел на твой код: "а за карты символов я и забыл вообще, несмотря на то, что сам так делал", правда давно эт было. thx!!! за то что напомнил только компиль не переваривает ,..., + static(или в глобальные) Code:
r_e пишет: обратку тебе на ДЗ ))) как-то так Code:
вообщем, если у кого-то есть подобные трики -> предлагаю выкладывать |
|
Создано: 09 ноября 2014 06:43 · Личное сообщение · #26 |
|
Создано: 09 ноября 2014 10:21 · Личное сообщение · #27 |
eXeL@B —› Программирование —› Статьи, гайды, мануалы наборам SSE2/3/4/5, AVX, XOP, FMA, MMX, AES... |