1.84K subscribers
3.27K photos
130 videos
15 files
3.55K links
Блог со звёздочкой.

Много репостов, немножко программирования.

Небольшое прикольное комьюнити: @decltype_chat_ptr_t
Автор: @insert_reference_here
Download Telegram
Заметил, что сложно искать посты с библиотеками для Rust, так что теперь под это дело есть отдельный хештег rustlib
🔥3
#prog #rust #rustlib

assay — более мощный тест-раннер для Rust. В частности, позволяет запускать каждый тест в отдельном процессе
#prog #rust

cargo-nextest

Features

* Clean, beautiful user interface. nextest presents its results concisely so you can see which tests passed and failed at a glance.
* Up to 60% faster than cargo test. Nextest uses a state-of-the-art execution model for faster, more reliable test runs.
* Detect flaky tests. Nextest can automatically retry failing tests for you, and if they pass later nextest will mark them as flaky.
* Partition test runs across several CI jobs. If your tests take too long to run in CI, nextest can automatically split them up for you across several jobs.
* Cross-platform. nextest works on Unix, Mac and Windows, so you get the benefits of faster test runs no matter what platform you use.
🔥2🤔1
Forwarded from Санечка Ъысь (Anna Weiss)
Ребята, всем привет!

В эти непростые времена мы решили поддержать сообщество rust-разработчиков и выложить видеозаписи всех докладов с RustCon 2021 раньше, чем обещали. Смотрите их тут, делитесь с друзьями.

Любим вас, до встречи на наших конференциях ❤️
22👍3😁2
Блог* pinned «Ребята, всем привет! В эти непростые времена мы решили поддержать сообщество rust-разработчиков и выложить видеозаписи всех докладов с RustCon 2021 раньше, чем обещали. Смотрите их тут, делитесь с друзьями. Любим вас, до встречи на наших конференциях ❤️»
Forwarded from PLComp (Alexander Chichigin)
https://arxiv.org/pdf/1810.07951.pdf
Don't Unroll Adjoint: Differentiating SSA-form Programs
Michael J Innes, 2019

https://proceedings.neurips.cc/paper/2020/file/9332c513ef44b682e9347822c2e457ac-Paper.pdf
Instead of Rewriting Foreign Code for Machine Learning, Automatically Synthesize Fast Gradients
William S. Moses and Valentin Churavy, NeurIPS 2020

Обе статьи посвящены (обратному aka reverse-mode) автоматическому (или алгоритмическому) дифференцированию функций, представленных в форме Single Static Assignment aka SSA. И тем не менее, они описывают существенно различные подходы.

Первая статья даёт краткое введение в обратное дифференцирование и распространённый подход на основе Wengert Lists. Чтобы перейти к SSA форме, к Wengert Lists необходимо добавить метки, условные и безусловные переходы и фи-узлы (φ nodes). Соответственно, статья вводит правила дифференцирования этих управляющих конструкций (control flow constructs). Дополнительно вводятся правила дифференцирования для чтения и записи в ячейки памяти, поскольку основной прицел статьи — императивные языки (и Julia в особенности). Забавно, что на практике (на текущий момент) основанная на описанном подходе библиотека Zygote не поддерживает деструктивную модификацию массивов, несмотря на её (библиотеки) широкое использование, в особенности во фреймворке для машинного обучения Flux. 😊

Несмотря на использование SSA-формы, первая статья подразумевает сравнительно высокоуровневое представление, близкое к исходному языку, до проведения оптимизаций. Вторая же статья рассматривает внедрение автоматического дифференцирования непосредственно в фреймворк LLVM в виде одного из проходов компиляции, выполняемого над низкоуровневым SSA-представлением, не зависящим от исходного языка и прошедшего ряд оптимизаций. Поэтому основное внимание она уделяет низкоуровневым аспектам: теневой памяти (shadow memory), кешам, обработке указателей, в том числе — вызовам функций по указателю, и переиспользованию информации с других проходов, таких как type-based alias analysis.

Стремление проводить автоматическое дифференцирование настолько низкоуровневого представления продиктовано двумя соображениями. Во-первых, немедленная применимость к большому количеству промышленных языков — C, C++, Rust, Julia — без каких-либо изменений в самом языке. Во-вторых, оптимизация исходного кода может сильно упростить и ускорить порождаемый код расчёта градиента функции, в некоторых случаях — понизить сложность с квадратичной до линейной после применения loop-invariant code motion к исходному коду.

Для подтверждения ускорения, авторы провели замеры производительности и сравнения с традиционными подходами на задачах ADBench от Microsoft и нескольких сторонних реализациях численного решателя дифференциальных уравнений. Результаты и графики приведены в статье. 😊

В любом случае, обе работы полагаются на "классические компиляторные техники", такие как dataflow analysis, alias analysis, abstract interpretation, и оптимизации. И потому представляют собой интереснейшее расширение "поля деятельности компиляторщиков" в сравнительно новую, но стремительно набирающую популярность, область.
👍6
Дежурное напоминание, что 8 марта — это не праздник весны, красоты и женственности
10
Сегодня 8 марта, буду банален: желаю равных прав, равных зарплат, чтобы вещи и пространства были спроектированы с мыслями о вас, поменьше сексизма и побольше безопасности, побольше сил чтобы бороться с ужасами реальности и поменьше ужасов реальности с которыми нужно бороться. Ну и конечно, хоть это и не относится напрямую к феминизму, желаю чтобы война закончилась, желаю чтобы вы и ваши близкие были в порядке, на столько, на сколько это теперь возможно.

/в общем да, вафель как обычно за всё хорошее против всего плохого/

Хотелось бы верить, что всё это близко, но верится с трудом...

Берегите себя, всего хорошего <3
26
А о том, куда всё летит, нам расскажет Егор Летов
😢152
А помните, был такой коронавирус?
😢20😁6👍1
#prog #rust #article #successstory

Parsing logs 230x faster with Rust

As fantastic gravy on top of this whole situation, after a few days I realized that I needed to know exactly how much it would cost. With each log file taking about 23 seconds, and there being about 500 log files per day, it seemed like I would need about 350,000 seconds of Lambda execution time per month.

Then, when I went to look up Lambda pricing, I noticed that it has a free tier: 400,000 seconds per month. So in the end, it seems like I’m parsing 500GB of logs per day… for free. 😆
Forwarded from я что-то �� и всё ����
😢31
Вот чего я не ожидал увидеть в оформлении Мака — так это отсылки к утилите и одноимённому языку для структурированной обработки текста