LINUX.ORG.RU

Существует ли в природе человекочитаемая реализация BLAS с AVX2 и пр.?

 , ,


0

3

Сабж.

Я не могу читать код, который в мейнстримных реализациях. Мне от этого физически больно. Потому что это сраный ад. Так писать нельзя. Даже на Си.

★★★

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

annulen ★★★★★
()

Лавсан, иди пиши на C#. В Common Lisp есть magicl. Люди, которым это нужно, уже всё давно за тебя сделали.

И если тебе нужны именно знания алгоритмов, а не реализация, почитай линал

anonymous
()

а что с blas-ом не так? Я летом его смотрел сорцы, вроде всё нормально было.

https://ru.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms

В принципе все реализации (без обёрток под ЯП) тут описаны

Эталонная реализация (сайт не доступен в РФ - блокируют с той стороны) вполне нормально сделана для числодробильной библиотеки на смеси си и фортрана. Там в приоритете не красивый код, а скорость работы если что. Потому как поверх blas-а много всякого говна крутится, вроде того же numpy.

peregrine ★★★★★
()

А там не для человеков написано.

Имхо, проще всего ковырнуть какую-нибудь относительно свежую реализацию, например под OpenCL. Там вполне понятно все даже обезьяну и там же должен быть их бенчмарк на питоне с комментариями.

Но я бы порекомендовал оставить BLAS в покое и браться двумя руками за Blis.

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

Но я бы порекомендовал оставить BLAS в покое и браться двумя руками за Blis.

почудилось Blitz, Blitz++ которые разве что чуть моложе BLAS :-)

а вообще от подобного софта не требуется красоты. Стабильный, точный, проверенный, на любой платформе одинаков.

все-же прекрасно понимают, что любое BLAS-like хуже оригинала. И брать страшно. Кто хочет первым наступить на грабли ? красивые, с вензелёчками и с полиморфизмом грабли

а вот в бласе все грабли за много лет растоптаны. Как-бы стандарт lapack,blas старые страшные, но без граблей. Важен результат берёшь их, важен процесс - терзаешь новодел

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

все-же прекрасно понимают, что любое BLAS-like хуже оригинала

Нет. Отучайтесь говорить за всех. В некоторых инструкциях BLIS быстрее того же OpenBLAS, замеры производительности на разных процах это наглядно показывают.

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

не, ну чтобы самому сделать, это же разбираться надо. А вдруг его свежезапиленный гениальный код на лиспе проиграет убогой несовременной сишной реализации, некрасиво же получится?))

Напомнило историю, как к нам на работу пытался устроиться еще один понторез с ЛОРа, который тут постоянно пишет «плати бабки, тогда буду мейнтейнить». Оказалось, у него в принципе нет коммерческого опыта в системном программировании)

Lrrr ★★★★★
()

BLAS и LAPACK делали люди, которые знали, чем и когда a*(b+c) лучше или хуже, чем ab + ac в арифметике с плавающей точкой. Поэтому даже студентов-вычислителей учат, что его переписывать не нужно.

anonymous
()

А мне интересно полюбопытствовать (правда интересно; ни разу не «поумничать») что именно и с какой целью переписывать на лиспе? Может вопрос расширения кругозора, может там решения какие-либо интересные или там преимущества…

В фортране вот умножение матриц и массивов вообще стандарт языка (причем во многих случаях автооптимизации дают лучше, чем сторонние библиотеки).

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

В фортране вот умножение матриц и массивов вообще стандарт языка (причем во многих случаях автооптимизации дают лучше, чем сторонние библиотеки

Ага, и поэтому чуть более, чем весь расчётный софт на фортране требует блас.

annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)
Ответ на: комментарий от Lrrr

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

Странная логика. Вот, если код, который немеренная туча людей 45 лет пилила, проиграет свежей библиотеке, сделанной в одиночку на коленке, тут да, некрасиво. А в обратную сторону — нормальное, ожидаемое поведение.

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

Я пишу на лиспе почти исключительно из-за того, что там всё динамичное (в том смысле, что заменяемое). К нему легко подключить IDE.

Например, если я найду в браузере ошибку (у меня nyxt), я могу включить swank, подключить slime, найти ошибку, исправить, посмотреть, что всё работает, а только потом добавить тесты и пересобрать.

То же самое относится к компилятору. Например, в SBCL почему-то используется сравнение, когда функции MIN/MAX применены к плавучке. Я сделал системку, позволяющую компилятору использовать MINSS/MAXSS (или MINSD/MAXSD). Для этого не надо пересобирать SBCL, надо только загрузить систему

anonymous
()