Forwarded from 0x1337
Табличка с замерами Latency / Throughput, которой ну очень удобно пользоваться. Кстати, информация куда более полная чем у Агнера Фога:
https://uops.info/table.html
#optimization #asm
https://uops.info/table.html
#optimization #asm
Forwarded from 0x1337
Ребята, как я и обещал - радую годным, авторским контентом. Увы, скидывать целиковые статьи, а точнее читать их тут - дело не из простых. Поэтому, сами статьи публикую 'где-то', а сюда скидываю ссылку. Так вот, авторский контент подъехал:
https://habr.com/ru/post/468581/
#publication #asm #cxx #optimization
https://habr.com/ru/post/468581/
#publication #asm #cxx #optimization
Хабр
Делись, рыбка, быстро и нацело
Деление — одна из самых дорогих операций в современных процессорах. За доказательством далеко ходить не нужно: Agner Fog[ 1 ] вещает, что на процессорах Intel / AMD мы легко можем получить Latency в...
Forwarded from 0x1337
Данные в процессор загружаются из памяти. Дело это не быстрое:
https://www.7-cpu.com/
Вот тут^ выбери модель интересующего тебя процессора и посмотри, какова цена работы процессора с 'Голой' памятью. На Haswell, например, 90 clock cycles.
#measurments #ram #processor #link
https://www.7-cpu.com/
Вот тут^ выбери модель интересующего тебя процессора и посмотри, какова цена работы процессора с 'Голой' памятью. На Haswell, например, 90 clock cycles.
#measurments #ram #processor #link
Forwarded from 0x1337
Продолжая рассуждения на тему обмена данных между Процессором и Памятью:
Есть Out Of Order Execution процессор, есть кусочек кода который подгружает данные из Памяти в Кеш Процессора и как-либо обрабатывает их после, и есть код который отрабатывает ДО места где эти данные загружаются / используются.
Из поста выше мы знаем, что обмен данными между Памятью и Процессором - долог: если на момент пользования обмениваемыми данными, в Кеше Процессора их нету - работа встанет. Процессор, конечно, не дурак и просматривая Фреймы наперед, начнет загрузку данных в Кеш еще до того как они реально понадобятся, параллельно выполняя команды идущие ДО. То есть я к чему: нужно писать код так, чтобы до Работы с Памятью можно было сделать какую-либо полезную Память-Независимую работу, на фоне выполнения которой и будет происходить опережающая выгрузка данных из Памяти.
#memory #cache #prefetching
Есть Out Of Order Execution процессор, есть кусочек кода который подгружает данные из Памяти в Кеш Процессора и как-либо обрабатывает их после, и есть код который отрабатывает ДО места где эти данные загружаются / используются.
Из поста выше мы знаем, что обмен данными между Памятью и Процессором - долог: если на момент пользования обмениваемыми данными, в Кеше Процессора их нету - работа встанет. Процессор, конечно, не дурак и просматривая Фреймы наперед, начнет загрузку данных в Кеш еще до того как они реально понадобятся, параллельно выполняя команды идущие ДО. То есть я к чему: нужно писать код так, чтобы до Работы с Памятью можно было сделать какую-либо полезную Память-Независимую работу, на фоне выполнения которой и будет происходить опережающая выгрузка данных из Памяти.
#memory #cache #prefetching
Forwarded from 0x1337
Привет! Джем и Горячий чай уже ждут тебя:
https://habr.com/ru/post/470674/
Контент авторский, тут все по плану. Ну а утро бывает не только добрым, но и теплым, да.
#link #publication #cxx #allocator #data_structure #interesting
https://habr.com/ru/post/470674/
Контент авторский, тут все по плану. Ну а утро бывает не только добрым, но и теплым, да.
#link #publication #cxx #allocator #data_structure #interesting
Хабр
Inside The JeMalloc. Базовые Структуры Данных: Pairing Heap & Bitmap Tree
Тема Аллокаторов частенько всплывает на просторах интернета: действительно, аллокатор — эдакий краеугольный камень, сердце любого приложения. В этой серии постов я хочу в подробностях рассказать о...
https://www.youtube.com/watch?v=51lqHKVDoBE модули пельтье в охлаждении #pc фактически это реактивный буст охлаждения. как будто проц работает в комнате с -40 по цельсию
YouTube
Охлаждение на Пельтье. Часть 2. Увеличил эффективность в 2.1 раза
Кулеры для ПК - https://www.e-katalog.ru/u/nVGzj/a
Комплектующие - https://www.e-katalog.ru/u/qUrgE/a
В видео я рассказываю как сделать, возможно, самое лучшее охлаждение которое может поместиться в обычный компьютерный корпус на основе элементов Пельтье…
Комплектующие - https://www.e-katalog.ru/u/qUrgE/a
В видео я рассказываю как сделать, возможно, самое лучшее охлаждение которое может поместиться в обычный компьютерный корпус на основе элементов Пельтье…
Make LLVM fast again
https://nikic.github.io/2020/05/10/Make-LLVM-fast-again.html.html ускорение #llvm, просто отлично, что оно двигается в направлении ускорения компиляции
https://nikic.github.io/2020/05/10/Make-LLVM-fast-again.html.html ускорение #llvm, просто отлично, что оно двигается в направлении ускорения компиляции
https://joellaity.com/2020/01/25/linking.html статья про то как работает линковка в #cpp. впрочем в #rust и #swift тожесамое
Joel Laity
How linking works
I. Introduction
https://joellaity.com/2019/02/28/checkmate-undefined-behavior.html немного про Undefined Behavior в #cpp
Joel Laity
Checkmate, undefined behavior
Undefined behavior is the bane of C and C++ programmers. The compiler can choose to do whatever it wants if a program has undefined behavior. This is normally not a good thing, but I recently wrote some code with undefined behavior and amazingly the compiler…
https://docs.google.com/presentation/d/1VnisvNEUj0Q7JzHbvGqTOVM9zcLuHhBOwg4aaTx6cMQ/edit#slide=id.p причина почему #cpp это боль. название говорит за себя. нужен целый гайд что бы понять как оно работает. вообще не смешно
Google Docs
2020-05-07: The Complete Guide to `return x`
The Complete Guide to return x; I also do C++ training! arthur.j.odwyer@gmail.com Arthur O’Dwyer 2020-05-07
https://blog.reverberate.org/2020/05/12/optimizing-date-algorithms.html про оптимизации превращения даты в юникс эпоху, магические числа, #fortran #c с бенчмарками
blog.reverberate.org
Optimizing UTC → Unix Time Conversion For Size And Speed
Parsing, performance, and low-level programming.
https://blog.reverberate.org/2009/01/llvm-bitcode-vs-protocol-buffers.html прям по свежему. недавно копал разного вида бенчмарки мгновенной десериализации данных, и тут старая статья про биткод #llvm и #protobuf... если коротко то бикод выиграл по месту... по остальным показателям протобаф ообошел. НО в моих бенчах на #rust имплементация протобафов получилась чуть ли не самая тормозная и в результате выбрал малоизвестную либу
speedy которая работает так же как bincode но оптимизирована по скорости загрузки в память сразу в нужном виде (что критично важно)blog.reverberate.org
LLVM Bitcode vs. Protocol Buffers
Parsing, performance, and low-level programming.
https://habr.com/ru/post/460295/ ансэйф в #rust. Если коротко то компилятор гарантирует отсутствие сигфолдов, но иногда надо манипулировать указателями и там нужен ансэйф
Хабр
Что значит unsafe в Rust?
Привет, Хабр! Представляю вашему вниманию перевод статьи "What Is Rust's unsafe?" автора Nora Codes. Мне доводилось видеть много недопониманий относительно того,...
https://doc.rust-lang.org/std/mem/fn.replace.html
наконец добрались руки везде где надо
наконец добрались руки везде где надо
mem::replace прописать. 0.4секунды из 4.6сек сэкономлено. #rustdoc.rust-lang.org
replace in std::mem - Rust
Moves `src` into the referenced `dest`, returning the previous `dest` value.
https://www.youtube.com/watch?v=onbnb_D1wC8 просто ахтунг что могет NVidia теперь. мощность датацентра уже в одной стойке за 1млн баксов. парам пам пам. расходимся
YouTube
NVIDIA GTC May 2020 Keynote Pt6: NVIDIA A100 Data Center GPU Based on NVIDIA Ampere Architecture
NVIDIA CEO Jensen Huang introduces the NVIDIA A100 data center GPU, which dramatically increases throughput of scale-out and scale-up applications whether for data analytics, training or inference. The A100 delivers 1.5 terabytes per second of bandwidth thanks…
кроссплатформенная компиляция в #rust огнище 🔥🔥🔥🔥🔥 вот только чтото с
https://cloudwafer.com/blog/installing-openssl-on-ubuntu-16-04-18-04/ неплохой ман по тому как скомпилировать
openssl не получилось скомпилировать. но думаю что получится скоро. https://cloudwafer.com/blog/installing-openssl-on-ubuntu-16-04-18-04/ неплохой ман по тому как скомпилировать
openssl под убунтуCloudwafer Blog
Installing OpenSSL on Ubuntu 16.04/18.04
install the latest version of openssl ubuntu
how to install openssl on linux ubuntu
how to install openssl on linux ubuntu
https://medium.com/@qertoip/how-to-generate-an-array-of-random-bytes-in-rust-ccf742a1afd5 обана. незадокументированная мелочь генерации массива рандомных значений в #rust при помощи
randMedium
How to generate a random byte array in Rust 2018?
It’s very simple (but not documented) for byte arrays of 1 to 32 elements: