Как подключить библиотеку mkl в intel fortran
Перейти к содержимому

Как подключить библиотеку mkl в intel fortran

  • автор:

How to use Intel fortran compiler with MKL on command line

I’ve freshly installed the Intel® Parallel Studio XE Composer Edition for Fortran OS X* (student version). It comes with the Math Kernel Library, which is why I bought it. I’m having a hard time getting started with MKL. Here’s what I’ve done step-by-step. 1) Installed Intel® Parallel Studio XE Composer Edition for Fortran OS X* (no problem). I can run a ‘hello world’ script using ifort and throw the -mkl link command on at the end with no problem (not calling any mkl commands just yet). 2) Following these instructions I set my environment variables using a script provided by intel (located in opt/intel/bin to be precise). I have the intel 64-bit architecture (according to ifort -V ) so I use bash mklvars.sh intel64 mod ilp64 . It runs without error (or any output). 3) I write the following code to use MKL’s gemm command for fortran95. Just multiplying 2 matrices.

program test implicit none real, dimension(2,2) :: testA, testB, testC testA = 1 testB = 1 testC = 0 ! I don't think I need this line, but it shouldn't matter call gemm(testA, testB, testC) write(*,*) testC end program test 

4) I compile with ifort test_mkl.f90 -o test -mkl . I get the following error:

Undefined symbols for architecture x86_64: "_gemm_", referenced from: _MAIN__ in ifortSTVOrB.o ld: symbol(s) not found for architecture x86_64 

5) I try ifort test_mkl.f90 -o test -L/opt/intel/mkl/lib -mkl and get the same result. I notice a lot of people using MKL begin their code with USE mkl95_blas, ONLY: gemm , so I put that in above implicit none in both of the above examples and get:

 test_mkl.f90(4): error #7002: Error in opening the compiled module file. Check INCLUDE paths. [MKL95_BLAS] USE mkl95_blas, ONLY: gemm --------^ test_mkl.f90(12): error #6406: Conflicting attributes or multiple declaration of name. [GEMM] call gemm(testA, testB, testC ) ---------^ test_mkl.f90(4): error #6580: Name in only-list does not exist. [GEMM] USE mkl95_blas, ONLY: gemm --------------------------^ compilation aborted for test_mkl.f90 (code 1) 

Any ideas as to what the problem is or how to fix this? I have successfully run a simple script in XCODE using MKL, so it’s definitely something I’m doing and not my installation.

Как подключить библиотеку mkl в intel fortran

Здравствуйте!
Возникла проблема — необходимо использовать команду из внешней библиотеки (mkl, установилась вроде правильно, linux), но никак не получается это сделать: ставлю ключ -mkl в компиляторе(intel fortran), пробовал use mkl и include с разными именами, указанными в мануале интела к моей команде. Есть подозрение, что надо как-то указать путь к библиотеке, а как это сделать, не знаю.

94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Использование внешней библиотеки
Всем здравствуйте! Работаю в linux ubuntu 18, Qt 5.10.1. Внедряю в свою программу внешнюю.

Создание библиотеки (расчетный модуль на Fortran-е и GUI на C++)
Здравствуйте, коллеги! Пишу программу. Программа состоит из графического интерфейса и.

Возможно ли прицепить научные библиотеки fortran к python?
Всем доброго времени суток! Читал, что все научное достояние человечества отражено в библиотеках.

Создание внешней библиотеки
Всем привет! В теме https://www.cyberforum.ru/qt/thread1929120.html, одним уважаемым.

301 / 214 / 7
Регистрация: 16.10.2012
Сообщений: 485

прям так и указать — перед именем типа pgf . -l /name_dir/mkl.a .

Добавлено через 4 минуты
Еще с «тетей Маней» пообщаться можно: man имя_компилятора_которым_собираете
Она расскажет про допустимые опции, в том числе и как библиотечку указать.

Регистрация: 22.03.2013
Сообщений: 12
маню попробую, спасибо)
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь

Подключение внешней библиотеки программно
При подключении библиотеки использую этот код Assembly extLibrary = Assembly.Load(new.

Подключение внешней библиотеки greensock
Категорически приветсвую! Подскажите как подключить внешнюю библиотеку greenshock? Имеется.

Внесение изменений и компиляция внешней библиотеки
Я в своей программе, написанной на JAVA в NETBEANS IDE 7.3, использую внешнюю библиотеку с открытым.

Использование Geany и Fortran 77 и MinGW
Приветствую. Можно ли настроить должным образом парметры GEANY для получения возможности.

При добавлении внешней библиотеки программа не запускается
Здравствуйте! Проблема в том, что после того, как я добавил внешнюю DLL к проекту.

Ограничить время выполнения операции (прервать команду внешней библиотеки)
Здравствуйте В своем проекте использую закрытую библиотеку owen_io.dll (компания ОВЕН), для.

PARALLEL.RU — Информационно-аналитический центр по параллельным вычислениям

Наряду со стандартными для Linux компиляторами GNU, на кластерах вычислительного комплекса НИВЦ установлены компиляторы Intel C++ и Fortran. На настоящее время (начало 2006 года) на всех кластерах установлены компиляторы версии 9.1. Настоящая страница посвящена описанию наиболее важных опций и настроек этих компиляторов, а также их основных отличий от компиляторов GNU. Страница ориентирована, в основном, на пользователей кластеров НИВЦ МГУ, но может быть полезна и другим русскоязычным пользователям. Здесь не затрагиваются вопросы, связанные с компиляцией для платформы IA-64.

Также на всех кластерах установлена библиотека Intel Kernel Math Library (MKL) версии 8.0.2. Библиотека располагается в каталоге /usr/mkl. Обращаем внимание на то, что в каталоге lib доступны подкаталоги 32, 64 и em64t. На кластере Ant необходимо использовать библиотеки из подкаталога em64t, а на остальных кластерах — из подкаталога 32. Вся необходимая документация и примеры могут быть получены из каталога /usr/mkl/doc.

Для чего потребовались новые компиляторы?

Необходимость в новых компиляторах возникла, главным образом, а) для поддержки программирования на языке Фортран 90, а также б) для более мощной оптимизации программ на языке Фортран, чем обеспечивает компилятор g77, использующий трансляцию в язык Си и затем компиляцию с помощью gcc.

Этим требованиям удовлетворяют также компиляторы PGI (Portland Group), но компания-разработчик отказалась поставлять их в Россию.

Как воспользоваться?

Компиляторы Intel вызываются с помощью команд icc (C или C++), icpc (C++) и ifort (Фортран 77/90). Команды mpicc, mpiCC и mpif77 для компиляции и сборки MPI-программ также настроены на использование компиляторов Intel.

Сохраняется также возможность пользоваться компиляторами GNU с помощью команд mpigcc, mpig++ и mpig77 (Фортран 90 не поддерживается).

Входные файлы

По умолчанию, файлы с расширением .cpp и .cxx считаются исходными текстами на языке С++, файлы с расширением .c — исходными текстами на языке Си, а компилятор icpc также компилирует файлы .c как исходные тексты на С++.

