ビリャチピスデツナフイ Войти !bnw Сегодня Клубы

Почему julia дает пизды вашим любимым* язычкам программирования.

https://julialang.org/blog/2017/01/moredots

Используя dot call как здесь:

X .= f.(2 .* X.^2 .+ 6 .* X.^3 .- sqrt.(X))

или

@. X = f(2X^2 + 6X^3 - sqrt(X))

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

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

Кроме того, есть возможность при помощи библиотеки GPUArrays обсчитывать массивы на opencl/cuda, используя тот же самый код, как и для обычного кода, но используя специальные типы. Все благодаря multiple dispatch и макросистеме.

[*] кроме, пожалуй, хаскеля, если ghc сделает loop fusion и вы не обосретесь с ленивостью

Рекомендовали: @l29ah @kuro @ndtimofeev @o01eg @dluciv
#BD4GXR / @ninesigns / 2545 дней назад

приведи список программ (а лучше чего-нибудь *посерьёзнее*, например веб-сайтов), которые написаны на твоей жулии. и сразу станет понятно, кто там кому даёт пизды.
#BD4GXR/OY5 / @anonymous / 2545 дней назад
лукс лайк очередное хаски для считания факториалов
#BD4GXR/7UK / @anonymous / 2545 дней назад

@anonymous Привел.

https://juliacomputing.com/press/2016/11/28/celeste.html

The code used for this analysis is called Celeste. It was developed at Berkeley Lab and uses statistical inference to mathematically locate and characterize light sources in the sky. When it was first released in 2015, Celeste was limited to single-node execution on at most hundreds of megabytes of astronomical images. In the case of the Sloan Digital Sky Survey, which is the dataset used for this research, this analysis is conducted by identifying points of light in nearly 5 million images of approximately 12 megabytes each – a dataset of 55 terabytes.

Using the new parallel implementation, the research team dramatically increased the speed of its analysis by an estimated 225x. This enabled the processing of more than 20 thousand images, or 250 gigabytes – an increase of more than 3 orders of magnitude compared with previous iterations.

#BD4GXR/EA1 / @ninesigns --> #BD4GXR/OY5 / 2545 дней назад
ну хуй знает
#BD4GXR/UYQ / @anonymous / 2545 дней назад
@anonymous ну кагбе юлея она для математекоф и учёнишек там всяких, а они там сидят, написали чота, в облако спонсируемое каким-то институтом загрузили и оно там параллелится. Теперь они пытаются как-то приблизиться к чему-то из реального мира, но, по моему, хуйс, и это всё оказалось красивой хернёй с прикольной обёрткой, ни для чего не годной кроме академической узконаправленности там всякой // на самом деле я не знаю То есть красивую рекламу ты найдёшь, а сайт или приложуху - нет.
#BD4GXR/XEE / @anonymous --> #BD4GXR/OY5 / 2545 дней назад
А гцц не умеет догадаться что надо бы векторизовать?
#BD4GXR/6EQ / @l29ah / 2545 дней назад

@l29ah 1. Умеет, но это ОПТИМИЗАЦИЯ автовекторизации, то есть она может и не включиться, если gcc не хватит информации для того чтобы доказать, что оптимизация не изменит результат.

#BD4GXR/R52 / @ninesigns --> #BD4GXR/6EQ / 2545 дней назад
@ninesigns ghc ещё сложнее это всё доказывать и обосраться с описанием программы с целью влезть в его эвристики легче, нет?
#BD4GXR/QSP / @l29ah --> #BD4GXR/R52 / 2545 дней назад
@l29ah ghc это доказывать существенно проще, а местами и вовсе не надо. man rewrite rules.
#BD4GXR/D5E / @ndtimofeev --> #BD4GXR/QSP / 2545 дней назад
@ndtimofeev А, ок, забыл что в сишке ещё куча состояния разного и конструкций которые мешают делать тупые лексические преобразования.
#BD4GXR/MI6 / @l29ah --> #BD4GXR/D5E / 2545 дней назад
сколько костылей, а ответ один - трансдьюсеров не завезли
#BD4GXR/62Y / @queet5ee / 2545 дней назад
@queet5ee Трансформеров?
#BD4GXR/G56 / @l29ah --> #BD4GXR/62Y / 2545 дней назад
@l29ah что "Трансформеров?"?
#BD4GXR/ZBL / @queet5ee --> #BD4GXR/G56 / 2545 дней назад
@l29ah Нет.
#BD4GXR/GQT / @ndtimofeev --> #BD4GXR/G56 / 2545 дней назад
@ndtimofeev Пидора ответ.
#BD4GXR/6XM / @queet5ee --> #BD4GXR/GQT / 2545 дней назад
@l29ah Тебе не нужно знать про это. За тебя это делает автор библиотеки и rewrite rules'ы.
#BD4GXR/SEX / @ndtimofeev --> #BD4GXR/G56 / 2545 дней назад
@ndtimofeev > SEX > За тебя это делает автор библиотеки :c
#BD4GXR/CGA / @queet5ee --> #BD4GXR/SEX / 2545 дней назад
расскажи кого это ебет
#BD4GXR/0NX / @komar / 2545 дней назад
@komar опущенцев вроде тебя, которых заменят в ближайший год-два — не ебёт. лови мгновения, через пару лет тебя сдадут в утиль и будешь как все в твоём дрищеронске.
#BD4GXR/2YE / @anonymous --> #BD4GXR/0NX / 2545 дней назад

