Core 2 x87 Производительность с плавающей запятой

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

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

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

Кажется, у меня где-то в ящике есть старый 80387-16. Дайте мне знать, если вы хотите его купить. :)

KristoferA 25.11.2008 06:36

Я бы проголосовал за комментарий, если бы мог :)

Nathan Fellman 28.12.2008 11:53
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
За пределами сигналов Angular: Сигналы и пользовательские стратегии рендеринга
TL;DR: Angular Signals может облегчить отслеживание всех выражений в представлении (Component или EmbeddedView) и планирование пользовательских...
Sniper-CSS, избегайте неиспользуемых стилей
Sniper-CSS, избегайте неиспользуемых стилей
Это краткое руководство, в котором я хочу поделиться тем, как я перешел от 212 кБ CSS к 32,1 кБ (сокращение кода на 84,91%), по-прежнему используя...
0
2
1 224
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

D поддерживает C ABI, поэтому, если это библиотека C, ее можно будет использовать.

dsimcha 25.11.2008 08:11

Однако мне бы не хотелось, чтобы там были накладные расходы на вызов функций C.

Arafangion 18.05.2010 07:00

Другие вопросы по теме