Файлы с расширениями .f, .ftn и .for распознаются как исходные тексты на языке Фотран, с фиксированной формой записи, а файлы .fpp и .F дополнительно пропускаются через препроцессор языка Фортран. Файлы с расширением .f90 считаются исходными текстами Фортран 90/95 со свободной формой записи. Явным образом можно задать фиксированную или свободную форму записи Фортран-программ с помощью опций -FI и -FR соответственно.

Файлы с расширением .s распознаются как код на языке ассемблера для IA-32.

Характеристики компиляторов Intel
Основные опции компиляторов

Наиболее интересными, конечно же, являются опции оптимизации кода. Большинство опций являются общими для компиляторов С++ и Фортран. Более подробное описанием опций смотри в англоязычных руководствах пользователя.

Уровни оптимизации ОпцияОписание -O0Отключает оптимизацию -O1 или -O2 Базовая оптимизация на скорость работы. Отключается инлайн-вставка библиотечных функций. Для компилятора С++ эти опции дают одинаковую оптимизацию, для компилятора Фортрана опция -O2 предпочтительнее, т.к. включает еще раскрутку циклов. -O3 Более мощная оптимизация, включая преобразования циклов, предвыборку данных, использование OpenMP. На некоторых программах может не гарантироваться повышенная производительность по сравнению с -O2. Имеет смысл использовать вместе с опциями векторизации -xK и -xW. -unroll[n] Включает раскрутку циклов до n раз. Оптимизации под конкретный процессор ОпцияОписание -tpp6 Оптимизация для процессоров Penitum Pro, Pentium II и Pentium III -tpp7 Оптимизация для процессоров Penitum 4 (эта опция включена по умолчанию для компилятора на IA-32) -xM Генерация кода с использованием расширений MMX, специфических для процессоров Pentium MMX, Pentium II и более поздних -xK Генерация кода с использованием расширений SSE, специфических для процессоров Pentium III -xW Генерация кода с использованием расширений SSE2, специфических для процессоров Pentium 4 Межпроцедурная оптимизация -ip Включается межпроцедурная оптимизация внутри одного файла. Если при этом указать опцию -ip_no_inlining, то отключаются инлайн-вставки функций. -ipo Включается межпроцедурная оптимизация между различными файлами Оптимизации с использованием профилей -prof_gen Генерируется «профилировочный» код, который будет использован для профилировки, т.е. сбора данных о частоте прохождения тех или иных мест в программе -prof_use Производится оптимизация на основе данных, полученных на этапе профилировки. Имеет смысл использовать вместе с опцией межпроцедурной оптимизации -ipo. Распараллеливание для SMP-систем -openmp Включается поддержка стандарта OpenMP 2.0 -parallel Включается автоматическое распараллеливание циклов

Производительность

Согласно результатам прогона тестов SPEC CPU2000, опубликованным на сервере ixbt.com, компиляторы Intel версии 6.0 практически везде оказались лучше по сравнению с компиляторами gcc версий 2.95.3, 2.96 и 3.1, и PGI версии 4.0.2. Эти тесты проводились в 2002 году на компьютере с процессором Pentium 4/1.7 ГГц и ОС RedHat Linux 7.3.

Согласно результатам тестов, проведенных компанией Polyhedron, компилятор Intel Fortran версии 7.0 почти везде оказался лучше по сравнению с другими компиляторами Fortran 77 для Linux (Absoft, GNU, Lahey, NAG, NAS, PGI). Только в некоторых тестах компилятор Intel незначительно проигрывает компиляторам Absoft, NAG и Lahey. Эти тесты были проведены на компьютере с процессором Pentium 4/1.8 ГГц и ОС Mandrake Linux 8.1.

Компиляторы Intel версии 9.1 также обгоняют по производительности компиялторы gcc, и показывают производительность сравнимую с Absoft, PathScale и PGI.

Мы будем благодарны тем пользователям и читателям, которые пришлют нам данные по влиянию выбора компилятора (GCC или Intel) и опций оптимизации на скорость работы на их реальных задачах.

Библиотеки

Компилятор языка Си использует runtime-библиотеку, разработанную в рамках проекта GNU (libc.a).

В этом списке перечислены статических библиотек, но для большинства из них существуют также динамические, т.е. подключаемые во время запуска, варианты (.so).

Вместе с компилятором Фортрана поставляются следующие библиотеки: libCEPCF90.a, libIEPCF90.a, libintrins.a, libF90.a, также используется библиотека математических функций libimf.a.

Сборка исполняемого файла

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

Таким образом, если Вы установили компилятор Intel на своей машине с Linux и хотите запускать собранные исполняемые файлы на других машинах, то нужно или использовать статическую сборку (что проще) или скопировать на эти машины динамические библиотеки Intel (обычно из директории вида /opt/intel/compiler70/ia32/lib) в одну из директорий, перечисленных в файле /etc/ld.so.conf, а также позаботиться о том, чтобы на этих машинах был установлен одинаковый набор динамических библиотек GNU/Linux.

По умолчанию, все библиотеки разработки Intel (кроме libcxa.so) подключаются статически, а все системные библиотеки Linux и библиотеки GNU подключаются динамически. С помощью опции -static можно заставить сборщик (редактор связей) подключить все библиотеки статически (что увеличит объем исполняемого файла), а с помощью опции -i_dynamic можно подключать динамически все библиотеки разработки Intel.

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

С помощью опций -Bstatic и -Bdynamic можно явно задавать динамическое или статическое подключение каждой из библиотек, заданных в командной строке.

С помощью опции -c сборка исполняемого файла отключается и производится только компиляция (генерация объектного модуля).

Совместное использование модулей на Фортране и Си

Чтобы совместно использовать модули, написанные на языках Фортран и Си, нужно согласовать именование процедур в объектных модулях, передачу параметров, а также доступ к глобальным переменным, если такие есть.

По умолчанию, компилятор Intel Fortran переводит имена процедур в нижний регистр и добавляет в конец имени знак подчеркивания. Компилятор Си никогда не изменяет имена функций. Таким образом, если мы хотим из модуля на Фортране вызвать функцию или процедуру FNNAME, реализованную на Си, то в модуле на Си она должна именоваться fnname_.

Компилятор Фортрана поддерживает опцию -nus [имя файла], которая позволяет отключать добавление знаков подчеркивания к внутренним именам процедур. Если задано имя файла, то это производится только для имен процедур, перечисленным в заданном файле.

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

В модулях на Си возможно использование COMMON-блоков, определенных внутри модулей на Фортране (подробнее об этом см. Intel Fortran Compiler User’s Guide, глава Mixing C and Fortran).

Совместное использование компиляторов Intel и GCC

Объектные модули на языке Си, полученные компилятором Intel C++, совместимы с модулями, полученными компилятором GCC и библиотекой GNU для языка Си. Таким образом, эти модули могут совместно использоваться в одной программе, собираемой с помощью команд icc или gcc, но для корректного подключения библиотек Intel рекомендуется использовать icc.

