Производительность Core 2 x87 с плавающей запятой - PullRequest
0 голосов
/ 25 ноября 2008

Я работаю с некоторым кодом обработки чисел, который по своей природе является интенсивным с плавающей точкой и просто медленным. Это исследовательский код, поэтому он может быть адаптирован к одной архитектуре и работает на ядре Core 2 Quad. Насколько я понимаю, для архитектуры Pentium 4 / Netburst корпорация Intel серьезно сократила выпуск FPU x87 и приняла более ориентированный на SSE2 дизайн. Это привело к ужасной производительности на коде x87. Однако архитектура Core 2 более тесно связана с архитектурой P6, чем Netburst.

Мой компилятор вообще не ориентирован на SSE, и я понимаю, что очень немногие компиляторы делают это хорошо. Кроме того, я использую язык D, который является достаточно инновационным, поэтому для него не так много доступных компиляторов. Однако я не хочу переключать языки, как из-за инерции моего существующего кода, так и потому, что, несмотря на его незрелость, мне действительно нравится D.

Есть ли в архитектуре Core 2 урезанный FPU x87? Если так, как лучше всего обойти это?

1 Ответ

2 голосов
/ 25 ноября 2008

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

Я бы также порекомендовал взглянуть на библиотеку liboil, которая позволяет оптимизировать использование SSE без написания ассемблера; Однако я не знаю, как он интегрируется с D.

...