LINUX.ORG.RU

Lisp и вычисления


0

4

Когда коту нечего делать В общем хотелось бы попробовать пописать что нибудь на этом языке. Т.к. для меня лучший способ научиться, это попробовать написать то что мне надо, то хотелось бы спросить есть ли какие нибудь библиотеки на Лисп для численных расчетов. Нужно не много - матрицы оборачивать (желательно разряженные) и интегрировать, ну и строить простейшие графики y=f(x). В принципе на cliki есть подобные библиотеки, но я больше чем уверен что половина из них уже дохлые, ну и документация ко многим отсутствует в принципе. Хотелось бы услышать личные мнения. Есть ли что нибудь на подобии scipy на питоне.

★★★★
Ответ на: комментарий от mv

>Где 66 операций.
Вообще-то, несмотря на «неудобства использования векторных вычислений» (c) разработчику обычно такая информация не требуется --- этот граф восстанавливает сам компилятор по написанным на ЯВУ формулкам.
Но «совершенно случайно» я его основные параметры знаю, в частности, высота ~12 операций, минимальная ширина 3.

Если операции в графе распараллелены слабо, то эффективность, соответственно, снижается.

Вы вроде взялись хвалить FPGA в вычислениях, а не ругать его. а то «two two-bit additions or two three-bit additions» на ALM за такт --- это совсем не то, что нам надо.
Даже если этих ALM-ов и мульен --- ничего путного из них в наших вычислениях сделать нельзя.
Сколько там ALM-ов уходит на стандартный 64x64 бит умножитель с темпом операция за такт?

Легко: сложение векторов :)

это шутка?
мне в этой задаче хватит и трех РОН-ов

VLev
()
Ответ на: комментарий от mv

> Алгоритма-то нет, какие оценки могут быть? В pdf'ке rартинки с пирамидами латентности «от регистров до WAN» красивые, конечно, но по части самого алгоритма малоинформативны.

Слайд 5 - связь м-ду данными в 3D случ, слайд 6 - в 1D случ, слайд 7 - идея LRnLA.

Наши цифры говорят о том, что по нашему направлению на ПЛИС мало того, что можно сделать решение с детерминированной латентностью, так ещё только на ПЛИС можно сделать решение, которое работает на полностью загруженном канале данных (10 гбит) и при этом не захлёбывается.

Простите, но это не я приехал к Вам в Бостон и бегаю следом с криками «LRnLA и CPU решать все ВАШИ проблемы!». Я про эффективность решения ВАШИХ задач ни слова нигде не сказал. Напротив, это ВЫ утверждаете, что ПЛИС способны решить НАШИ задачи куда эффективнее, чем это сделано на наст момент. Так что аппеляции к успехам в ВАШЕМ направлении неуместны.

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

AIv ★★★★★
()
Ответ на: комментарий от mv

>По сравнению со штатным набором инструкций.
Если речь об ISA, то SSE/AVX куда более штатные нынче, чем x87.
Если же речь об gcc, то и те и другие инструкции там выглядят совершенно одинаково, ибо код один.
А набор инструкций определяется опцией -march.

VLev
()
Ответ на: комментарий от VLev

>> соотношение объема входных данных к объему выходных - 36/8?

не угадали. ;)

Ок. А сколько?

Забираю свой комментарий о правильном вопросе.

Но сам вопрос остается.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Вообще то имеет смысл говорить о соотношении числа операций к трафику данных.

AIv ★★★★★
()
Ответ на: комментарий от tailgunner

> Ок. А сколько?
AIv уже писал.

Но сам вопрос остается.

Чтобы на него ответить --- сначала надо понять что именно Вы спрашиваете. То есть что именно понимаете под входными и выходными данными.
Часто используют три разных интерпретации входных/выходных данных:
1. В теории алгоритмов --- сама программа и ее аргументы/возвращаемый результат
2. В практике вычислений --- то, что проходит через подсистему ввода-вывода компьютера на чтение/запись
3. В программировании --- то, что входными/выходными данными называет программист, написавший конкретный модуль с тем или иным интерфейсом.