Компилятор Intel поддерживает ряд нестандартных расширений языка Си, используемых в рамках проекта GNU и поддерживаемых компилятором GCC (но не все из них, подробнее см. здесь).

О совместимости объектных модулей на языках С++ и Фортран в руководстве пользователя ничего не сказано, видимо, она не поддерживается.

Поддержка стандартов

Компилятор Intel C++ Compiler 7.0 for Linux поддерживает стандарт языка Си ANSI/ISO (ISO/IEC 9899/1990). Возможно установка строгой совместимости cо стадартом ANSI C (-ansi) или расширенного диалекта ANSI C (-Xa). При использовании опции -c99 поддерживается некоторое подмножество стандарта C99: ключевое слова restrict, массивы переменной длины, комплексные числа, объявления переменных в произвольных местах кода, макро-определения с переменным числом аргументов, inline-функции, булевский тип и др.

Поддерживается стандарт ISO/IEC 14882:1998 языка С++.

Компилятор Intel Fortran Compiler 7.0 for Linux поддерживает спецификацию ISO Fortran 95, а также совместим на уровне исходных текстов с компилятором Compaq Visual Fortran 6.6.

Ссылки

  • Intel Software development products. Страница содержит ссылки на страницы о компиляторах C++ и Фортран и о других средствах разработки.
  • Форум для пользователей компилятора Intel C++
  • Форум для пользователей компилятора Intel Fortran для Linux

Блог F-SEPS

Раньше я был уверен, что, возможно, самая крутая в мире �� математическая библиотека Intel MKL – полностью коммерческая и с чистой совестью пользоваться ей можно только купив лицензию у Intel. Однако, разбираясь со свободными (совершенно бесплатными) системами для научных вычислений, я обнаружил, что Intel MKL входит в состав некоторых из них и используется там как основной решатель для СЛАУ, а также других задач. Как минимум, она входит:

  • в библиотеки NumPy и SciPy в составе дистрибутива Anaconda Python;
  • в SciLAB (известная MatLAB-подобная свободная система компьютерной математики).

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

  • Redistributions must reproduce the above copyright notice and the following terms of use in the Software and in the documentation and/or other materials provided with the distribution.
  • Neither the name of Intel nor the names of its suppliers may be used to endorse or promote products derived from this Software without specific prior written permission.
  • No reverse engineering, decompilation, or disassembly of this Software is permitted.

Я не юрист, но из этого по-моему следует, что я имею полное право пользоваться MKL и даже ее распространять, если уведомлю в документации на свою программу, что копирайт MKL принадлежит Intel.

Видимо, разработчики Anaconda Python и SciLAB так и делают.

Конечно, если действительно на MKL придется завязать какие-то коммерческие проекты, этот вопрос потребует более глубокого юридического изучения. Для меня подобные юридические вопросы – полные дебри. Тут должны разбираться специальные люди. Но надеюсь, что простое экспериментирование с MKL, так же как и расчеты в NumPy и SciLAB, прав Intel не нарушают. ��

Мои «околонаучные» проекты в основном сделаны в GFortran. А Intel MKL для Windows, к сожалению, тесно интегрирована только с Intel Fortran, который уже точно коммерческий и весьма недешевый. (Под Linux MKL официально работает в том числе и с компиляторами GCC).

Подключить Intel MKL к GFortran в Windows на первый взгляд казалось нетривиальной задачей, но, после определенного разбирательства, это у меня получилось. Как – хочу зафиксировать ниже. Если потом все-таки окажется, что юридически это делать нельзя :), Intel MKL всегда можно заменить на OpenBLAS. Как он подключается – тоже запишу здесь для удобства. (Сказанное относится к библиотекам LAPACK и BLAS – больше мне из MKL пока не нужно).

Intel MKL в GFortrаn

Дистрибутив Intel MKL содержит скомпилированные библиотеки .dll , а также библиотеки .lib для компиляции и линковки в Intel Fortran и среде MS Visual Studio.

Мы не используем Visual Studio, а работаем с GFortrаn в составе компиляторов GCC. В принципе, GCC работает и с библиотеками .lib . Однако, корректно подключить все нужные для компиляции MKL .lib к GFortrаn – не получается. Судя по форумам, не у меня одного. Поэтому, чтобы вызывать из нашей программы MKL, попробуем подготовить библиотеки в родном для GCC формате .a и ограничимся динамическим связыванием. В принципе, .a содержит дистрибутив Intel MKL для Linux (я не поленился, установил MKL в Ubuntu), но .a в Ликунсе и в Виндовсе – несовместимы.

Нам надо получить из .dll и .lib библиотеки .a . Это возможно. Оказалось, что проще не использовать для этого .lib вообще. Библиотеки .a можно сделать просто из *.dll . Правда, это будут библиотеки только для динамической компоновки. Т.е. чтобы наша программа работала, в системе должно иметься несколько *.dll с Intel MKL. Кстати, если у нас инсталлирована, например, Anaconda Python, то все необходимые *.dll библиотеки с ней уже установлены.

Итак, у нас есть ряд .dll с Intel MKL. Их можно взять как из Anaconda Python, так и из официального дистрибутива Intel MKL, скачанного с их сайта. Первое, по-моему, даже проще т.к. на сайте Intel нужна регистрация.

Оказалось, что нужные нам функции LAPACK и BLAS в привычном формате вызова содержатся конкретно в файле mkl_rt.dll . Чтобы посмотреть, какие функции входят в *.dll есть разные утилиты. Проще всего воспользоваться утилитой dumpbin.exe из состава Visual Studio:

dumpbin /exports mkl_rt.dll

Она выдает следующее:

Ниже по списку упоминаются привычные функции LAPACK dgesv , dposv и другие.

Чтобы сделать библиотеку *.a из *.dll сначала надо сформировать текстовый файл .def со списком названий функций, т.е. из того, что обведено красным. В начале этого файла надо написать слово EXPORTS . Т.е. файл .def должен выглядеть так:

EXPORTS CAXPBY CAXPY CAXPYI CAXPY_DIRECT CBBCSD CBDSQR CCOPY CDOTC CDOTCI CDOTU . 

Файл .def можно сформировать из того, что вывел dumpbin.exe руками, а можно сделать скрипт, например, на питоне (привожу его ниже).

Получив .def , осталось сформировать библиотеку *.a (она должна иметь префикс lib и суффикс .dll ) с помощью утилиты dlltool.exe из состава GCC:

dlltool -d mkl_rt.def -D mkl_rt.dll -l libmkl_rt.dll.a

Вот скрипт на Питоне, который делает все описанное. Чтобы он работал в системе должны быть доступны dumpbin.exe и dlltool.exe . Кстати, чтобы это проверить, в Windows можно набрать where dumpbin – система выведет путь, где он лежит, либо скажет, что не находит такого.

