Size: a a a

Язык программирования Julia / Julia programming language

2020 May 22

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Кстати, недавно кто-то рекламировал пакет, что-то там kernel назывался.

Скорости не прибавит (скорее даже наоброт), но зато должен уменьшить длину кода, так как вроде бы там достаточно компактно можно было ядра прокатывать по матрицам.

Секунду, сейчас найду.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Хм нет, на самом деле это старый пакет, видимо недавно реанимировали.

https://github.com/stev47/StaticKernels.jl

Тем не менее, вдруг пригодится (сам не пользовался и гарантировать применимость к данной задаче не могу 😊 ).
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
Андрей Оськин
А, понятно.
Там надо на всякий случай проверить что нестабильностей никаких нет, передача функции в качестве аргументов может иногда к не очень хорошим результатам приводить.

https://github.com/vvshashkin/fortran_julia_bench/blob/master/advection/julia_code/operator.jl#L28 - вот это место ещё неприятное. Здесь я так понимаю строчка вырезается? Так как Julia column major, то это плохо влияет на скорость вычислений.
Нестабильностей вроде не было. А что, лучше передавать callable struct?
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Нет, не лучше.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Там просто есть особые случаи.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
То есть можно написать что-то вроде
function adv_oper!(fout::stvec_t, fin::stvec_t, params::params_t, m::Int, fluxf::F) where {F}
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Но по-моему это не тот случай.
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
" Julia will always specialize when the argument is used within the method, but not if the argument is just passed through to another function."
Да, точно не тот, тут проблем быть не должно.
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
Спасибо всем за обсуждение, если удастся что-то вытянуть из оптимизатора-отпишу. Маленькая ремарка. (По моим скромным и возможно ложным представлениям) джулия должна в этой задаче иметь преимущество за счет JIT, тк может оптимизировать функцию adv_oper, когда уже точно известно, какая fluxf туда пришла. Отчасти это подтверждается тем, что вариант с потоком аргументом и хардкод вариант работа ют одинаково быстро. Фортран в этом месте теряет около 30%. Но возможно, все это не так.
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
Чтобы наша дискуссия не была совсем уж абстрактной - решение тестовой задачи
источник

VS

Vladimir Shashkin in Язык программирования Julia / Julia programming language
Что-то гифка не работает(
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Работает, только надо мышку навести
источник

VG

Viktor G. in Язык программирования Julia / Julia programming language
перемешивается
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
А если @benchmark показывает 1-2 аллокации, это же имеется в виду не Int или ещё что-то типа того, а нечто на куче?
источник

AZ

Aleksey Zhdanov in Язык программирования Julia / Julia programming language
Кому попадались сайты подобные "The Benchmark Game" где примеры или задачи на оптимизацию кода на разных языках есть?
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Kirill Tsaregorodtsev
А если @benchmark показывает 1-2 аллокации, это же имеется в виду не Int или ещё что-то типа того, а нечто на куче?
Да, что-то в куче, стек всегда как 0 идёт.
источник

KT

Kirill Tsaregorodtse... in Язык программирования Julia / Julia programming language
интересно, откуда ) если у меня ни одного массива в коде нет
источник

АО

Андрей Оськин... in Язык программирования Julia / Julia programming language
Внутренние операции могут аллоцировать.
Можно Julia запустить с трекингом аллокаций, должна показать в какой строке они происходят.
источник