2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 помогите подключить intel MKl
Сообщение30.04.2018, 00:09 


07/10/15

2400
Добрый день!
вот уже как неделю не могу подключить к своему проекту библиотеки intel MKL,
может быть кто то объяснит мне как их правильно настроить и какие именно заголовочные файлы и библиотеки нужно добывлять

компилятор ругается на неразрешенный внешний символ, чего я только не делал

PS: сейчас пытаюсь с intel MKL из intel parallel studio xe 2015

 Профиль  
                  
 
 Re: помогите подключить intel MKl
Сообщение30.04.2018, 11:35 
Заслуженный участник
Аватара пользователя


11/04/08
2737
Физтех
Расскажу на своем примере, как я ее подключал в проекте в Visual Studio, на Fortran.

Общая настройка для обращения к библиотеке MKL

1. Файл – Создать – Проект – Intel Visual Fortran – Main Program Code;
2. Платформа решения – Диспетчер конфигураций – Платформа – Создать – ОК. Выставить x64;
3. Свойства проекта – Fortran – Libraries – Use Math Kernel Library – Parallel.

Дополнительные настройки MKL

Компактный интерфейс F95 настраивается в два шага:

1. Свойства проекта – Linker – Input – mkl_blas95_lp64.lib mkl_lapack95_lp64.lib

2. В коде после program подключить библиотеки
Код:
use f95_precision
use blas95
use lapack95

 Профиль  
                  
 
 Re: помогите подключить intel MKl
Сообщение30.04.2018, 14:15 


07/10/15

2400
ShMaxG Большое спасибо за ответ, к сожалению я программирую на С

правильно ли я понимаю, файл blas95.mod - это что библиотека BLAS с интерфейсом FOTRAN?

 Профиль  
                  
 
 Re: помогите подключить intel MKl
Сообщение30.04.2018, 14:24 


04/10/17

153
Andrey_Kireew

Я ведь Вам дал уже ссылку: https://software.intel.com/en-us/articl ... ne-advisor
1.Select Intel® product: Intel(R)...
2.Select OS: Windows*
3.Select usage model of Intel® Xeon Phi™ Coprocessor: None
4.Select compiler:...
5.Select architecture: Intel(R) 64
6.Select dynamic or static linking: Static
7.Select interface layer: 64-bit integer
8.Select threading layer: OpenNP threading
9.Select OpenMP library: Intel(R) (libiomp5)

Ниже получите Use this link line: ... и Compiler options: ..., которые можете использовать в командной строке, не связываясь с оболочкой VS (на компе можно ставить одновременно различные версии VS: если нужной Вам версии на компе нет, то перед ее установкой сначала снесите intel parallel studio, а потом снова ее установите - она интегрируется во все VS, которые поддерживает).

 Профиль  
                  
 
 Re: помогите подключить intel MKl
Сообщение30.04.2018, 14:27 
Заслуженный участник
Аватара пользователя


11/04/08
2737
Физтех
Andrey_Kireew в сообщении #1308750 писал(а):
правильно ли я понимаю, файл blas95.mod - это что библиотека BLAS с интерфейсом FOTRAN?
Этого я не знаю... На самом деле, у меня тоже были проблемы с этим внешним символом, но они разрешились после того, как я выставил x64 в качестве платформы.

 Профиль  
                  
 
 Re: помогите подключить intel MKl
Сообщение30.04.2018, 18:16 


07/10/15

2400
as73251 приношу извинения, я просто сразу не понял что с этим всем делать,
но потом догадался прописать все .lib из Link Line Advisor прямо в шапке, вот так

  1. #include "mkl_lapack.h" 
  2. #pragma comment(lib,"mkl_lapack95_ilp64.lib") 
  3. #pragma comment(lib,"mkl_intel_ilp64.lib"); 
  4. #pragma comment(lib,"libiomp5md.lib"); 
  5. #pragma comment(lib,"mkl_core.lib"); 
  6. #pragma comment(lib,"mkl_intel_thread.lib"); 


всё скомпилировалось без ошибок,
только функции не работают - немного разобравшись обнаружил - после первого вызова dsyev (чтобы определить рабочую область) возвращает не понять что, если попытаться прочитать значения - прога зависает, в dsyer удалось прочитать wkopt - выдаёт нереально большое число для маленькой матрицы. Ну и дальше, соответственно ничего не работает ...

 Профиль  
                  
 
 Re: помогите подключить intel MKl
Сообщение01.05.2018, 04:04 


07/10/15

2400
Нашел ошибку в описании функции dsyevr https://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_lapack_examples/dsyevr_ex.c.htm
там размер переменной isuppz равен размеру матрицы N. Вот здесь http://www.netlib.org/lapack/explore-html/d5/de7/a18562_gaeed8a131adf56eaa2a9e5b1e0cce5718.html сказано,что этот массив должен быть в 2 раза больше числа собственных чисел, т. е. 2N. Вот память и переполнялась - всё зависало. После увеличения размеров isuppz всё заработало.

PS: только радости от этого мало, скорость и вправду увеличилась, но всего на 10% от того что было.

 Профиль  
                  
 
 Re: помогите подключить intel MKl
Сообщение01.05.2018, 12:32 


07/10/15

2400
Уважаемый as73251 извиняюсь конечно за назойливость, но не могли бы Вы ответить на пару вопросов, чтобы подытожить результаты:
1. Правильно ли я установил MKL (из всего пакета я устанавливал только эту библиотеку, после установки запустил .bat файл, как написано в инструкции, как я понял для настройки компилятора), вроде как всё прошло успешно, но точно не уверен, вот результат:
Изображение
2. Правильно ли я понимаю, что MKL оптимизирует программу под конкретное железо и на другом компе программа может работать даже хуже чем раньше? Я попробовал запустить на другом, и вместо 10% прироста, получил 10% падение производительности.
3. Правильно ли я понимаю, что судя по полученным результатам, в данном случае никакая оптимизация ничего существенного не даёт и уже точно не даст?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 8 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group