DllFile = "mkl_rt.dll" # *.dll-файл, из которого будет сделан *.a-файл import os (FileBaseName, FileExt) = os.path.splitext(DllFile) TmpFile = FileBaseName + ".tmp" DefFile = FileBaseName + ".def" AFile = "lib" + FileBaseName + ".dll.a" os.system("dumpbin /exports " + DllFile + " > " + TmpFile) LineNo = 1 FirstLineNo = 0 LastLineNo = 0 TmpFile_ = open(TmpFile, 'r') DefFile_ = open(DefFile, 'w') DefFile_.write("EXPORTS\n") for Line in TmpFile_: if Line.find('ordinal hint') >= 0: FirstLineNo = LineNo if Line.find('Summary') >= 0: LastLineNo = LineNo if FirstLineNo != 0 and LineNo > FirstLineNo and \ (LastLineNo == 0 or LineNo LastLineNo): DefFile_.write(Line[26:]) # Названия функций – начиная с 26 символа LineNo += 1 TmpFile_.close() DefFile_.close() os.system("dlltool -d" + DefFile + " -D " + DllFile + " -l " + AFile) os.system("DEL *.tmp")

Полученный файл *.a надо положить туда, где GCC хранит свои библиотеки, либо в папку с нашими собственными библиотеками, например, C:\gcc\mylibs .

В принципе, это все. Проверим как все работает.

Протестируем MKL на примере из прошлого поста с тестом решения СЛАУ.

Тестовая программа на Фортране (в скоростном варианте с \(LL^T\) -разложением) выглядит так (файл LinTest.f90 ):

program LinTest implicit none integer, parameter :: n = 1000 ! Число уравнений integer, parameter :: m = 100 ! Число шагов real(8), dimension(n,n) :: A, A0 ! Матрица коэффициентов real(8), dimension(n) :: B ! Вектор правых частей / результатов real(8) :: s ! Контрольная сумма integer :: i, j, k ! Вспомог. индексы integer :: info ! Инфо об успешности решения integer :: t_0, t_1, t_rate, t_max ! Для измер. времени !------------------------------------------------------------------------ forall(i=1:n, j=1:n) A0(i,j) = 1-(dble(i-j)/n)**2 forall(i=1:n, j=1:n, i==j) A0(i,j) = 10. s = 0. call system_clock(t_0, t_rate, t_max) do k = 1, m A=A0 B=k call dposv("L", n, 1, A, n, B, n, info) ! Вызов процедуры LAPACK if (info/=0) stop ("Ошибка") s = s + sum(B) enddo call system_clock(t_1, t_rate, t_max) print *, "Время:", real(t_1-t_0)/t_rate print *, "Сумма:", s endprogram

Условно статическая компиляция (пусть наша библиотека libmkl_rt.dll.a лежит в C:\gcc\mylibs ):

gfortran LinTest.f90 -static -L C:\gcc\mylibs -lmkl_rt.dll -O2 -o LinTest.exe

Запуская программу, получаем:

LinTest.exe Время: 0.328000009 Сумма: 22439.195088956156 

Время 0,33 с – точно такое же как и у лидера прошлого теста Intel Fortran + MKL .

Размер LinTest.exe получился 595 КБ (компилятор был из GCC 6.3.0 из дистрибутива MinGW64). В него статически прилинковались все библиотеки, кроме .dll -библиотек MKL.

Какие в принципе .dll нужны для работы нашей программы? Если мы хотим, чтобы наша программа работала на другой машине, не имеющей установленную Анаконду или другой вариант MKL, надо будет скопировать и обеспечить доступность 5-ти файлов:

Размер Файл ---------------------------------- 1 328 896 libiomp5md.dll 37 854 480 mkl_avx2.dll 25 122 064 mkl_core.dll 24 297 744 mkl_intel_thread.dll 12 629 264 mkl_rt.dll ---------------------------------- 101 232 448 байт

100 МБ – конечно, не мало. Это вариант с последним дистрибутивом MLK с сайта Intel, версия 2017.2.187. Из дистрибутива Анаконды набегает поменьше – «всего» 86 МБ. Современный софт, он такой. ��

Полностью динамическая компиляция (убираем ключ -static ):

gfortran LinTest.f90 -L C:\gcc\mylibs -lmkl_rt.dll -O2 -o LinTest.exe

LinTest.exe получился крошечный – 57 КБ, но теперь для работы потребуются еще три .dll из GCC (данные для версии 6.3.0):

Размер Файл ---------------------------------- 75 264 libgcc_s_seh-1.dll 1 277 952 libgfortran-3.dll 325 632 libquadmath-0.dll ---------------------------------- 1 678 848 байт

OpenBLAS в GFortrаn

Установить OpenBLAS – куда проще.

Скачиваем с официального сайта уже скомпилированные бинарные файлы в архиве OpenBLAS-v0.2.19-Win64-int32.zip (версия для 64-разрядных машин).

Переписываем файлы libopenblas.a и libopenblas.dll.a туда, где GCC хранит свои библиотеки, либо в папку с нашими собственными библиотеками, например, C:\gcc\mylibs .

Статическая компиляция (пусть наши библиотеки *.a лежат в C:\gcc\mylibs ):

gfortran LinTest.f90 -static -L C:\gcc\mylibs -lopenblas -O2 -o LinTest.exe
LinTest.exe Время: 0.483999997 Сумма: 22439.195088956145 

Время на 48% больше, чем с Intel Fortran + MKL , но на самом деле тоже очень достойное.

Размер файла LinTest.exe , правда, громадный: 26 МБ.

Динамическая компиляция (убираем -static и добавляем к -lopenblas суффикс .dll ):

gfortran LinTest.f90 -L C:\gcc\mylibs -lopenblas.dll -O2 -o LinTest.exe

Размер LinTest.exe – всего 57 КБ. Для работы потребуется libopenblas.dll из дистрибутива OpenBLAS и еще три DLL из GCC. Общий расклад (данные для версии 6.3.0):

Размер Файл ---------------------------------- 75 264 libgcc_s_seh-1.dll 1 277 952 libgfortran-3.dll 42 587 753 libopenblas.dll 325 632 libquadmath-0.dll ---------------------------------- 44 266 601 байт

«Всего» 44 МБ – не так и страшно. ��

Как подключить библиотеку mkl в intel fortran

Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.10.2009

Репутация: нет
Всего: нет

Здравствуйте!
Мне тут уже несколько раз помогали. Решила обратиться с новой проблемой.
Для вычислительной задачи мне понадобилась математическая библиотека. Выбор пал на IMSL 7.0. Скачала на Торрентах (не сочтите за рекламу ), там многие отписывались, что установили библиотеку и все работает, поэтому полагаю, что исходники нормальные.

Итак, прописала путь к библиотеке в Tools -> Options . Compiler -> Libraries и Includes; прописала в Projects, в Additional Library Directories путь к папке lib с файлами; в Projects, в Additional Dependencies прописала список библиотек.

Но простая программулька:

