Форум программистов, компьютерный форум, киберфорум
Lisp
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
Автор канал по Лиспу
 Аватар для Regrin1
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357

Умножение матриц в Common Lisp и Параллельные вычисления какие есть подходящие библиотеки

05.12.2021, 18:28. Показов 920. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Понадобилась библиотека для быстрого умножения матриц. Так-как вычислений предвидится много, плюс у меня бзик на скорость выполнения, очень хочется, чтобы расчёт шёл на всех ядрах процессора, а то и на видеокарте. Не подскажите ли чего? Да и вообще, параллельные вычисления -- крайне важная вещь, хорошо было бы освоить универсальный инструмент для них.
Заранее спасибо!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.12.2021, 18:28
Ответы с готовыми решениями:

Какие макросы стандартного пакета Common Lisp позволяют организовать циклические вычисления?
Какие макросы стандартного пакета Common Lisp позволяют организовать циклические вычисления?

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

Common Lisp, условные вычисления
Не могу никак разобраться с условиями в лиспе. Помогите реализовать: Заданы координаты вершин четырехугольника. Определить его тип:...

11
 Аватар для chessman2
161 / 141 / 10
Регистрация: 21.10.2012
Сообщений: 479
06.12.2021, 01:35
Библиотека NumPy предоставляет реализации вычислительных алгоритмов (в виде функций и операторов),
оптимизированные для работы с многомерными массивами. В результате любой алгоритм, который может быть выражен в виде последовательности операций над массивами (матрицами) и реализованный с использованием NumPy,
работает так же быстро, как эквивалентный код, выполняемый в MATLAB.

Изначально создана под python,
уже есть версия под lisp:

https://github.com/numcl/numcl
2
Автор канал по Лиспу
 Аватар для Regrin1
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
06.12.2021, 02:14  [ТС]
chessman2, Спасибо! А поддержка параллельных вычислений присутствует?
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
06.12.2021, 02:15
Быстро - надо на си писать.
Цитата Сообщение от Regrin1 Посмотреть сообщение
бзик на скорость выполнения
Си? Либо, действительно, нампай. Это язык в языке, потомок APL, написанный на си и вложенный в питон, очень быстрый.

Numcl написан не на си.

Есть интерфейсы к blas и lapack, ничем таким никогда не пользовался: https://www.cliki.net/linear%20algebra

Параллельные вычисления - lparallel. Особо не пользовался, пару раз юзал pmap в скриптах.
1
Автор канал по Лиспу
 Аватар для Regrin1
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
06.12.2021, 02:17  [ТС]
chessman2,
Тут вот он ещё ругается!
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[package numcl.exported]
Detected that SBCL's dynamic-space-size is 1073.7418MB, less than 2000MB.
Numcl requires a relatively large large heap. Retry with a larger heap if it failed.
.................
; Discarding the grounding result with 322 clauses; more than 300 clauses.
....
; Discarding the grounding result with 551 clauses; more than 300 clauses.
..
; Discarding the grounding result with 551 clauses; more than 300 clauses.
..
; Discarding the grounding result with 570 clauses; more than 300 clauses.
.
.
; Discarding the grounding result with 570 clauses; more than 300 clauses.
.................................................
...................................
; inlining (MATMUL ACC M).
; inlining (MATMUL (PROCESS-TREE (FIRST TREE)) (PROCESS-TREE (SECOND TREE)))..
; inlining (MATMUL (REC I K) (REC (1+ K) J))............
..................................................
............................................
Загружал через Квиклисп.
0
 Аватар для chessman2
161 / 141 / 10
Регистрация: 21.10.2012
Сообщений: 479
06.12.2021, 02:39
Цитата Сообщение от Regrin1 Посмотреть сообщение
поддержка параллельных вычислений
На уровне библиотеки
по ходу нет. Возможно компилятор что-то делает,
но я не в курсе.

Добавлено через 5 минут
Цитата Сообщение от Regrin1 Посмотреть сообщение
Тут вот он ещё ругается!
Точное сообщение получено - обнаружено, что Numcl требует относительно большой кучи не меньше 2000 МБ,
а размер динамического пространства SBCL составляет 1073,7418 МБ.
0
Автор канал по Лиспу
 Аватар для Regrin1
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
06.12.2021, 08:26  [ТС]
chessman2, А есть ли способ её увеличить? Памяти у меня хватит.
0
 Аватар для chessman2