VLev
()
Ответ на: комментарий от tailgunner

>2, конечно.
При тех параметрах, что написал AIv --- 1.3Тбайт/1.3Тбайт. Но он там снова занизил реальные циферки, которые соответствуют ~суткам машинного времени на core2quad. Там шагов не 2048, а 6400.
Соответственно, 4Тбайт/4Тбайт.

VLev
()
Ответ на: комментарий от VLev

Вообще-то, несмотря на «неудобства использования векторных вычислений» (c) разработчику обычно такая информация не требуется --- этот граф восстанавливает сам компилятор по написанным на ЯВУ формулкам.

Синтезируемая часть vhdl - не ЯВУ.

Вы вроде взялись хвалить FPGA в вычислениях, а не ругать его.

А я не ругаю.

а то «two two-bit additions or two three-bit additions» на ALM за такт --- это совсем не то, что нам надо. Даже если этих ALM-ов и мульен --- ничего путного из них в наших вычислениях сделать нельзя.

Сколько там ALM-ов уходит на стандартный 64x64 бит умножитель с темпом операция за такт?

Без понятия. Сколько в x86 параллельно работающих 64x64 умножителей?

это шутка? мне в этой задаче хватит и трех РОН-ов

Сколько будет эта задача исполняться на трёх РОН при размере вектора больше 1, даже с учётом спекуляций?

mv ★★★★★
()
Ответ на: комментарий от AIv

Слайд 5 - связь м-ду данными в 3D случ, слайд 6 - в 1D случ, слайд 7 - идея LRnLA.

Операций там нет. По словам VLev, высота графа - 12, поэтому на ПЛИС будет 12 тактов, если ничего не улучшать. На 250 МГц это 48 наносекунд.

Простите, но это не я приехал к Вам в Бостон и бегаю следом с криками «LRnLA и CPU решать все ВАШИ проблемы!».

Ох, извините, что я на ваш ЛОР без стука зашёл.

Я про эффективность решения ВАШИХ задач ни слова нигде не сказал. Напротив, это ВЫ утверждаете, что ПЛИС способны решить НАШИ задачи куда эффективнее, чем это сделано на наст момент. Так что аппеляции к успехам в ВАШЕМ направлении неуместны.

Потому что у меня карт на руках больше: я кроме «обычного» программирования последнее время ещё и вижу, как на ПЛИС задачи решаются. Вы же в отсутствии такой, скажем, осведомлённости, рогами с землю упёрлись и ничего слышать не хотите. Специализированное решение всегда лучше общего.

mv ★★★★★
()
Ответ на: комментарий от mv

>высота графа - 12
не графа, а участка графа.
Высота всего графа --- 76800 операций
А ширина всего графа --- 6000000000 операций.
теперь можете считать.

VLev
()
Ответ на: комментарий от mv

>Без понятия
Жаль. Одного я понять не могу --- как не зная «бюджета» базовых операций, Вы пытаетесь советовать FPGA для вычислительных задач?
Или умножение --- это тоже лишняя операций для вычислений?

Сколько в x86 параллельно работающих 64x64 умножителей?

Я уже писал: в одном core i5 16 штук.

В том самом 2U узле за $12K 96 штук.

Сколько будет эта задача исполняться на трёх РОН при размере вектора больше 1, даже с учётом спекуляций?

Если вектора в памяти, то на core i5 эта задача будет исполняться со скоростью ~10Гбайт/сек. Независимо от числа задействованных РОН-ов.

VLev
()
Ответ на: комментарий от mv

> 6000000000 операций на один элемент из 1024x1024x1024? ;)
У Вас своеобразный юмор.
Вы не понимаете чем участок граф операций отличается от всего графа?
Или Вы решили, что все элементы независимы?

VLev
()
Ответ на: комментарий от VLev

Жаль. Одного я понять не могу --- как не зная «бюджета» базовых операций, Вы пытаетесь советовать FPGA для вычислительных задач?

Руководствуясь тем, что почти 400к ALM хватит на очень много 64x64 умножителей.

Я уже писал: в одном core i5 16 штук. В том самом 2U узле за $12K 96 штук.

По сравнению даже с FPGA начального уровня сущие копейки, то есть.

Если вектора в памяти, то на core i5 эта задача будет исполняться со скоростью ~10Гбайт/сек. Независимо от числа задействованных РОН-ов.

У DDR3 пиковая пропускная способность всего 17 Гб/с. Как обеспечится обработка потока ~10Гб/с?

mv ★★★★★
()
Ответ на: комментарий от mv

>Руководствуясь тем, что почти 400к ALM хватит на очень много 64x64 умножителей.
1. сколько?
2. приведите схему одного.

По сравнению даже с FPGA начального уровня сущие копейки, то есть.

Жду доказательств.

У DDR3 пиковая пропускная способность всего 17 Гб/с. Как обеспечится обработка потока ~10Гб/с?

накладные расходы. 17 простыми методами не достичь.
Но я так вижу, Вы сейчас собираетесь привести пример решения данной задачи на FPGA с гораздо большей скоростью. Ждем.

VLev
()
Ответ на: комментарий от VLev

Вы не понимаете чем участок граф операций отличается от всего графа?

Очевидно, что мне весь граф не интересен.

Или Вы решили, что все элементы независимы?

Нет, но выше проскакивала цифра в 66 операций на элемент. Я поинтересовался степенью связанности операций.

mv ★★★★★
()
Ответ на: комментарий от mv

>Я поинтересовался степенью связанности операций.
связность между соседними элементами ровно такая же, как и внутри элемента.
Элементы выделяются только для удобства понимания/программирования и проч.
Граф можно делить на элементы и по-другому. Это, собственно, и используется в алгоритме.

VLev
()
Ответ на: комментарий от mv

> Потому что у меня карт на руках больше: я кроме «обычного» программирования последнее время ещё и вижу, как на ПЛИС задачи решаются.

Вот-вот. Вы кроме вариантов обычного программирования CPU других вариантов программирования CPU не видите.

AIv ★★★★★
()
Ответ на: комментарий от mv

> Специализированное решение всегда лучше общего.

Опять философствуете вместо того что бы цифру привести. Всегда лучше то решение, к-е работает быстрее при прочих равных. Оценка для ПЛИС будет или нет? А то я могу оценить на ваших же словах - 250МГц, т.е. частота в 10ть раз ниже * 4 ядра... итого, что бы Ваша ПЛИС могла считать с тем же темпом, что и CPU, на ней надо будет реализовать 40 вычислителей способных за такт делать одно сложение или умножение с плав. точкой + дост памяти и дисковая подсистема с дост. ПСП (у нас 6 хардов на узел). Это я не учел SSE (еще *4) и отдельное выполнение сложений (*2). Вопрос - скока такой девайс будет стоить? Чего то у меня сильные подозрения что куда побольше 1000$...

Вы же в отсутствии такой, скажем, осведомлённости, рогами с землю упёрлись и ничего слышать не хотите.

Вам уже вторые сутки пытаются объяснить, что для ЭТИХ задач ПЛИС проигрывает. Вы же, в силу видимо слишком широкого кругозора, даже граф представить не в состоянии, про остальное не говорю. Уже во втором треде подряд Вы демонстрируете удивительную последовательность в своих заблуждениях и категорическое неумение признавать свои ошибки. Для человека Вашего уровня - весьма странно...

AIv ★★★★★
()
Ответ на: комментарий от AIv

Опять философствуете вместо того что бы цифру привести.

Какую именно цифру мне требуется назвать?

итого, что бы Ваша ПЛИС могла считать с тем же темпом, что и CPU, на ней надо будет реализовать 40 вычислителей способных за такт делать одно сложение или умножение с плав. точкой

Да хоть 4000, какие у ПЛИС с этим проблемы? В 4-й Стратикс несколько 32-битных процессоров NIOS2 с кучей обвеса влазит (mac, sgdma, таймеры, etc).

Интел, кстати, у одной конторы покупает шкафы, напичканные ПЛИС, и на этих шкафах моделирует процессоры, которые после отладки идут в кремень.

Вам уже вторые сутки пытаются объяснить, что для ЭТИХ задач ПЛИС проигрывает.

Для каких для ЭТИХ? Для крайне легко параллелящихся алгоритмов (прочитал в по ссылке)? ПЛИС проигрывает на своём поле?

Уже во втором треде подряд Вы демонстрируете удивительную последовательность в своих заблуждениях и категорическое неумение признавать свои ошибки.

OMG, человек, видевший ПЛИС в лучшем случае в статье на википедии, убеждает меня в заблуждениях на счёт ПЛИС. Куда мир катится...

mv ★★★★★
()
Ответ на: комментарий от mv

> Какую именно цифру мне требуется назвать?

Задача - моделирование синт сейсмограмм.

Производительность полученная на CPU озвучена, граф озвучен, размер задачи озвучен. Назовите пожалуйста для данной задачи производительность ПЛИС аналогичной стоимости, и/или стоимость решения с ПЛИС дающее аналогичную производительность.

Интел, кстати, у одной конторы покупает шкафы, напичканные ПЛИС, и на этих шкафах моделирует процессоры, которые после отладки идут в кремень.

какое это имеет отношение к числ моделированию???

Для каких для ЭТИХ? Для крайне легко параллелящихся алгоритмов (прочитал в по ссылке)? ПЛИС проигрывает на своём поле?

Для задач, где важно тупое число оп в секунду.

OMG, человек, видевший ПЛИС в лучшем случае в статье на википедии, убеждает меня в заблуждениях на счёт ПЛИС. Куда мир катится...

Человек, ни разу не занимавшийся числ моделированием убеждает меня в том, что перейдя на ПЛСИ я получу невиданный профит, при этом величину профита он отказывается озвучивать несмотря на многочисленные просьбы? Это Вы меня убеждаете в том, что ПЛИС способны считать сейсмику быстрей чем CPU. Ну так убедите! Оценка где?

AIv ★★★★★
()
Ответ на: комментарий от mv

> В 4-й Стратикс несколько 32-битных процессоров NIOS2 с кучей обвеса влазит (mac, sgdma, таймеры, etc).

А 10ть сore2quad туда влезет? По 4ре ядра в каждом? Можно без обвеса. Этот проц сейчас стоит (антиквариат уже) AMD Phenom(tm) 9850 Quad-Core Processor 300$. Если влезет - оно смогет считать с тем же темпом, что и оригинальный проц.

AIv ★★★★★
()
Ответ на: комментарий от VLev

Коммент просмотрел...

1. сколько?

ХЗ, я не железячник. Но логики туда очень много влезает.

2. приведите схему одного.

Какую схему? vhdl из стандартной библиотеки?

Жду доказательств.

Ждите. Если бы было интересно, давно на сайт Alter'ы или Xilinx'а сходили и почитали, где и для чего их продукция используются.

Но я так вижу, Вы сейчас собираетесь привести пример решения данной задачи на FPGA с гораздо большей скоростью. Ждем.

Ваш алгоритм досконально не описывается, поэтому адекватно оценить затраты невозможно. Если он у вас действительно хорошо параллелится, то на FPGA можно сделать много параллельных блоков. FPGA между собой соединяются высокоскоростными линками, если потребуется обеспечить взаимодействие блоков на нескольких чипах. FPGA можно воткнуть в хост-систему через pcie, хост система будет читать с диска входные данные, развешивать для FPGA задачи, забирать обмолоченные данные. В итоге, бутылочным горлышком станет или дисковая подсистема, или пропускная способность памяти.

