Как стать автором
Обновить
19
0
Юрий Ярош @voidnugget

Rapid Unscheduled Disassembly Expert

Отправить сообщение
А зачем столько много инета?

Этот вопрос можно задавать всем пользователям с гигабитной оптикой дома.
Просто резервный домашний канал.


И не понятно, какой коммутатор используете для 100/10.

У меня нет 100/10, в качестве гигабитного — стоят EdgeRouter'ы. Микротик я на дух не переношу.

4 Gb инет домашний, свитч провайдера Huawei'ный стоит на крыше, в подъезд заходит 4 PON волокна, которые агрегируются (TWDM вроде) через второй cвитч провайдера убикуитишный на площадке %) Тянуть в дом 10Gbit волокно не захотели, так как SFP'шек 1Gbit'ных было б/у шных много.


100 Gb для разработки под Virtex Ultrascale+

Virtex UltraScale+ ADK под QSFP28 Lumentum 100G и Mellanox'овский SFP переходник под Noname Aliexpress'ный 6COM 10GE модуль.


Ну и 802.11AC роутер убикуитишный, старый что снят с производства, по скидке купил.


Витую Corning F/FTP нашёл по дешевке на OLX'e, c разбомбленного дома под Донецком.

Тягал по дому Corning Cat6, хочу заметить что в Cat6+ витой толщина жилы 1.3 и очень специфический разъём. Обжимка производится в "два ряда", жилы сложены зиг-загом с помощью внутренней пластмасовой вставки:


image


image


Ещё бывает наружная для разделения пар, но она не обязательна.


Для обжимки можно пользоваться и простым инструментом, если снять скобу на штопорной шайбе. Беленький стопор (1) по срединие на риснуке, который держит прижимку (2) с надписями 8P 6P 4P:


x


Сat6 F/FTP нормально держит 10Гбит на 40м с заземлением в домашних условиях, без особых заморочек. Удовольствие довольно дорогое, но оптику по дому тянуть было неудобно.

Далее следует научить программы понимать другие программы.

У нас нет формально верифицируемых, функционально полных, языков что бы можно было нормально "обучить". ProbQA — это довольно поверхностный алгоритм, он не оптимизирует уточняющие вопросы что бы упростить сложность своего обучения.

Cейчас golang использует TSan, но также были нативные решения, пока что они не публиковались.

Во многих существующих инструментах от пользователя требуется добавить #pragma или иную аннотацию для соответствующего гнезда циклов.

Советую почитать статью — хорошо объясняет примеры задач которые можно решить полиэдральными моделями.


Полиэдральные оптимизации позволяют, к примеру, полностью распаралелить код — не нужно заморачиваться с блокировками и соответствующими deadlock / livelock / race-condition проблемами. Существующие race-condition детекторы, например в golang'e, успешно используют полиэдральную модель поверх существующего SSA.


Также разработчики Rust'a рассматривают возможность использования Memory SSA с полиэдральными оптимизациями — хотят совсем отказаться от Arena аллокатора.

А нужно ли вообще иметь дело с Array/Memory SSA

Нужно — нет прямого способа преобразовать AST в представления на многогранниках, и не для всех интервалов значений можно строить эти самые многогранники. Часто приходиться разбивать 2 вложенных цикла, на допустим 3 или 5 многогранников, в зависимости от количества объединений (фи-функция) в SSA.


расширениях Polly (LLVM) и Graphite (GCC)

Из-за этих самых недостатков большая часть возможных оптимизаций в Polly сейчас неприменима, не может оно нормально на эти самые многогранники разбить код по существующему SSA. Graphite очень сырой — бывает вызывает segfault'ы и прочие радости, матрицы множить не умеет.


R-Stream в основном работает под TensorFlow: там есть интервалы всех значений — можно нормально многогранников построить. Для тензорных функций особо строить SSA не нужно — используются инлайновый ассемблер afaik. R-Stream не является полноценным компилятором.


В LLVM нету интервалов значений — этот пробел мог был заполнить JIT, либо зависимые типы данных. Полиэдральная оптимизация не является приоритетом разработчиков LLVM, скорее воспринимается как "академическая поделка" за которую никто денег толком не заплатит.

Из OpenSource проектов наиболее хорошим примером является OpenCV и TensorFlow.
В OpenCV все SIMD операции с матрицами выполнены вручную, посредством Intrinsic x86 вызовов, так как полноценно утилизировать все инструкции современные тулчейны не в состоянии. В TensorFlow вообще отдельные кастомные LLVM бэкенды с JIT'ом для тензоров доступны, что бы можно было и под PTX и под CPU без bottleneck'ов больших.


Часто проскакивают новости типа "вот cloudflare свой сишный роутер под AVX2 допилила, и получила хороший прирост".


Существующий полиэдральный оптимизатор в GCC даже умножение матриц не умеет уже довольно давно. В LLVM ситуация была получше, правда там он работает "только в теории". В TensorFlow оптимизаторах тоже часто используют полиэдральщину.

Пока рассматриваем варианты.
Snap и пару сервисов в разработке, по этому все "покрыто туманом войны".

Будем опенсорсить, надеюсь что скоро.
"Жесткого роялти" не будет, но я планирую % от дохода как это сделано с Unreal'ом четвертым.

Это два языка — Shift и Snap.


Shift — это формально верифицируемый язык на каппа-числении и расширениях Кана (Kan Extensions), может транслироваться как в VHDL/Verilog, в биткод LLVM'а, так и в бинарники, со "своим" ассемблером и проходами SSA. Без GC полный zero-alloc — работа с памятью "один раз выделили и больше никаких free/realloc". Есть возможность работы в афинных окружениях, когда логическое ядро процессора кроме потока приложения больше ничего не выполняет — нету context switching'a между user-space / kernel-space, системные планировщики "не вливают". Также транслируется в Snap.


Snap — это формально верифицируемый статически типизированный JavaScript, который можно обратно транслировать в Shift и применить всяких оптимизаций. Также Snap транслируется в WASM без LLVM тулчейна.


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


Cейчас решаются сугубо политические вопросы — патенты, инвестиции, монетизация и т.п. Я вот думаю начать разрабатывать таргет под GraalVM, и внедрить поддержку poll-mode драйверов на подобие SPDK/DPDK.

Есть много нюансов при работе с Array и Memory SSA.
Если с первой еще более-менее понятно, то работа с Memory SSA, к сожалению, сводиться к аннотациям сборщика мусора...


то вы сам хозяин всех оптимизаций

Не стоит идеализировать LLVM, есть ряд полиэдральных оптимизаций которые просто неприменимы из-за недостатков дизайна промежуточных проходов SSA.

Пишу компилятор формально верифицируемых языков — постоянно сталкиваюсь с проблемами производительности в кодогенераторе LLVM… LLVM приходиться поддерживать из-за Vendor lock-in'a в яблоках.


Проблема в том, что IR(mIR) преобразования далеко не всегда применяют очевидные оптимизации по упаковке/распаковке данных — не учитывается сложность операций для отдельных версий микроархитектур и не применяются специфические оптимизации.


Например, существует ряд инструкций в x86 которые эмулируются программно микрокодом, реализация Intel'a имеет ряд недостатков… компилятор мог бы использовать более эффективные реализации, с учетом существующей SSA.


Очевидные оптимизации, например, при упаковке FP и SIMD'ах для ARMv9/11 не применяются просто из-за "обратной совместимости" с ARMv6.


В первую очередь, приоритетом для LLVM является универсальность, простота и совместимость, а утилизация аппаратных ресурсов вторична.


У LLVM есть целый ряд недостатков при работе с SSA (Array/Memory) оптимизациями. К сожалению, существующие полиэдральные (polyhedral) оптимизации в условиях реальных приложений работают "только в теории" из-за ограничений IR'a и результирующего SSA.


Да, под LLVM/GCC можно уместиться в 250 человеко/дней при разработке фронтенда/бэкенда, но это будет далеко не самое производительное решение.

Да, там непонятки c определениями есть — Accounting не всегда может подпадать под Legal Obligation в разных странах… именно об этом и речь, что иногда пользователь может корзинить бухгалтерию, и это страшно (мало спал, видимо некорректно выразился).

Есть пару стартапов, страдаю GDPR'ом с начала года.
В принципе не так страшен чёрт как его рисуют, просто нужно было нанять пару хороших юристов, составить EULA… дать пользователям возможность отключать сбор данных с потерей соответствующего функционала, и возможность "полностью" удалить аккаунт, объяснить зачем это всё собирается… провести много DevOps манипуляций и внедрить семь кругов ада всяких методов логирования/контроля доступа.


Проблема крылась в слове "полностью", ведь записи с бухгалтерии тоже "персональные данные" которые "собираются", и просто так их не удалить без нарушения местного законодательства. В Штатах за это, вроде как, даже уголовная ответственность предусмотрена.


В целом, если у вас нет утечек, и даже если и были, но вы наладили оповещение, — особо переживать по поводу GDPR'a не стоит.

но можно ведь создать отдельную таблицу со статусами

Если у вас меньше 100 статусов — overkill, так как, в случае с отдельной табличкой, будет храниться больше различных счётчиков для оптимистических/пессимистических блокировок, UNIQUE индекс и последовательность.


Нормализация нормализацией, но есть размеры структур СУБД, которые, как и законы физики, преодолеть без паранормальных способностей не представляется возможным.

Я "с нашими" не работал, видел как люди работают на Darp'у… по Actel'у могу сказать лишь только то что они просто дэмпингуют цены, и это чаще СPLD чем FPGA, по этому и дешевле. Четвёртые Virtex'ы до сих пор в обороте, поддерживаются/допиливаются, и работают без сбоев. Поддержка Actel "покрыта туманом войны" в прямом, и в переносном смысле.


"Весь мир" не ограничевается РФ, не стоит обобщать — у разных стран разные условия и договорённости.

Ну системы ракетного наведения с 2008го компании с грантами от Darp'ы лепили на Virtex/Kintex 4, отдельно предлагалась "военизированная" или "порезанная" версия для партий от 20ти тысяч штук. Типа что бы ячейки не стирались при определённых значениях радиационного облучения, и проч около Aerospace'ный бред.


Alter'у тогда просто не допускали к оборонке (системы наведения) из-за недостаточного QA и несоответствия нормам. Ситуация вроде как особо не менялась, как и поставщики, и разработчики… Эт закрытая инфа. Сейчас Alter'у пускают в радарные и навигационные — так как там она соответствует требованиям надёжности.

Информация

В рейтинге
Не участвует
Откуда
Киев, Киевская обл., Украина
Дата рождения
Зарегистрирован
Активность