161 / 141 / 10
Регистрация: 21.10.2012
Сообщений: 479
06.12.2021, 10:46
Цитата Сообщение от Regrin1 Посмотреть сообщение
А есть ли способ её увеличить?
Попробуйте запускать с опцией
Code
1
sbcl --dynamic-space-size 2048
1
Автор канал по Лиспу
 Аватар для Regrin1
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
06.12.2021, 15:22  [ТС]
chessman2, А как сделать это в slime?

Добавлено через 13 минут
Вроде разобрался, как подключиться к консоли.
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
06.12.2021, 18:14
Цитата Сообщение от chessman2 Посмотреть сообщение
На уровне библиотеки
по ходу нет.
Вот она: https://lparallel.org/
1
Автор канал по Лиспу
 Аватар для Regrin1
25 / 23 / 2
Регистрация: 10.08.2021
Сообщений: 357
06.12.2021, 22:54  [ТС]
helter, Тут чего-то от библиотеки стало увеличиваться время выполнения:
Lisp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
(ql:quickload 'lparallel)
 
(lparallel:defpun paral-test ()
  (lparallel:pmapcar 'expt
            (loop for i from 1 to 100000)
            (loop for i from 1 to 100000)))
(defun paral-test-2 ()
  (mapcar 'expt
      (loop for i from 1 to 100000)
          (loop for i from 1 to 100000)))
 
(defun paral-test-3 ()
  (lparallel:pmapcar 'expt
            (loop for i from 1 to 100000)
            (loop for i from 1 to 100000)))
Применяю такой тест:
Lisp
1
(progn (time (paral-test)) (time (paral-test-2)) (time (paral-test-3)))
Однопоточная функция всегда выигрывает!

Добавлено через 29 минут
Тут исправил часть ошибок, результат тот же:
Lisp
1
2
3
4
5
6
7
8
9
10
11
(lparallel:defpun paral-test (n)
  (lparallel:pmapcar #'(lambda (a) (expt 2 a))
            (loop for i from 1 to n collect i)))
 
(defun paral-test-2 (n)
  (mapcar #'(lambda (a) (expt 2 a))
          (loop for i from 1 to n collect i)))
 
(defun paral-test-3 (n)
  (lparallel:pmapcar #'(lambda (a) (expt 2 a))
            (loop for i from 1 to n collect i)))
Lisp
1
(progn (time (paral-test 200)) (time (paral-test-2 200)) (time (paral-test-3 200)) nil)
Результат аналогичен.
0
4528 / 3522 / 358
Регистрация: 12.03.2013
Сообщений: 6,038
07.12.2021, 13:42
Как-то связано с тем, что длинный тестовый список создаётся внутри теста. Если создать его заранее, у меня paral-test-2 будет самым медленным.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
07.12.2021, 13:42
Помогаю со студенческими работами здесь

Факториал алгоритмом вычисления деревом (common lisp)
Здравствуйте, мои хорошие. Напишите, пожалуйста, функцию, которая считает факториал алгоритмом вычисления деревом. Если знаете более...

Какие существуют библиотеки для ИИ на lisp?
Всем хорошего времени суток! Заинтересовала тема разработки искусственного интеллекта на lisp (предпочтительнее common lisp), ...

Параллельные вычисления средствами С++с использованием библиотеки MPI
Код обменивается сообщением в количестве процессов, указанных в файле *.pg #include <mpi.h> #include <stdio.h> ...

Книги или другой источник, где описана история версий Lisp и Common Lisp
Доброго времени суток.Такой вопрос,знаете какой-нибудь источник,где описана история версий Lisp и Common Lisp.Только не всякие...

Какие числовые предикаты есть в lisp'e?
есть ли в лиспе еще какие нибудь числовые предикаты, кроме zerop, plusp, minusp?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США. Нашел на реддите интересную статью под названием «Кто-нибудь знает, где получить бесплатный компьютер или. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru