1 / 1 / 1
Регистрация: 24.11.2016
Сообщений: 49
|
|
1 | |
SSE (SSE42, SSE41, SSSE3, SSE3, SSE2, SSE1)28.08.2017, 17:04. Просмотров 1091. Ответов 3
Метки нет Все метки)
(
Подскажите фреймворк \ библиотеку которая будет на базе SSE (SSE42, SSE41, SSSE3, SSE3, SSE2, SSE1) проверять строку на равенство, а так же работать атрофическими операциями. А ля strcmp("StringA", "StringB") И SumAdd(20349, 54356)
Самый главный аспект, именно если процессор не поддерживает SSE42 и SSE41 то он бы использовать версию ниже
0
|
|
28.08.2017, 17:04 | |
Какой программой можно преобразовать SSE в SSE2? Вектора в sse3 SSE2, выравнивание и new как не использовать SSE2 ? |
|
1068 / 978 / 145
Регистрация: 19.02.2010
Сообщений: 3,012
|
|
29.08.2017, 00:32 | 2 |
У Агнера Фога agner.org посмотрите его библиотечку - там есть strcmp и stricmp.
Вот только в сырцах для strcmp заявляется реализация на/под 386 and SSE4.2 instruction sets. Может быть, даже 386ой вариант будет быстрее идущей в стандартной библиотеке Вашего компилятора - проверьте. А для stricmp - SSE4.2 version not implemented because the gain is small. (т.е. её код "совместим" аж c 386) Видимо, не все йогурты, т.е. новые наборы инструкций, полезны для повышения эффективности сравнения строк. Вероятность, что Агнер пропустил какой-то из эффективных способов, мала - т.к. он является автором мануалов по оптимизации прог на ассемблере и на С/С++ (там же на сайте лежат), справочной информации по растактовкам команд кучи процессоров.
0
|
1 / 1 / 1
Регистрация: 24.11.2016
Сообщений: 49
|
|||||||||||
29.08.2017, 04:43 [ТС] | 3 | ||||||||||
Да, спасибо.. Это той тематики что я и спрашивал.. Только его код не производительнее чем люди на коленке пишут..
Вот этот asm Кликните здесь для просмотра всего текста
и тот что у него memcmpSSE2 Кликните здесь для просмотра всего текста
Debug 32Bit memcmpSSE2 Max: 1,456572 Min: 0,665633 TestSSE2 Max: 0,251890 Min: 0,219887 1,456572 | 0,227308) + 1,229264 >> TestSSE2 0,748693 | 0,228366) + 0,520327 >> TestSSE2 1,440724 | 0,239516) + 1,201208 >> TestSSE2 0,727608 | 0,239077) + 0,488531 >> TestSSE2 0,665633 | 0,251890) + 0,413743 >> TestSSE2 0,731848 | 0,219887) + 0,511961 >> TestSSE2 0,741570 | 0,229868) + 0,511702 >> TestSSE2 0,735388 | 0,228114) + 0,507274 >> TestSSE2 0,817917 | 0,238949) + 0,578968 >> TestSSE2 0,753952 | 0,243789) + 0,510163 >> TestSSE2 По производительности не канает... Есть ещё варианты ? Добавлено через 1 минуту У меня SSE42 и SSE41 не поддерживает проц, хочу заранее написать.
0
|
1068 / 978 / 145
Регистрация: 19.02.2010
Сообщений: 3,012
|
|
31.08.2017, 16:59 | 4 |
Проверьте для разных длин строк.
А то если разница в первом же символе - то, очевидно, проиграет тот вариант, у которого просто длиннее пролог+эпилог (число push-pop используемых регистров в стек, иные подготовительные операции). Т.е. постройте график скоростей для случаев, когда в среднем в десятом, в пятидесятом, сотом, пятисотом, тысячном символе возникает различие у строк. Ну или кратным числу байт в регистре заложите шаг (16-32-64-128-... для случая использования SSE). Также проверьте случаи выравненности и невыравненности строк на границу параграфа.
1
|
31.08.2017, 16:59 | |
Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь. SSE2 результат не сходиться Поддержка SSE2 в MASM32 Умножение матриц. SSE2
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |