2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2, 3, 4, 5  След.
 
 Собрать lapack.dll и не застрелиться
Сообщение18.11.2022, 20:01 


31/08/22
183
Всем доброго здоровья и хорошего настроения.
Пишу алгоритм где используются функции lapack'а. Собственно нужен сам lapack.
Подскажите пожалуйста как максимально просто собрать lapack.dll?
Сборка, желательно, максимально с графической мордой.
До этого дня как то обходился без CMake'а. Но по другому похоже никак не собрать этот dll.
Что пробовал
1 Пробовал под C# искать NuGet пакет который бы давал нативный интерфейс lapack, безуспешно.
2 Пробовал под Python устанавливать модули в составе которых бы был lapack.dll. Ну какие то нашел, но я понятия не имею что это за сборка (можно конечно выяснить...) но это какой то кривой путь, хочется управлять процессом создания и получать понятные сборки. Некатит.
3 Почитал про CMake, установил. Установил MinGW, прописал пути, скачал проект lapack с сайта разрабов, пробую собирать CMake'ом, ничего не получается. Ругаетя что нет компилятора фортрана и все. При этом они установлены и пути в переменные среды прописаны.
4 Удалил MinGW, поставил Cygwin, выбрал все gcc компиляторы, все mingw компиляторы, прописал пути в переменные среды. Продвинулся на шаг дальше.
Теперь выдает:

(Оффтоп)

Код:
CMake Warning (dev) in CMakeLists.txt:
  No project() command is present.  The top-level CMakeLists.txt file must
  contain a literal, direct call to the project() command.  Add a line of
  code such as

    project(ProjectName)

  near the top of the file, but after cmake_minimum_required().

  CMake is pretending there is a "project(Project)" command on the first
  line.
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles".  CMAKE_MAKE_PROGRAM is not set.  You probably need to select a different build tool.
CMake Warning (dev) in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.25)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".
This warning is for project developers.  Use -Wno-dev to suppress it.

Configuring incomplete, errors occurred!
See also "C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/CMakeOutput.log".

Данное ПО использую впервые.
Подскажите, что ему нужно окоянному? Как это работает?
Я хочу просто собрать dll.

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение18.11.2022, 20:50 
Заслуженный участник


18/09/21
1756
Schrodinger's cat в сообщении #1570388 писал(а):
4 Удалил MinGW, поставил Cygwin, выбрал все gcc компиляторы, все mingw компиляторы, прописал пути в переменные среды. Продвинулся на шаг дальше.
Следующий шаг - установил Linux (например Ubuntu, например в виртупльную машину) и там всё собрал.

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение18.11.2022, 22:03 
Заслуженный участник


14/10/14
1220
zykov в сообщении #1570390 писал(а):
Подскажите, что ему нужно окоянному?
Я ничего не знаю про cmake, но жалуется оно на то, что не установлена переменная среды CMAKE_MAKE_PROGRAM.

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение18.11.2022, 22:06 
Заслуженный участник
Аватара пользователя


03/06/08
2320
МО
Вроде бы LAPACK есть в scipy.
Может, проще дергать ее оттуда?
zykov
А в линуксе можно dllки собирать?

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение18.11.2022, 22:34 


27/08/14
207
lapack.zip
Собрал в linux с помощью mxe и взял все получившиеся dll. Скорее всего они не все нужны, но так точно должно работать.

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение19.11.2022, 12:16 


31/08/22
183
zykov в сообщении #1570390 писал(а):
Следующий шаг - установил Linux (например Ubuntu, например в виртупльную машину) и там всё собрал.

:lol:
Или это не шутка? Под Винду простых путей нет?

Slav-27 в сообщении #1570397 писал(а):
но жалуется оно на то, что не установлена переменная среды CMAKE_MAKE_PROGRAM

Это то понятно. Непонятно что с этим делать.

пианист в сообщении #1570398 писал(а):
Вроде бы LAPACK есть в scipy

Да, смотрел. Но там нет нужных функций - SCAL, AXPY, HERK, POSV, GEMM, NRM2. По крайней мере в нотации Lapack я их не нашел.

Progger
Спасибо за сборку. Хотелось бы еще самому научиться собирать.
Кроме предложения поставить линукс в виртуальную машину предложения попроще, для винды, есть?
Может кто знает другие способы как собрать?

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение19.11.2022, 12:21 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
пианист в сообщении #1570398 писал(а):
А в линуксе можно dllки собирать?
Запросто.
Schrodinger's cat в сообщении #1570447 писал(а):
Или это не шутка? Под Винду простых путей нет?
Никакая не шутка. И будет проще, чем под Виндой. Сама установка пингвина никаких трудностей не вызывает и много времени не займёт.

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение19.11.2022, 15:12 


12/07/21
108
Под win10: wsl2, Ubuntu, one api
Скорость Intel MKL, в зависимости от задач, может возрасти раз в сто по сравнению с кодом, сгенерированным из исходников LAPACK, хотя в части линейной алгебры Intel MKL не более, чем грамотная имплементация LAPACK.

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение19.11.2022, 15:51 
Заслуженный участник


18/09/21
1756
Во-первых, можно и всё остальное в линуксе собрать и там запускать.
Во-вторых, при желании можно и виндовский бинарник собрать.

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение19.11.2022, 16:17 
Заслуженный участник


14/10/14
1220
Schrodinger's cat в сообщении #1570447 писал(а):
Это то понятно. Непонятно что с этим делать.
Лично я бы попробовал её установить: найти, где лежит make (называется make.exe или что-то в этом роде), и написать туда его полный путь.

Вот похожий вопрос и куча рецептов: https://stackoverflow.com/questions/6141608/cmake-make-program-not-found.

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение19.11.2022, 16:26 
Заслуженный участник


18/09/21
1756
Ещё вариант, использовать Octave (открытый аналог Matlab).
https://octave.org/download

Они его собирают и под линукс, и под виндос.
Вот в установке под виндос у меня есть библиотека "C:\Octave\Octave-5.2.0.0\mingw64\bin\liblapack.dll".
Если ещё заголовки нужны, то там можно скачать и исходники Octave.
https://mirror.tochlab.net/pub/gnu/octave/windows/

PS: Ещё там есть "C:\Octave\Octave-5.2.0.0\mingw64\bin\libarpack-2.dll"
Когда-то давно нужен был lapack и этот вариант arpack тогда оказался лучше (уже не помню чем).

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение19.11.2022, 16:36 


12/07/21
108
Зачем собирать что-то второсортное, если уже есть готовые высокоскоростные профессиональные dll (откуда их взять, я уже указал). Хотелось бы услышать по этому поводу TC.

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение19.11.2022, 21:31 
Аватара пользователя


11/06/12
10390
стихия.вздох.мюсли
zykov в сообщении #1570461 писал(а):
Во-первых, можно и всё остальное в линуксе собрать и там запускать.
Оно, конечно, можно, но одно дело советовать сделать в Linux что-то, а другое дело — советовать вообще взять и перейти туда, забыв Винду как страшный сон. Не стоит так торопить ТС.
traffic_lights в сообщении #1570468 писал(а):
откуда их взять, я уже указал
Где?

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение19.11.2022, 22:11 


31/08/22
183
Slav-27 в сообщении #1570464 писал(а):
Лично я бы попробовал её установить: найти, где лежит make

В общем то про это я и спрашивал, думал знающий человек подскажет что и куда правильно писать...
И на стековерфлоу я смотрел, в том числе и по указанной ссылке.
Ну как бы то ни было попытки установить пути к make через команду SET не дали никакого результата.
Потом я таки допер прописать это прямо в CMake до себя самого :D и о чудо, оно пошло дальше и распознало похоже все остальные переменные скрипта. Переустановил компиляторы, попробовал оставить только х64, и теперь даже пишет, что компиляторы опознаны!
Но все равно выдал следующий бред:

(Оффтоп)

Код:
CMake Warning (dev) in CMakeLists.txt:
  No project() command is present.  The top-level CMakeLists.txt file must
  contain a literal, direct call to the project() command.  Add a line of
  code such as

    project(ProjectName)

  near the top of the file, but after cmake_minimum_required().

  CMake is pretending there is a "project(Project)" command on the first
  line.
This warning is for project developers.  Use -Wno-dev to suppress it.

The C compiler identification is GNU 11.3.0
CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:1 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:1

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-gcc.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:24 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:24

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-ar.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:25 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:25

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-gcc-ar.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:26 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:26

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-ranlib.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:27 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:27

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-gcc-ranlib.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:28 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:28

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-ld.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

The CXX compiler identification is GNU 11.3.0
CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:1 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:1

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-g++.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:25 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:25

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-ar.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:26 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:26

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-gcc-ar.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:27 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:27

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-ranlib.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:28 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:28

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-gcc-ranlib.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

CMake Warning (dev) at bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:29 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCXXCompiler.cmake:29

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-ld.exe

  Invalid escape sequence \P

  Policy CMP0010 is not set: Bad variable reference syntax is an error.  Run
  "cmake --help-policy CMP0010" for policy details.  Use the cmake_policy
  command to set the policy and suppress this warning.
Call Stack (most recent call first):
  CMakeLists.txt
This warning is for project developers.  Use -Wno-dev to suppress it.

Check for working C compiler: D:\Program Files\cygwin\bin\x86_64-w64-mingw32-gcc.exe
CMake Error at C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:1 (set):
  Syntax error in cmake code at

    C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/3.25.0/CMakeCCompiler.cmake:1

  when parsing string

    D:\Program Files\cygwin\bin\x86_64-w64-mingw32-gcc.exe

  Invalid character escape '\P'.
Call Stack (most recent call first):
  C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/CMakeScratch/TryCompile-k1wn7f/CMakeLists.txt:4 (project)


CMake Error: CMAKE_C_COMPILER not set, after EnableLanguage
CMake Error at D:/Program Files/CMake/share/cmake-3.25/Modules/CMakeTestCCompiler.cmake:56 (try_compile):
  Failed to configure test project build system.
Call Stack (most recent call first):
  CMakeLists.txt


CMake Warning (dev) in CMakeLists.txt:
  No cmake_minimum_required command is present.  A line of code such as

    cmake_minimum_required(VERSION 3.25)

  should be added at the top of the file.  The version specified may be lower
  if you wish to support older CMake versions for this project.  For more
  information run "cmake --help-policy CMP0000".
This warning is for project developers.  Use -Wno-dev to suppress it.

Configuring incomplete, errors occurred!
See also "C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/CMakeOutput.log".
See also "C:/Users/Sergey/Downloads/lapack-3.11.0/LAPACKE/bin/CMakeFiles/CMakeError.log".


В общем я наелся и готов послать этот CMake далеко и надолго :D

zykov Это конечно вариант, оставим это в качестве запасного, спасибо за наводку.

traffic_lights
Про Интел МКЛ не совсем понял, Вы советуете взять его из open api интела?
Про то, что существует такая прекрасная либа я знаю. Использую в основном на C# в MathNET в виде провайдера. Ускоряет очень хорошо.
Но нет, хочется нативный lapack.
Спасибо за наводку.

Aritaborian в сообщении #1570496 писал(а):
Оно, конечно, можно, но одно дело советовать сделать в Linux что-то, а другое дело — советовать вообще взять и перейти туда, забыв Винду как страшный сон. Не стоит так торопить ТС.

Как то давно пробовал перейти на линукс. Но проблемы с драйверами тогда заставили отказать от этой идеи. Да и сейчас это слишком радикально.

traffic_lights
Почитал, посмотрел про wsl2, штука заманчивая, занятная.
И в целом мне эта идея нравится. Если ставить то что? Ubuntu последнюю? Я так понял там можно выбирать.
Aritaborian и другие Гуру, Вы согласны с этой идеей? Или Вы имели в виду отдельно ставить, полноценную ОС?
Когда поставлю как проще всего там собрать?

 Профиль  
                  
 
 Re: Собрать lapack.dll и не застрелиться
Сообщение19.11.2022, 22:14 


12/07/21
108
Aritaborian в сообщении #1570496 писал(а):
Где?

one api

P.S.
результат, который опубликован здесь: post1568867.html#p1568867
как раз и получен в системе post1570458.html#p1570458

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 68 ]  На страницу 1, 2, 3, 4, 5  След.

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



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

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


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

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