@anonymous чувствуются слова не мальчика, но инженера

#BD4GXR/1KR / @ninesigns --> #BD4GXR/2YE / 2545 дней назад
@ninesigns не угадал. но мне тоже непонятно, нахуя в подобных темах показываются подобные вот этому дну персонажи со своими пуками. картинок нет, больше абзаца текста, формулы. видно же, что тема не для бюджетников-сантехников, обслуживающих распилы.
#BD4GXR/3M9 / @anonymous --> #BD4GXR/1KR / 2545 дней назад
@anonymous пруф или кто-то шибко умный в омерике перепишет js-движок на жулии чтоб быстрее а потом все равно придет комар и будет кормить этот движок килограммами говна на js и html
#BD4GXR/6S7 / @voker57 --> #BD4GXR/2YE / 2545 дней назад

@queet5ee трансдьюсеры магически код за тебя не векторизуют, будешь вручную костылять и смотреть как прекрасная абстракция подтекает

#BD4GXR/7OY / @ninesigns --> #BD4GXR/62Y / 2545 дней назад
@anonymous хуя ты цомпутор сцаентист
#BD4GXR/W4B / @komar --> #BD4GXR/2YE / 2545 дней назад
@voker57 как же жить когда байтики не сэкономлены
#BD4GXR/SQY / @komar --> #BD4GXR/6S7 / 2545 дней назад
> сгенерить векторизированый код *девекторизованый
#BD4GXR/QYI / @anonymous / 2545 дней назад
было в крестах* сотню лет назад in-place операции (т.е. без промежуточных аллокаций массивов)? blas, lapack векторный синтаксис при этом? Armadillo, Blitz++ использовать __тот же самый код__ на GPU? opencl, cuda [*]: и не вижу преград заменить кресты на любой другой язык с макросами и дешёвым вызовом функций
#BD4GXR/OY6 / @anonymous / 2545 дней назад

@anonymous Ты missing the point поста, написать вручную можно, но зачем когда можно не писать.

#BD4GXR/YTK / @ninesigns --> #BD4GXR/OY6 / 2545 дней назад
Кстати помогает ``` julia> s = rand(100000000) julia> @time(for c = 1 : 100 @. s = s + 2.0 end) 8.497865 seconds (4.50 k allocations: 236.592 KiB) julia> @time(for c = 1 : 100 s = s + 2.0 end) 29.237204 seconds (25.96 k allocations: 74.507 GiB, 18.02% gc time) ```
#BD4GXR/OXW / @dluciv / 2545 дней назад
@dluciv чё там, хуй опять стоит?
#BD4GXR/LYP / @anonymous --> #BD4GXR/OXW / 2545 дней назад
@anonymous При мыслях о Джулии? Ну так, случается.
#BD4GXR/PJZ / @dluciv --> #BD4GXR/LYP / 2545 дней назад
@ninesigns > Ты missing the point поста. Нет. На любом* языке с достаточным уровнем метапрограммирования можно написать шаблон/макрос, который будет поддерживать синтаксис уровня `X = f(2X^2 + 6X^3 - sqrt(X))` и девекторизацию. Ничего вручную писать не надо. [*]: Да хоть на джаваскрипте или питоне. Только там вызов функции настолько дорогой, что в этом нет смысла и всё ебашат векторизованными функциями.
#BD4GXR/6IV / @anonymous --> #BD4GXR/YTK / 2545 дней назад

@anonymous > На любом* языке с достаточным уровнем метапрограммирования можно написать шаблон/макрос
на любом языке с достаточным уровнем метапрограммирования можно написать любой другой язык программирования, но далеко не факт что он будет эффективно компилироваться(инлайниться) в векторизованый машинный код.

Только там вызов функции настолько дорогой, что в этом нет смысла и всё ебашат векторизованными функциями.

ну вот захочешь ты там новую векторизированую функцию и придется ебаться в сишку, отсос.

#BD4GXR/UIA / @ninesigns --> #BD4GXR/6IV / 2544 дня назад
@ninesigns > ну вот захочешь ты там новую векторизированую функцию и придется ебаться в сишку, отсос. а если подметить эту особенность и сразу перестать хотеть?
#BD4GXR/9DZ / @mugiseyebrows --> #BD4GXR/UIA / 2544 дня назад
@mugiseyebrows Рекомендую big data на javascript.
#BD4GXR/ACZ / @l29ah --> #BD4GXR/9DZ / 2544 дня назад
@ninesigns > далеко не факт что он будет эффективно компилироваться(инлайниться) в векторизованый машинный код. Я же ясно написал: «и девекторизацию». Обмазать шаблонами и constexpr (чтобы исключить динамизм, что позволит компилятору заинлайнить всё и применить свои обычные оптимизации). Написал на крестах POC: https://godbolt.org/g/PjdCpv. Произвольная функция от двух аргументов векторизуется так: `op2<имя_функции>`. `op1` - от одного. foo0, foo1, foo2 делают одно и то же: `result = a - sqrt(b)`. * `foo0` - за исключением перегрузки операторов, ничем не отличается от foo1 (я перегрузку не стал делать) * `foo1` - в векторизованом виде * `foo2` - развёрнуто руками
#BD4GXR/1U3 / @anonymous --> #BD4GXR/UIA / 2544 дня назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

Цоперайт © 2010-2016 @stiletto.