Это типичная схема использования аппаратных акселераторов, кстати.

mv ★★★★★
()
Ответ на: комментарий от AIv

А 10ть сore2quad туда влезет? По 4ре ядра в каждом?

Влезет 100 одинаковых блоков обработки данных, которые у вас программно реализованы (по одному-два на ядро). Только на FPGA они будут реализованы на уровне, приближенном к нормальной микросхеме, и все они будут работать параллельно. Так нравится?

mv ★★★★★
()
Ответ на: комментарий от mv

>> 1. сколько?

ХЗ, я не железячник. Но логики туда очень много влезает.

Т.е. на вопрос VLev вы ответить не можете, а на мой вопрос отвечаете 100? Именно 100, не 90 и не 110? Или 100 - это Ваше видение слова «много»?

AIv ★★★★★
()
Ответ на: комментарий от mv

За ссылки спасибо, но они как то не том... там о миграции полей идет речь, это обработка полевых данных а не моделирование. Задачи конечно большие (данных то много), но совсем другие. Кроме того, все пишут про аццкое ускорение, но я че та не нашел сравнения цен.

Никто не говорит что FPGA плохие вообще. Более того, Вы сов верно говорите, что при традиционном юзании CPU FPGA могут давать существенных выигрышь. НО - при юзании LRnLA на CPU (когда проц выжимается досуха), FPGA сливают вчистую.

AIv ★★★★★
()
Ответ на: комментарий от AIv

но я че та не нашел сравнения цен.

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

при юзании LRnLA на CPU (когда проц выжимается досуха), FPGA сливают вчистую.

Юзайте LRnLA на FPGA.

mv ★★★★★
()
Ответ на: комментарий от AIv

И да, FPGA используют при моделировании молекулярной динамики?

Мне погуглить?

mv ★★★★★
()
Ответ на: комментарий от mv

> Юзайте LRnLA на FPGA.

Опять 25, за рыбу деньги. При отсутствии проблем с памятью, все начинает упираться во флопсы, а наск я понимаю FPGA по флопсам проигрывают CPU при равной стоимости.

И да, FPGA используют при моделировании молекулярной динамики?

Мне погуглить?

Я думал Вы знаете...

AIv ★★★★★
()
Ответ на: комментарий от mv

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

Какую схему? vhdl из стандартной библиотеки?

да, конечно.
По моим понятиям там в середине должна быть матрица из 64x64 ALM-ов, что, по самым скромным прикидкам дает бюджет в ~5K ALM на один 64x64 умножитель. Потому так никто не делает, а ставят отдельные DSP-блоки.

Ваш алгоритм досконально не описывается, поэтому адекватно оценить затраты невозможно.

Тут речь шла как раз о «Вашем» алгоритме (сложения векторов).
Кстати, это стандартный тест stream/add. Данные по любым актуальным процессорам можно нарыть в нете.

Про «мой» алгоритм --- мне и не надо, чтобы Вы его оценивали --- вполне достаточно, чтобы Вы ответили на мои вопросы. А потом я уж сам оценю.

VLev
()
Ответ на: комментарий от mv

> http://www.hindawi.com/journals/es/2009/382983/abs/
вот тут задачи очень похожи на то, что мы делаем для наших заказчиков.
Точнее то, что на 40м слайде в красном яйце обозначено с ошибкой FWI-Elastic

В остальном --- там обычное моделирование.
Ну а график ускорения 85-240раз на слайде 47 это, мягко говоря некорректное сравнение (могу развернуто объяснить почему). Хотя в общем-то понятно, каждый кулик свое болото хвалит...

VLev
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.