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
2741
Физтех
Расскажу на своем примере, как я ее подключал в проекте в 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
2741
Физтех
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, Супермодераторы



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

Сейчас этот форум просматривают: Dmitriy40


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

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