Ш̴̴̜̥͍͕̼̙̱͙͎͍̘̀̐̔́̾̃͒̈̔̎́́͜р̧̛̺͖͖̯̖ͧͤ͋̅̽ͧ̈̐̽̆̐͋ͤͦͬ͛̃̑͞͞и̒ͥͤͯ͂ͣ̐̉̑ͫ̉̑҉̛͏̸̻͕͇͚̤͕̯̱̳͉ͅф̴̴̡̟̞͙̙̻͍̦͔̤̞̔̓́̍͗̚͢͞ͅт̨̐ͫ̂͊̄̃ͥͪ͏̫̺͍̞̼͈̩̥̜͔͜͜ы̸̴̱̺̼̠̦͍͍͍̱̖͔̖̱͉̅͑͌͒ͫ͒̀ͥ͐ͤ̅͘̕.̵̴̡̭̼̮͖͈̙͖͖̲̮̬͍͙̼̯̦̮̮ͦ̆̀̑̌ͮͧͣͯ̔̂́͟г͌ͮ̏̈͂ͯ̚҉̛̙̬̘̲̗͇͕̠̙͙̼̩͚̀͘͞ͅо̷̥̯̘̓ͤ̽͒̋̉̀̂̄̒̓̊ͨ͛́̌ͤ̂̀͠в̶̒͒̓̏̓̚҉̛̙̘̺̰̮̼̟̼̥̟̘̠̜͜н̸̷̸̲̝͈͙̰̟̻̟̰̜̟̗͎̻̻͍̿̔̃ͨ͑о̔̀̋ͫ̇̿̐ͫ͌͗ͩ҉̨̜̙̙͈͍̮̮̼̙̘̞̕͜͡ Войти !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 / 2543 дня назад

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

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

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

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

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

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

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

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

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

#BD4GXR/YTK / @ninesigns --> #BD4GXR/OY6 / 2542 дня назад
Кстати помогает ``` 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 / 2542 дня назад
@dluciv чё там, хуй опять стоит?
#BD4GXR/LYP / @anonymous --> #BD4GXR/OXW / 2542 дня назад
@anonymous При мыслях о Джулии? Ну так, случается.
#BD4GXR/PJZ / @dluciv --> #BD4GXR/LYP / 2542 дня назад
@ninesigns > Ты missing the point поста. Нет. На любом* языке с достаточным уровнем метапрограммирования можно написать шаблон/макрос, который будет поддерживать синтаксис уровня `X = f(2X^2 + 6X^3 - sqrt(X))` и девекторизацию. Ничего вручную писать не надо. [*]: Да хоть на джаваскрипте или питоне. Только там вызов функции настолько дорогой, что в этом нет смысла и всё ебашат векторизованными функциями.
#BD4GXR/6IV / @anonymous --> #BD4GXR/YTK / 2542 дня назад

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

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

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

#BD4GXR/UIA / @ninesigns --> #BD4GXR/6IV / 2542 дня назад
@ninesigns > ну вот захочешь ты там новую векторизированую функцию и придется ебаться в сишку, отсос. а если подметить эту особенность и сразу перестать хотеть?
#BD4GXR/9DZ / @mugiseyebrows --> #BD4GXR/UIA / 2542 дня назад
@mugiseyebrows Рекомендую big data на javascript.
#BD4GXR/ACZ / @l29ah --> #BD4GXR/9DZ / 2542 дня назад
@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 / 2542 дня назад
ipv6 ready BnW для ведрофона BnW на Реформале Викивач Котятки

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