Я пытаюсь получить GCC (или clang), чтобы последовательно использовать инструкцию SSE для sqrt вместо функции математической библиотеки для научного приложения с интенсивным вычислением. Я пробовал различные GCC на различных 32 и 64-битных системах OS X и Linux. Я уверен, чтобы включить sse с -mfpmath = sse (и -march = core2, чтобы удовлетворить требование GCCs использовать -mfpmath = sse на 32 бит). Я также использую -O3. В зависимости от версии GCC или clang, сгенерированная сборка не использует SSE-файлы SSE. В некоторых версиях GCC все sqrts используют инструкцию. В других случаях существует смешанное использование sqrtss и вызов функции математической библиотеки. Есть ли способ дать подсказку или заставить компилятор использовать только инструкцию SSE?Убедитесь, что компилятор всегда использует инструкцию SSE sqrt
4
A
ответ
4
Использовать sqrtss
собственный __builtin_ia32_sqrtss
?
0
Вы должны быть осторожны в использовании этого, вы, вероятно, знаете, что он имеет меньшую точность. Это станет причиной того, что gcc не использует его систематически.
Существует трюк, о котором даже упоминается в руководстве SSE от INTEL (надеюсь, что я правильно помню). Результат sqrtss
только один Heron итерация от цели. Возможно, что gcc иногда может inline
, что вокруг краткой итерации в какой-то момент (версии), а для других - нет.
Вы можете использовать встроенную версию MSN, но вы должны окончательно найти спецификации на веб-сайте INTEL, чтобы знать, что вы торгуете.
Смежные вопросы
- 1. Убедитесь, что curl использует TLS
- 2. Убедитесь, что SQLAlchemy не использует числовые идентификаторы
- 3. Убедитесь, что объект всегда является членом списка?
- 4. Убедитесь, что страница всегда загружается в iframe
- 5. Как я могу использовать инструкцию SSE?
- 6. Убедитесь всегда восстановление зависимостей
- 7. Компилятор: что, если условие всегда верно/false
- 8. Убедитесь, что нет перекрытия
- 9. IDE использует компилятор VM?
- 10. Компилятор, похоже, не использует
- 11. Gcc использует sqrt без включения math.h
- 12. убедитесь, что utc datetime сохраняется
- 13. Убедитесь, что процесс запущен
- 14. Убедитесь, что переменная заканчивается
- 15. Убедитесь, что вы используете последнюю версию SafariLauncher, которая использует appium
- 16. Использует HTML5 Server-sent-events (SSE) ReSTful?
- 17. Проверьте, использует ли DLL инструкции SSE
- 18. Убедитесь, что функция JavaScript/jQuery всегда работает на загрузке страницы
- 19. MySQL присоединяется - убедитесь, что одна записи всегда находила
- 20. Убедитесь, что структура Entity всегда читает из базы данных?
- 21. Убедитесь, что приложение андроида BLE всегда работает в фоновом режиме
- 22. Убедитесь, что браузер открыт webdriver всегда в фокусе
- 23. Убедитесь, что в моих расширенных списках всегда отображаются «текущие» данные?
- 24. Codeigniter - убедитесь, что сеанс всегда обновляется с базой данных
- 25. Убедитесь, что конвейер всегда выводит массив без использования @()?
- 26. Строка в Java (убедитесь, что строка всегда с точно «//» спереди)
- 27. Убедитесь, что пробел всегда доступен на цифровой клавиатуре
- 28. ASP.NET MVC: убедитесь, что пользователь всегда имеет значение переменной сеанса
- 29. Убедитесь, что положение камеры всегда является центром экрана?
- 30. Почему компилятор использует временную переменную?
Я знаю, что он теряет точность, однако я надеюсь, что это будет более согласованным между различными ОС. Стандартная функция sqrt для математической библиотеки не является особенно стандартным, и результат - разные результаты на разных платформах. В этом случае важны скорость и согласованность. – arsenm
Я не уверен, где вы получили эту информацию, но это неверно. 'sqrtss' - квадратный корень с квадратным квадратом с квадратной точностью IEEE-754. Возможно, вы думаете вместо «rsqrtss», который является быстрым приближенным квадратным корнем. –
@arsenm: Стандартные функции sqrt для математической библиотеки полностью стандартизованы, и результаты не могут варьироваться между платформами, которые соответствуют Приложению F стандарта C: «Функции sqrt в обеспечивают работу квадратного корня IEC 60559». IEC 60559 (IEEE-754), в свою очередь, полностью определяет семантику квадратного корня. –