[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 580: sizeof(): Parameter must be an array or an object that implements Countable
[phpBB Debug] PHP Warning: in file [ROOT]/phpbb/session.php on line 636: sizeof(): Parameter must be an array or an object that implements Countable
3.14.by forum • sse2 реализация
Page 1 of 1

sse2 реализация

Posted: Mon Nov 10, 2008 7:16 pm
by gureedo
А можно ли поподробнее узнать реализацию sse2 оптимизаций или хоть несколько намеков на них :)

Re: sse2 реализация

Posted: Mon Nov 10, 2008 10:44 pm
by BarsMonster
gureedo wrote:А можно ли поподробнее узнать реализацию sse2 оптимизаций или хоть несколько намеков на них :)
Самый жирный намек - Intel C++ compiler. Он просто жжет не по детски. :crazy:

Re: sse2 реализация

Posted: Tue Nov 11, 2008 5:06 am
by gureedo
ыв писали на чистом си? не использовали ассемблерные вставки или полностью не писали эту реализацию на ссе2?
главным образом интересно, а как выреализовали циклический сдвиг?)
ведь его нету в ссе2

Re: sse2 реализация

Posted: Tue Nov 11, 2008 6:14 pm
by BarsMonster
Все на C++ intrinsics, если нет циклического приходится делать 2 обычных и or. То же и для видеокарт, в которых тоже нет rotate.

#define ROTATE_LEFT_SSE(x, n) {__m128i tmp;tmp = _mm_srli_epi32(x, 32-n);x = _mm_slli_epi32(x, n);x = _mm_or_si128(x, tmp);};

Re: sse2 реализация

Posted: Tue Nov 11, 2008 7:30 pm
by gureedo
спасибо большое, очень выручили!

Re: sse2 реализация

Posted: Fri Aug 14, 2009 9:58 am
by 6bxshhAp
Реализовывал так же брутер md5 для CPU используя sse2 технологии, но в результате добился скорости в 2 раза меньшей чем у вас. Учел все известные на данный момент способы ускорить подбор. В результате вместо 64 этапов вычисляются 37, но скорость далеко не близка к вашей.
Результаты моей и вашей программы:
Core 2 Duo 1.83GHz .........33 MH/s.......................59 MH/s
Pentium 4 1.86GHz...........6.6 MH/s .....................9.2 MH/s

Оптимизировать получившийся мой код таким образом, что бы скорости немного уровнялись не представляется возможным (как мне кажется), следовательно могу предложить, что вы придумали очередной способ еще немного ускорить расчет md5. Может раскроете секрет или хоть направите куда копать?

Re: sse2 реализация

Posted: Fri Aug 14, 2009 1:49 pm
by BarsMonster
6bxshhAp wrote:Реализовывал так же брутер md5 для CPU используя sse2 технологии, но в результате добился скорости в 2 раза меньшей чем у вас. Учел все известные на данный момент способы ускорить подбор. В результате вместо 64 этапов вычисляются 37, но скорость далеко не близка к вашей.
Результаты моей и вашей программы:
Core 2 Duo 1.83GHz .........33 MH/s.......................59 MH/s
Pentium 4 1.86GHz...........6.6 MH/s .....................9.2 MH/s

Оптимизировать получившийся мой код таким образом, что бы скорости немного уровнялись не представляется возможным (как мне кажется), следовательно могу предложить, что вы придумали очередной способ еще немного ускорить расчет md5. Может раскроете секрет или хоть направите куда копать?
Я считаю столько же шагов, сколько и вы, никакой мистики нет.
Просто эффективная реализация. Без Intel C++ и без 64-х бит все медленее :-)

Re: sse2 реализация

Posted: Fri Aug 14, 2009 2:46 pm
by IvanG
Если считать только 4 хэша за раз, то никакая оптимизация не поможет -- в MD5 очень сильная зависимость между инструкциями. 8 (а лучше 12-16) хэшей за раз позволяют довольно легко выйти на пиковую скорость в ~3 инструкции за такт на iCore.
64 бита (а точнее 8 дополнительных XMM регистров) действительно заметно помогают, а вот использование Intel C не является обязательным ;).

Re: sse2 реализация

Posted: Fri Aug 14, 2009 6:45 pm
by 6bxshhAp
Ясно... Спасибо.