дает следующую ошибку:

Код
1>LINK : fatal error LNK1104: cannot open file ‘mkl_intel_c.lib’

Как ни странно, этого файла нет ни в папке IMSL, ни в папке с Fortran’ом, то есть просто прописать путь к нему я не могу.
Подскажите, пожалуйста, зачем нужен этот файл mkl_intel_c.lib? Или может я неправильно подключаю библиотеку IMSL?

Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9

Привет, OlikFleur,
Насчет IMSL 7 точно не знаю, но в более ранних версиях IMSL, насколько помню, можно было сделать примерно так
1) сделать доступной директорию /include/ia32 или ia32_s (последнее для статической версии IMSL) — например, включить ее в список директорий, автоматически просматриваемых фортран-окружением на предмет включамых (заголовочных и пр.) файлов;
2) сделать доступной директорию /lib/ia32 или ia32_s (последнее для статической версии IMSL) — например, включить ее в список директорий, автоматически просматриваемых фортран-окружением на предмет библиотечных файлов;
3) добавить в фортран-исходники одну из cтрок:
include ‘link_f90_static.h’ — для использования статической версии IMSL
include ‘link_f90_static_smp.h’ — для использования статической версии + Intel MKL
include ‘link_f90_dll.h’ — для использования динамической версии IMSL
include ‘link_f90_static_smp.h’ — для использования динамической версии + Intel MKL

Данные .h-файлы просто содержат директивы автоматической линковки соответствующих библиотек.

Покажи, как выглядит файл ‘link_fnl_static.h’ , включаемый в твоем примере.

PS/ Gamma-функция (и ряд других спецфункций) включена в стандарт Фортран-2008 и должна поддерживаться последними версиями Intel Fortran (>=12) и gfortran.

Это сообщение отредактировал(а) FCM — 1.3.2011, 12:51

Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.10.2009

Репутация: нет
Всего: нет

Указанные пути я прописала. Только у меня хедеры для библиотеки имеют вид «link_fnl. «, а не «link_f90. «.

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

Вот, как выглядит файл ‘link_fnl_static.h’:

Код
!dec$objcomment lib:’imsl.lib’
!dec$objcomment lib:’imslsuperlu.lib’
!dec$objcomment lib:’imslhpc_l.lib’
!dec$objcomment lib:’imsllapack_vendor.lib’
!dec$objcomment lib:’imslblas_vendor.lib’
!dec$objcomment lib:’imsls_err.lib’
!dec$objcomment lib:’imslmpistub.lib’
!dec$objcomment lib:’mkl_intel_c.lib’
!dec$objcomment lib:’mkl_intel_thread.lib’
!dec$objcomment lib:’mkl_core.lib’
!dec$objcomment lib:’libiomp5md.lib’
!dec$objcomment lib:’lmgr.lib’
!dec$objcomment lib:’kernel32.lib’
!dec$objcomment lib:’user32.lib’
!dec$objcomment lib:’netapi32.lib’
!dec$objcomment lib:’advapi32.lib’
!dec$objcomment lib:’gdi32.lib’
!dec$objcomment lib:’comdlg32.lib’
!dec$objcomment lib:’comctl32.lib’
!dec$objcomment lib:’wsock32.lib’
!dec$objcomment lib:’libcrvs.lib’
!dec$objcomment lib:’libFNPload.lib’
!dec$objcomment lib:’libsb.lib’

Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9

Правильно ли я понимаю, что файла ‘mkl_intel_c.lib’ нет в той же директории, где расположен, например, файл ‘imsl.lib’.

Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.10.2009

Репутация: нет
Всего: нет

Именно!
К тому же поиск по компьютеру показал, что его нет в принципе. Поэтому и возник вопрос, что это за файл, так как компилятор и все прочее я ставила стандартное, значит, если он нужен, должен был установиться.

Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9

Попробуй (в качестве эксперимента) закомментировать директиву
!dec$objcomment lib:’mkl_intel_c.lib’

Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9

Хотя все-таки руками отцеплять эту библиотеку не лучшее решение
В Intel Fortran — помощи можно набрать в Указателе (index) IMSL и выбрать подпункт using from IDE.
Там действительно указан файл ‘link_fnl_static.h’ для случая использования статической версии IMSL.

А в подпункте ‘IMSL include file and library . ‘ указаны списки необходимых библиотек, среди которых для использования вместе с IMSL библиотеки Intel MKL предусмотрено подключение mkl_c.lib — Посмотри нет ли в директории с imsl.lib файла mkl_c.lib.

Это сообщение отредактировал(а) FCM — 1.3.2011, 19:03

Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.10.2009

Репутация: нет
Всего: нет

В итоге удалила (на комментарии компилятор ругался) следующие строки:

Код
!dec$objcomment lib:’mkl_intel_c.lib’
!dec$objcomment lib:’mkl_intel_thread.lib’
!dec$objcomment lib:’mkl_core.lib’

В итоге получила от компилятора:

Код
1>LINK : warning LNK4098: defaultlib ‘LIBCMT’ conflicts with use of other libs; use /NODEFAULTLIB:library
1>libFNPload.lib(ActPublicInterface.obj) : warning LNK4099: PDB ‘libfnpload-vc60.lib.pdb’ was not found with ‘C:\Program Files\VNI\imsl\fnl700\winin111i32\lib\libFNPload.lib’ or at ‘D:\Console1\Console1\debug\libfnpload-vc60.lib.pdb’; linking object as if no debug info
1>libFNPload.lib(FlexlmCICO.obj) : warning LNK4099: PDB ‘libfnpload-vc60.lib.pdb’ was not found with ‘C:\Program Files\VNI\imsl\fnl700\winin111i32\lib\libFNPload.lib’ or at ‘D:\Console1\Console1\debug\libfnpload-vc60.lib.pdb’; linking object as if no debug info
1>libFNPload.lib(FNPload.obj) : warning LNK4099: PDB ‘libfnpload-vc60.lib.pdb’ was not found with ‘C:\Program Files\VNI\imsl\fnl700\winin111i32\lib\libFNPload.lib’ or at ‘D:\Console1\Console1\debug\libfnpload-vc60.lib.pdb’; linking object as if no debug info

Но программа заработала и даже правильно посчитала требуемую гамма-функцию.

Может те три файла стоит просто докачать где-нибудь?

Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9

Предупреждения очень похожи на случай, когда проект и подключаемая библиотека собраны в разных вариантах — что-то в Release-сборке, а что-то в Debug-сборке.

Посмотри нет ли там рядом с imsl.lib библиотеки mkl_c.lib.

Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.10.2009

Репутация: нет
Всего: нет

Цитата(FCM @ 1.3.2011, 19:08)
Предупреждения очень похожи на случай, когда проект и подключаемая библиотека собраны в разных вариантах — что-то в Release-сборке, а что-то в Debug-сборке.

Нет, рядом нет. Такой файл есть в папке с собственно MKL.

