ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
11 июля
369628
Ксения (20.11.2012 02:19 - 03:20, просмотров: 2180)
Fortran Composer XE 2013 с библиотеками MKL и IMSL Еще не наступил 2013-ый год, а Intel уже выпустил свои Fortran Composer XE 2013 и C++ Composer XE 2013 . Оба относятся к новой версии 13.0, а прежде были версии 12.х, и назывались они - Composer XE 2011, т.е. промежуточный 2012-ый год в названии продуктов был пропущен. Я сама раньше не была в восторге от Intel Fortran'а - мне больше нравился старенький Compaq Visual Fortran (широко известный, как CVF). А с интелевским компилятором была знакома по версии 9.1, уже не вспомню, в каком году это было. Короче говоря, тогда компилятор Фортрана мне не понравился, а к C++ я и вовсе отнеслась с пренебрежением: мол, без MS Visual Studio он все равно не работает, а в Студии уже есть C++ компилятор, по своим возможностям сильно превосходящий интеловский. Под возможностями я тогда понимала исключительно в виде инкапсуляции в MFC всего того добра, что вертится внутри Windows, тогда как Intel делает упор на другое - главным образом, на скорость/производительность. Поговаривают, что когда-то Интеля сильно обидела не то AMD, не то какая-то другая компания, выпустив тестирующую производительность процессоров утилиту, которая сильно занижала показатели интелевских Pentium по сравнению с АМДшными процессорами. Или, по крайней мере, Интелю результаты тех тестов показались обидными. И вот с тех пор Intel принялся свои компиляторы писать. И пусть они функционально были более бедны (чем MS VC), чем их конкуренты, но производительность в стандартных алгоритмах показывали отменную. Причем, уже в то время Intel начал выпускать уже скомпилированные библиотеки, которые показывали еще большую производительность, чем та, которую можно было достигнуть, компилируя на интелевском же Фортране сорцы стандартных математических библиотек (чаще всего линейной алгебры). К настоящему времени из всего этого задела выросла Intel Math Kernel Library (MKL), известная своей способностью подлаживаться под тот процессор, на котором она используется. Достигается это посредством раздельной компиляции алгоритмов под разные процессоры в отдельные dll-библиотеки, из множества которых при запуске программы связывались лишь те, что к данному процессору подходили. Понятно, что единый вариант компиляции таких высоких результатов никогда бы не показал, т.к. либо был бы вынужден ради совместимости использовать "спартанский" набор возможностей, либо работать только на процессорах свежего выпуска. Тогда как MKL-библиотека поддерживает даже длинные SSE-регистры последних моделей (включая AVX!), если ей достается такой продвинутый процессор. Ну и, конечно, в деле распараллеливания вычислений по разным ядрам Intel тоже достиг значительных успехов. С точки же зрения программиста требуется всего лишь разрешить (по умолчанию запрещена) многоядерную кооперацию. Все же остальное работает само, не требуя никаких дополнительных изменений в программном коде. Т.е. сама программа математических вычислений пишется, как однопоточная, а распаралеливание происходит внутри самой MKL-библиотеки, если она сочтет такое распараллеливание целесообразным. Сама MKL-библиотека поставляется, как отдельный продукт, однако в Fortran Composer XE 2013 она входит целиком (относительно C++ я не в курсе, но скорее всего входит тоже). Хотя, надо признаться, что из-за того, что MKL написана и компилировалась на Фортране, ее использование на языке C/C++ порой встречает определенные трудности. В последней версии 13.0 эти трудности были отчасти преодолены, посредством появления новых функций, где можно заказывать обработку матрицы, хранящейся в памяти укладкой строк (как в C/C++), а не столбцов (как в Fortran). Тем не менее, далеко не все функции получили такую двойную реализацию. Сам же Fortran новой версии меня поразил своими широкими возможностями. И раньше и подумать не могла, что Fortran может быть таким роскошным. Все-таки это по происхождению очень старый язык, и казалось что кардинально его улучшить нельзя. Тем не менее, Фортран от Интеля - конь с большим норовом, и мне пришлось больше недели с ним возиться, чтобы откомпилировать тот же код, который раньше без проблем компилировался на CVF. И, тем не менее, это Вещь с большой буквы! Инструмент, который может быть очень полезным для тех, кто всерьёз занимается ЦОС (DSP). Ведь до сих пор очень многие алгоритмы так и остались в фортрановском обличии, а при переводе автоматическими переводчиками на C/C++ (типа f2c) сильно теряют в скорости. Новый Fortran Composer XE 2013 уже существует под все три операционки - Windows, Linux и MacOSX. В каждом инсталляторе есть выбор между 32-х и 64-х битными вариантами. Помимо вышеперечисленного, в Fortran Composer XE 2013 версии 13.1 (вышла месяц назад) включена IMSL-библиотека (International Mathematics and Statistics Library), развёрнутая на фундаменте MKL-библиотеки, т.е. использует последнюю, как источник примитивов, благодаря чему и сама прибавляет в скорости. К сожалению, пока еще точно не известно, подойдет ли к ней общая лицензия или потребуется отдельная (что-то инсталлирует, но предупреждает, что интеловская лицензия ограничена). Я понимаю, что для тех задач, которые можно сходу решить, запустив MatLab или MathCad, такой Fortran не нужен. Но если вы всерьез занимаетесь ЦОС, и перед вами стоят задачи, где прежде всего важна скорость/производительность (например, итерационные или реального времени), то этот инструмент подойдет в самый раз.