ПрограммированиеФорумГрафика

Перемножение матриц( почему-то D3DXMatrixMultiply все-равно быстрее?!) (3 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#30
9:13, 6 фев 2010

FearOfTheDark
> какие технологии
Это было видно из дизассемблера - перемножение на FPU без всяких SSE и прочих.

#31
10:39, 6 фев 2010

FalconVVS
посмотри внимательней это одна из реализаций, а их там 3 (одну ты нашёл)
---
вот только смысл их от туда доставать, всё лежит в отдельной длл бери и пользуйся )

#32
10:50, 6 фев 2010

susageP
> если щас еще операция сложения быстрей умножения то можно попробовать
> использовать 'быстрое' перемножение векторов.
В данном случае это не выгодно. Параллелится хорошо так что, в данном случае, можно получить даже на древнем пне по одному такту что на умножение, что на сложение.

#33
10:56, 6 фев 2010

Я думаю, они просто не все компоненты матриц там перемножают, отсюда и 30% разницы.

#34
12:01, 6 фев 2010

А есть ли какие-нибудь ограничения поддержки FPU( команд ) для разных процессоров( в смысле где-то поддерживается, где-то не... какие-то нюансы)?!
и как себя ведет FPU на x64?!

#35
14:04, 6 фев 2010

FalconVVS
> Это было видно из дизассемблера
Из дизассемблера видно, что там 4 ветки - FPU, SSE, SSE2, 3dNow. Просто смотреть надо внимательней. И FPU код очень неоптимальный, это видно не вооруженным глазом.

#36
14:38, 6 фев 2010

FearOfTheDark
> А есть ли какие-нибудь ограничения поддержки FPU( команд ) для разных процессоров
Да там чуть ли не со времен 8087 ничего приниципиального не менялось :)
Там что-то добавлялось но на этапе 80387/80486, короче для актуальных процессоров разницы нет.

#37
15:33, 6 фев 2010

Хехе, все  такие умные.. )) то у майкрософт код не оптимальный , то вообще они бараны... 
а матрицы множатся всё равно быстрее ^=^

#38
15:34, 6 фев 2010

crsib
Ты наверно крутой спец, раз видишь невооруженым глазом, что асм-код  неоптимальный.

#39
15:50, 6 фев 2010

ksacvet777
нет он просто видит что там ингструкции с для работы с памятью идут почти что подряд, вот и сделал вывод

по крайней мере в ссе реализации их всего 16 и они идут подряд, 8 вначале 8 в конце.

#40
16:21, 6 фев 2010

ksacvet777
> а матрицы множатся всё равно быстрее ^=^
Еще раз, там 4 ветки кода. Здесь приведена только одна.
Necrys
> SSE не даёт прироста на таких мелочах, даже иногда вредит. Рулед инлайн и кэш-френдли методы, можно эффективно на чистом asm без sse написать и то лучче > будет.

Intel 64 and IA-32 Architectures Optimiztion Reference Manual, 3.8.4:
> Assembly/Compiler Coding Rule 63. (M impact, M generality) Use Streaming
> SIMD Extensions 2 or Streaming SIMD Extensions unless you need an x87 feature.
> Most SSE2 arithmetic operations have shorter latency then their X87 counterpart
> and they eliminate the overhead associated with the management of the X87
> register stack.

3.8.4.1:
> On Intel Core Solo and Intel Core Duo processors, the combination of improved
> decoding and μop fusion allows instructions which were formerly two, three, and four
> μops to go through all decoders. As a result, scalar SSE/SSE2 code can match the
> performance of x87 code executing through two floating-point units. On Pentium M
> processors, scalar SSE/SSE2 code can experience approximately 30% performance
> degradation relative to x87 code executing through two floating-point units.

Обращаем внимание, что речь идет о сравнении одного конвейера SSE с двумя FPU.

Smouking
> нет он просто видит что там ингструкции с для работы с памятью идут почти что
> подряд
Не только. До PIII включительно fpu был трех-стадийный.  И  fmul был одной из тех инструкций, которая в одиночку выполнялась за три такта, но при этом три fmul подряд выполнялись то же за 3 такта. На PIV FPU стал еще медленней и рекомендовалось параллельно выполнять не FPU код. Что опять таки не сделано. Про Core и старше сказанно выше. На Core SSE инструкции выполняются за такт (Intel® Advanced Digital Media Boost)

#41
16:30, 6 фев 2010

crsib
хмм...по тестам видно было что интелы любят ССЕ, что не скажешь об АМД, те такое чувство что всю заточку делают под ФПУ.

#42
17:59, 6 фев 2010

Smouking
Современные суперскаляры "кушают" уже переработанный поток команд. Всё упирается в организацию и производительность внутренних вычислительных устройств. У AMD внутренний конвеер унифицирован, а Intel зачастую предпочетает разные "подпорки" типа спец блок для обработки команд SSE. Вот отсюда и проистекает ситуация, что Intel любит оптимизацию в большей степени чем AMD т.к. у последнего что  использование SSE, что FPU загрузят одно и тоже исполнительное устройство.

#43
18:58, 6 фев 2010

Вы бы лучше раскрыли тайну функции D3DX,
а не холиварили у кого FPU быстрее.

#44
19:17, 6 фев 2010

doc.
> а Intel зачастую предпочетает разные "подпорки"
C PIV уже не предпочитает. Ты еще вспомни, что до 486DX FPU стоял отдельной микросхемой (а на многих не ч86 это до сих пор отдельный чип).
doc.
> тоже исполнительное устройство.
Что значит одно устроиство? Execution core везде один, если ты о нем. Начиная с Core интелы при определенных условиях (см 2.1.3.1 Intel ORM) могут одновременно на execution core выполнять 6 мю-опов. На которые раскладываются все инструкции.

Lolmen
> Вы бы лучше раскрыли тайну функции D3DX
Ну, мне бы для начала хотелось понять, как топик кастер делает бенчмаркинг. И на каком железе. А AMD это вполне ожидаемо, так как есть ветка на 3DNow!, которую безкостыльная АМД любит больше, чем SSE. На интелах - скорее всего не правильная методика тестирования. Хотя возможны всякие штуки, типо агрессивной работы с кешем у d3dx

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумГрафика

Тема в архиве.