Добавлено через 2 минуты и 58 секунд
Попробовала в Properties прописать еще путь к mkl_c.lib и добавила его в Additional Dependencies, но от warnings это не спасает.

Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9

Попробуй включить в заголовочный файл ‘link_fnl_static.h’ директиву его линковки

Это сообщение отредактировал(а) FCM — 1.3.2011, 19:31

Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.10.2009

Репутация: нет
Всего: нет

Ой! Ну все, конец рабочего дня сказывается.

Вернула все как было в хедере, но 1>LINK : fatal error LNK1104: cannot open file ‘mkl_intel_c.lib’

Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9

OlikFleur,
недостающий файл mkl_intel_c.lib’ должен быть в MKL-директории (по крайней мере так в официальной пробной версии Intel Fortran 12) — его туда можно «докачать».
Причем, я думаю, он поставляетмя именно с MKL (а не с IMSL), который по умолчанию поставляется с Intel Fortran.

Это сообщение отредактировал(а) FCM — 2.3.2011, 07:30

Профиль
Группа: Участник
Сообщений: 23
Регистрация: 23.10.2009

Репутация: нет
Всего: нет

Значит, стоит как минимум переставить MKL (с другого исходника, наверное уже).

Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: 8
Всего: 9

Цитата(OlikFleur @ 1.3.2011, 19:17 )
Попробовала в Properties прописать еще путь к mkl_c.lib и добавила его в Additional Dependencies, но от warnings это не спасает.

Насчет warnins — не исключено, что это связано с тем, что главный проект в одной сборке, а подключаемая библиотека в другой. Например, главный в Release-сборке, а библиотека в Debug — или наоборот.
(Debug версии используют библиотеку LIBCMTD, а Release — LIBCMT)

Возможно mkl_c.lib является эквивалентом или аналогом ‘mkl_intel_c.lib’ — в официальной пробной версии Intel Fortran 12 в MKL-директории есть mkl_intel_c.lib, но нет mkl_c.lib.

PS/ Слишком много путей и зависимостей в свойствах проекта прописывать не надо — должно быть достаточно видимости фортран-окружению директории с заголовочным файлом и директорий с IMSL-библиотекой (и с MKL — если по умолчанию компилятор ее не видит) . Остальное все сделают директивы !DECS OBJCOMMENT LIB: .

Это сообщение отредактировал(а) FCM — 2.3.2011, 12:24

Похожие публикации:

  1. Как называется настольная игра где нужно угадать персонажа по вопросам
  2. Как сделать кнопку неактивной c
  3. Какую музыку слушают программисты
  4. Что лучше sas или sata

Как подключить библиотеку mkl в intel fortran

khokku.ru

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

Одной из самых мощных и широко используемых библиотек, доступных в комплекте Intel Fortran, является библиотека Math Kernel Library (MKL). MKL предоставляет оптимизированный код для широкого спектра математических функций, включая линейную алгебру, анализ данных, статистику и другие виды вычислений. Она распространяется в виде динамической библиотеки, которую нужно подключить в процессе компиляции своей программы.

В этом пошаговом руководстве мы рассмотрим, как правильно подключить библиотеку MKL в проекте, созданном с использованием Intel Fortran. Мы описываем требуемые шаги для настройки среды разработки и настройке компилятора, чтобы обеспечить эффективное использование MKL в вашем проекте.

Как подключить библиотеку mkl в intel fortran

Библиотека MKL (Math Kernel Library) от Intel предоставляет оптимизированные математические функции для выполнения вычислительных задач на процессорах Intel. В этой статье мы рассмотрим пошаговое руководство по подключению библиотеки MKL в Intel Fortran.

    Установите Intel Fortran и библиотеку MKL на вашем компьютере.

Если у вас уже установлены Intel Fortran и MKL, вы можете перейти к следующему шагу. Если нет, скачайте и установите последние версии Intel Fortran Compiler и Intel MKL с официального сайта Intel.

Откройте Intel Fortran и выберите опцию «Создать новый проект». Задайте имя проекта и выберите пустой проект.

  • Нажмите правой кнопкой мыши на проекте и выберите «Свойства».
  • В разделе «Компоновщик» выберите «Входные файлы».
  • Добавьте путь к библиотеке MKL в поле «Путь к библиотекам».
  • Добавьте имя библиотеки MKL в поле «Имя библиотеки».

Откройте файл исходного кода вашего проекта и добавьте следующие директивы компилятора перед началом программы:

Теперь вы можете использовать функции из библиотеки MKL в своей программе. Пример использования функции BLAS:

real*8, dimension(100) :: x, y

integer :: n, incx, incy

n = 100

incx = 1

incy = 1

x = 1.0

y = 2.0

call daxpy(n, 2.0, x, incx, y, incy)

Это было пошаговое руководство по подключению библиотеки MKL в Intel Fortran. Теперь вы можете использовать оптимизированные математические функции MKL для улучшения производительности вашего приложения.

Шаг 1: Установка intel fortran и mkl на ваш компьютер

Прежде чем подключить библиотеку mkl в intel fortran, необходимо установить соответствующие компоненты на ваш компьютер. В этом разделе мы рассмотрим процесс установки intel fortran и mkl.

  1. Загрузите инсталлятор intel fortran: Посетите официальный веб-сайт Intel и найдите страницу загрузки intel fortran. Затем следуйте инструкциям для скачивания инсталлятора на ваш компьютер.
  2. Установите intel fortran: После скачивания инсталлятора запустите его и следуйте инструкциям мастера установки. Убедитесь, что выбраны все компоненты, необходимые для работы с intel fortran.
  3. Загрузите инсталлятор mkl: Посетите официальный веб-сайт Intel и найдите страницу загрузки mkl. Затем следуйте инструкциям для скачивания инсталлятора на ваш компьютер.
  4. Установите mkl: После скачивания инсталлятора запустите его и следуйте инструкциям мастера установки. Убедитесь, что выбраны все компоненты, необходимые для работы с mkl.

После завершения установки intel fortran и mkl на ваш компьютер вы будете готовы к следующему шагу — настройке подключения библиотеки mkl в intel fortran. В следующем разделе мы рассмотрим этот процесс подробнее.

Шаг 2: Создание нового проекта в Intel Fortran

После успешной установки Intel Fortran и библиотеки MKL, вам потребуется создать новый проект, в котором вы будете работать с этими инструментами. В этом разделе мы рассмотрим процесс создания нового проекта в Intel Fortran.

1. Откройте Intel Fortran и выберите пункт меню «Файл» -> «Новый проект».

2. В появившемся диалоговом окне выберите «Пустой проект» и нажмите «Далее».

3. В следующем окне выберите место сохранения вашего проекта и введите его имя. Нажмите «Далее».

4. В открывшемся окне выберите компилятор Intel Fortran и библиотеку MKL из списка доступных компонентов. Затем нажмите «Далее».

5. В следующем окне выберите тип проекта в зависимости от ваших потребностей и нажмите «Далее».

6. На последнем шаге вы можете настроить дополнительные параметры проекта, такие как пути к файлам и библиотекам. Вы можете оставить эти настройки по умолчанию или настроить их в соответствии со своими потребностями. Нажмите «Готово», чтобы создать проект.

Теперь у вас есть новый проект в Intel Fortran, готовый для работы с библиотекой MKL. Вы можете начинать разрабатывать свой код, используя возможности Intel Fortran и MKL для оптимизации своего приложения.

Шаг 3: Настройка проекта для использования библиотеки mkl

После успешной установки библиотеки Intel Math Kernel Library (mkl) на вашу систему, необходимо настроить ваш проект для использования этой библиотеки. В этом разделе мы рассмотрим этот процесс.

  1. Откройте ваш проект в среде разработки Intel Fortran (например, Intel Parallel Studio) или в любой другой среде разработки, которую вы используете.
  2. Добавьте путь к библиотеке mkl в настройки компилятора. Обычно это делается через меню «Project» или «Build Settings». Укажите путь к установленной библиотеке, например: /opt/intel/mkl.
  3. Укажите компилятору, что вы хотите использовать библиотеку mkl при компиляции и сборке вашего проекта. Для этого добавьте опцию компилятора -lmkl или -mkl в список опций компилятора.
  4. Теперь вы можете использовать функции и процедуры из библиотеки mkl в вашем коде. Для этого вам потребуется добавить соответствующие директивы препроцессора и вызвать необходимые функции или процедуры.

Настройку проекта для использования библиотеки mkl можно произвести вручную, указав необходимые пути и опции компилятора, или использовать готовые шаблоны проекта, предоставляемые Intel в рамках среды разработки. Рекомендуется использовать последний способ, так как это упростит настройку и обновление проекта.

После завершения настройки проекта вы можете компилировать и запускать вашу программу, и она будет использовать функционал, предоставляемый библиотекой mkl.

Шаг 4: Включение заголовочных файлов mkl в ваш проект

В этом шаге мы рассмотрим, как включить заголовочные файлы библиотеки mkl в ваш проект на Intel Fortran.

  1. Откройте ваш проект в среде разработки Intel Fortran.
  2. В меню проекта выберите пункт «Свойства проекта».
  3. В открывшемся окне выберите вкладку «Компоновка».
  4. Найдите раздел «Директории библиотек» и добавьте путь к папке, содержащей заголовочные файлы библиотеки mkl.
  5. Найдите раздел «Дополнительные заголовочные файлы». Добавьте путь к каждому заголовочному файлу, который необходимо включить в ваш проект.

Теперь, когда вы добавили пути к заголовочным файлам mkl, они будут доступны для использования в вашем проекте. Вы можете включить нужные файлы с помощью директивы #include в вашем коде.

Пример использования заголовочных файлов mkl:

#include 

#include

#include

int main()

// ваш код

return 0;

>

Теперь вы готовы использовать функциональность библиотеки mkl в вашем проекте на Intel Fortran. В следующем шаге мы рассмотрим, как связать ваш проект с библиотекой mkl.

Шаг 5: Линковка библиотеки mkl к вашему проекту

Для того чтобы использовать функциональность библиотеки mkl в вашем проекте на intel fortran, вы должны линковать библиотеку к вашему коду. Линковка — это процесс объединения различных объектных файлов и библиотек в один исполняемый файл. В данном случае, мы будем линковать библиотеку mkl к вашему проекту.

Для линковки библиотеки mkl к вашему проекту, вам нужно выполнить следующие шаги:

  1. Открыть ваш проект в среде разработки intel fortran.
  2. Перейти к настройкам проекта.
  3. Найти настройку «Линковка» или «Настройка линковки».
  4. Добавить путь к библиотеке mkl в настройках линковки.
  5. Добавить имя библиотеки mkl в настройках линковки.
  6. Сохранить настройки проекта и запустить компиляцию.

Перейдем к подробным инструкциям по каждому шагу.

1. Открыть ваш проект в среде разработки intel fortran.

Откройте ваш проект в среде разработки, такой как Intel Fortran Studio или Microsoft Visual Studio с установленным интегрированным средством разработки для intel fortran.

2. Перейти к настройкам проекта.

Найдите меню «Настройки» или «Параметры» и перейдите к настройкам проекта.

3. Найти настройку «Линковка» или «Настройка линковки».

В настройках проекта найдите раздел, связанный с настройками линковки. Обычно он называется «Линкер» или «Настройки линковки».

4. Добавить путь к библиотеке mkl в настройках линковки.

В настройках линковки найдите опцию для добавления пути к библиотекам. Добавьте путь к библиотеке mkl. Например, если библиотека находится в папке «C:\mkl\», то добавьте путь «C:\mkl\».

5. Добавить имя библиотеки mkl в настройках линковки.

В настройках линковки найдите опцию для добавления имени библиотеки. Добавьте имя библиотеки mkl. Например, если библиотека имеет имя «mkl_core», то добавьте имя «mkl_core».

6. Сохранить настройки проекта и запустить компиляцию.

Сохраните настройки проекта и запустите компиляцию. Во время компиляции, линкер автоматически свяжет ваш код с библиотекой mkl.

После успешной линковки, вы сможете использовать функции и процедуры из библиотеки mkl в вашем проекте на intel fortran.

Шаг 6: Написание кода с использованием функций из библиотеки mkl

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

Вот некоторые примеры использования функций из библиотеки mkl:

  1. BLAS (Basic Linear Algebra Subprograms) — это набор функций для выполнения базовых операций линейной алгебры. Примеры вычислительных функций BLAS в библиотеке mkl включают в себя функции для умножения матриц, вычисления скалярного произведения векторов и решения систем линейных уравнений.
  2. LAPACK (Linear Algebra PACKage) — это набор функций для выполнения более сложных операций линейной алгебры, таких как решение систем линейных уравнений с треугольной матрицей или вычисление собственных значений и собственных векторов.
  3. FFT (Fast Fourier Transform) — это функции для выполнения преобразования Фурье, которое является основой для решения многих задач, связанных с обработкой сигналов и изображений.
  4. Vector Mathematics — это функции для выполнения различных операций над векторами, таких как вычисление нормы вектора, вычисление скалярного произведения векторов и нахождение суммы и разности векторов.
  5. Matrix Mathematics — это функции для выполнения различных операций над матрицами, таких как вычисление определителя матрицы, вычисление обратной матрицы и решение систем линейных уравнений.

Приведенные выше примеры являются лишь небольшой частью функциональности, предоставляемой библиотекой mkl. Чтобы узнать больше о доступных функциях и их синтаксисе, вы можете обратиться к документации mkl или использовать различные руководства и примеры, доступные в Интернете.

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

Шаг 7: Компиляция и запуск проекта

После того как вы добавили библиотеку mkl в свой проект с использованием Intel Fortran, осталось только скомпилировать и запустить проект.

Для компиляции проекта вы можете использовать команду ifort, указав в ней все необходимые опции и исходные файлы. Например:

