olpi
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Vskazka:Ну вот это уже более похоже на правду, хотя 25 мне кажется уже слишком большим. Дело в том, что мне как-то пришлось считать с 300 знаками мантиссы, и по-моему там, на вскидку, было раз в 50 медленнее считать. Впрочем не измерял. | Сделал тестовые просчеты: одну и ту же программу транслировал с опцией /real-size:64 (16-значная точность real*8) и с опцией /real-size:128 (34-значная точность real*16). Кроме того, опять же транслировал двумя компиляторами - 32-разрядным ifort.exe, находящимся в папке C:\\Program Files (x86)\Intel\Compiler\11.0\066\fortran\Bin\IA32\, и 64-разрядным ifort.exe из папки C:\\Program Files (x86)\Intel\Compiler\11.0\066\fortran\Bin\intel64\, т.е. получал два экзэшника - 32-разрядный и 64-разрядный. При трансляции во всех случаях задавалась опция оптимизации по скорости /Ox Результаты по времени счета такие: 32-разрядный экзэшник: real*8 - 13.85 сек real*16 - 865.49 сек 64-разрядный экзэшник: real*8 - 13.95 сек real*16 - 512.17 сек Опять получается, что смена кода с 32-битового на 64-битовый не влияет на скорость вычислений с обычной двойной точностью real*8. А вот при вычислениях с расширенной точностью real*16 выигрыш заметный 865.49/512.17=1.69. Значит, когда сравнивается сорость счета с типом real*8 и real*16 надо уточнять, для какой архитектуры процессора - для 32-разрядного 865.49/13.85=62.5 для 64-разрядного 512.17/13.95=36.7 Добавлено: Скажите, может кто знает, существуют ли сейчас компиляторы фортрана, поддерживающие тип real*12, соответсвующий десятичной точности в 25 цифр? Я знаю, что в советское время на тех громадных машинах, например, БЭСМ-6, был фортран, у которого числа одинарной точности занимали 6 байт (real*6), а двойной точности - 12 байт (real*12). Для наших задач такая точность была бы (и когда-то была) оптимальной. А теперь приходится использовать тип real*16, точность которого, мягко говоря, избыточна. Может, где-нибудь есть такой фортран? Вообще если посмотреть на ряд размеров вещественных чисел 4, 8, 16, то видно, что в нем дыра - явно не хватает типа real*12. Хорошо бы как-нибудь подкинуть идейку насчет этого тому же Интелу, такому фортрану цены бы не было. |