ifort -mkl main.f90 -o main.exe

Эта команда скомпилирует исходный файл main.f90, используя библиотеку mkl, и создаст исполняемый файл main.exe.

После компиляции вы можете запустить проект с помощью команды:

./main.exe

Теперь ваш проект должен успешно компилироваться и выполняться с подключенной библиотекой mkl.

Шаг 8: Отладка и оптимизация кода с использованием библиотеки mkl

После того, как вы успешно подключили библиотеку mkl к своему коду на языке Intel Fortran, вы можете начать отлаживать и оптимизировать свой код для достижения лучшей производительности.

Отладка:

С использованием библиотеки mkl можно использовать различные инструменты для отладки и профилирования вашего кода. Например, можно использовать инструменты Intel VTune Amplifier для профилирования кода и определения узких мест производительности. Инструменты VTune Amplifier позволяют вам увидеть, сколько времени занимает выполнение разных частей вашего кода, выявить узкие места и оптимизировать их.

Оптимизация:

С использованием библиотеки mkl вы можете провести различные оптимизации вашего кода, чтобы улучшить его производительность. Например, вы можете использовать функцию mkl_set_num_threads для установки количества потоков, которые будут использоваться при выполнении операций в библиотеке. Это позволяет распараллеливать выполнение операций и увеличивать производительность вашего кода.

Кроме того, вы можете использовать различные оптимизации компилятора для улучшения производительности вашего кода. Например, вы можете использовать оптимизацию уровня -O2 или -O3, чтобы увеличить производительность вашего кода с использованием библиотеки mkl. Также вы можете использовать оптимизации, специфичные для Intel Fortran, такие как -fast или -xHost, чтобы получить оптимальную производительность на процессорах Intel.

Наконец, вы можете использовать функции mkl для проведения различных оптимизаций ваших операций линейной алгебры, таких как генерация случайных чисел или выполнение матричных операций. Эти функции будут использовать многоядерную архитектуру и векторные инструкции, чтобы увеличить производительность вашего кода.

В целом, использование библиотеки mkl в вашем коде на языке Intel Fortran позволяет вам проводить отладку и оптимизацию для достижения максимальной производительности. Используйте инструменты и оптимизации, доступные в библиотеке, чтобы улучшить свой код и сделать его более эффективным.

Вопрос-ответ

Какую роль играет библиотека MKL в разработке на языке Intel Fortran?

Библиотека MKL является фундаментальным инструментом для разработки на языке Intel Fortran. Она содержит набор оптимизированных математических функций, которые позволяют эффективно работать с вычислениями, такими как линейная алгебра, случайные числа, оптимизация и другое. Подключение библиотеки MKL позволяет значительно повысить производительность приложений на языке Intel Fortran.

Что нужно сделать, чтобы подключить библиотеку MKL к проекту на языке Intel Fortran?

Для подключения библиотеки MKL к проекту на языке Intel Fortran нужно выполнить несколько шагов. Сначала необходимо установить MKL на компьютер. Затем нужно добавить путь к установленной библиотеке в настройки среды разработки. Далее нужно добавить команды компиляции и связывания с библиотекой MKL в файл сборки проекта. После этого можно использовать функции и процедуры из библиотеки MKL в своем проекте на языке Intel Fortran.

Какие преимущества дает использование библиотеки MKL в разработке на языке Intel Fortran?

Использование библиотеки MKL в разработке на языке Intel Fortran дает ряд преимуществ. Во-первых, она позволяет существенно ускорить вычисления за счет использования оптимизированных функций. Во-вторых, MKL предоставляет богатый набор математических функций, что упрощает разработку сложных алгоритмов. В-третьих, данная библиотека поддерживает многопоточность, что позволяет использовать все вычислительные ресурсы системы.

Русские Блоги

FORTRAN: VS2019+ONEAPI, как настроить и вызвать библиотеку MKL

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

В случае установки VS2019 и Oneapi Oneapi содержит библиотеку MKL и не нужно загружать еще один MKL.

Шаг 1. Прежде всего, создайте новый проект, открывайте «Инструменты» → «Параметры» → «Компиляторы и библиотеки Intel» → «IFX Intel Fortran» → «Компиляторы»

Добавьте путь: отредактируйте пути добавления для исполняемых файлов, включения и библиотек соответственно (вот справочная ссылка в конце этой статьи с 64 -битом (× 64), 32 -бит (× 86) Path!):

D:\intel oneAPI Base Toolkit,v.2022\mkl\2022.0.2\bin\intel64

D:\intel oneAPI Base Toolkit,v.2022\mkl\2022.0.2\include

D:\intel oneAPI Base Toolkit,v.2022\mkl\2022.0.2\lib\intel64

ПРИМЕЧАНИЕ. Папка MKL в этом пути встречается в папке вашей установки OneApi (здесь я был установлен на D -диске), как упоминалось выше, Oneapi содержит библиотеку MKL.

Шаг 2: Откройте «Проект» → «Свойства» → «Линкер» → «Вход» → «Дополнительные зависимости»

Добавьте следующий контент (здесь -64 -бит (платформа × 64), 32 -бит (платформа × 86). Добавьте контент, см. Справочную ссылку в конце этой статьи!):

mkl_intel_ilp64.lib mkl_intel_thread.lib mkl_core.lib libiomp5md.lib

Примечание. В дополнение к вышеуказанному содержимому, если вы хотите использовать LAPACK95, то вам нужно добавить еще один MKL_LAPACK95_LP64.LIB (32 -BIT, × 86 IS MKL_LAPACK95.LIB), если вы хотите использовать BLAS95, то вам нужно добавить Другое дополнительное дополнение mkl_blas95_lp64.lib (я не знаю, что это такое, слепо угадайте mkl_blas95.lib), каждый. Lib обращает внимание на разделение с пространством, а другие функции аналогичны дополнительным дополнениям.

Шаг 3: Откройте «Проект» → «Fortran» → «Библиотеки» → «Использовать библиотеку ядра Intel Math» → «Параллель (/qmkl: параллельно)»

Затем я добился больших достижений. Конечно, шаги 2 и шаг 3 используются для вашего текущего управления проектами (потому что вы установлены в проекте). Если вы используете VS2019 для создания других проектов, вам нужен шаг 3.

Тестовый код прикреплен ниже, а успешная операция означает успех конфигурации! Мне было лень писать сам, код пришел:

program main use lapack95 implicit none !geev real*8 :: a(4,4)=(/ 1.0,3.2,5.0,7.9,2.,4.3,6.,8.,9.4,10.,11.,12.,2.,5.,6.,9. /) Real*8 :: WR (4), WI (4), VR (4,4), VL (4,4)! WR и WI являются характерными значениями и виртуальными частями, соответственно, VR и VL являются правыми и левыми векторами, соответственно call geev(a,wr,wi,vl,vr) end program main

Другие ссылки на ссылки: Конфигурация Intel MKL в Visual Studio -juejin.cn https://juejin.cn/post/7018396753569251365

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *