LINUX.ORG.RU

Сообщения shkolnick-kun

 

Си, «горячий код», несколько версий функции.

Форум — Development

Привет, кодач девеЛОРч, продолжаю делать очередное OpenSource поделие.

Само поделие тут.

Это будет либа с оценивающими фильтрами.

Особенности:

  • Старался писать КАК ДИДЫ в программе «Аполон».
  • No dynamic memory allocation.
  • Использование [ну типа] cache-aware алгоритмов.
  • Выполнение на архитектурах с аппаратной плавающей точкой.
  • Использование стабилизированных численных методов.
  • Принятие того факта, что у нас тут не NASA, соответственно, пользователи могут косячить в моделях процессов и наблюдений. Использование алгоритмов, которые позволяют хоть как-то сгладить последствия этих косяков.
  • Принятие того факта, что шумы могут быть не Гауссовы. Использование алгоритмов, которые позволяют хоть как-то сгладить последствия неверных гипотез о шумах.
  • Прототипирование на Python c использованием буквально тех же реализаций алгоритмов, что и в продакшоне, посредством Cython-обертки над либой.

Итак, ближе к сути: есть несколько версий функций (в данный момент - две, запланировано до четырёх), например: раз и два.

Отличаются они тем, что первая - обычная реализация, как в учебнике, а вторая - с адаптивной коррекцией, на случай, если пользователь накосячил в модели процесса, или что-то «поломалось» в объекте наблюдения.

Отличия могут быть довольно небольшими, но они сожрут какое-то количество мегафлопс и памяти.

Вопрос к знатокам:

Стоит ли делать несколько вариантов функций, как сейчас, или оставить самый сложный?

З.Ы.: И да, если это применять, например, при адаптивном подавлении шумов от производственного оборудования в наушниках у рабочего, то частоты вызова могут быть несколько килогерц (в данном случае - от восьми) для нескольких объектов, и звук будет идти с нескольких микрофонов.

 , , , ,

shkolnick-kun
()

Хочу выяснить пару вопросов про современные процессоры и компиляторы.

Форум — Development

Привет, ЛОР.

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

Библиотеку хочу сделать переносимой (чтоб работала и на микроконтроллерах/DSP и на х86-64, и т.д.), поэтому готовый код от вендоров в топку.

И тут возникли вопросы про векторно-матричные операции:

  • Я правильно понимаю, что для минимизации кеш-промахов надо сделать так, чтобы на соседних итерациях циклов было как можно меньше «скачков» указателей?

  • В каком виде лучше (с точки зрения оптимизации вычислений компиляторами) писать доступ к массивам?

Так:

#define _DO_MM(name, op1, op2)                                                             \
void name(libInt sr,  libInt scr, libInt sc, libFloat *res, libFloat *a, libFloat *b)      \
{                                                                                          \
    libFloat   *vr;                                                                        \
    libFloat   *vb;                                                                        \
    libInt      c;                                                                         \
    libInt      r;                                                                         \
                                                                                           \
    assert(res);                                                                           \
    assert(a);                                                                             \
    assert(b);                                                                             \
                                                                                           \
    while (0 < sr--)                                                                       \
    {                                                                                      \
        r  = scr;                                                                          \
        vb = b;                                                                            \
        c  = sc;                                                                           \
        vr = res;                                                                          \
        while (0 < c--)                                                                    \
        {                                                                                  \
            *vr++ op1 *a * *vb++;                                                          \
        }                                                                                  \
        a++;                                                                               \
                                                                                           \
        while (0 < --r)                                                                    \
        {                                                                                  \
            c = sc;                                                                        \
            vr = res;                                                                      \
            while (0 < c--)                                                                \
            {                                                                              \
                *vr++ op2 *a * *vb++;                                                      \
            }                                                                              \
            a++;                                                                           \
        }                                                                                  \
        res += sc;                                                                         \
    }                                                                                      \
}

_DO_MM(lib_mm,      =, +=)
_DO_MM(lib_add_mm, +=, +=)
_DO_MM(lib_sub_mm, -=, -=)

или Так:

#define _DO_MM(name, op1, op2)                                                             \
void name(libInt sr,  libInt scr, libInt sc, libFloat *res, libFloat *a, libFloat *b)      \
{                                                                                          \
    libInt      i;                                                                         \
    libInt      j;                                                                         \
    libInt      k;                                                                         \
                                                                                           \
    assert(res);                                                                           \
    assert(a);                                                                             \
    assert(b);                                                                             \
                                                                                           \
    for (i = 0; i < sr; i++)                                                               \
    {                                                                                      \
        for (k = 0; k < sc; k++)                                                           \
        {                                                                                  \
            res[sc*i + k] op1 a[scr*i] * b[k];                                             \
        }                                                                                  \
                                                                                           \
        for (j = 1; j < scr; j++)                                                          \
        {                                                                                  \
            for (k = 0; k < sc; k++)                                                       \
            {                                                                              \
                res[sc*i + k] op2 a[scr*i + j] * b[sc*j + k];                              \
            }                                                                              \
        }                                                                                  \
    }                                                                                      \
}

_DO_MM(lib_mm,      =, +=)
_DO_MM(lib_add_mm, +=, +=)
_DO_MM(lib_sub_mm, -=, -=)

З.Ы.: Больно не стукайте…

 , , omp,

shkolnick-kun
()

Рабочее место на самоизоляции

Галерея — Рабочие места

Поддался на провокацию и решил запостить свое рабочее место в местах заключения на самоизоляции.

Место оборудовал в комнате старшего сына.

Снимал на камеру Moto E4 Plus программой OpenCamera, соответственно раскрыта тема качества и того, и другого.

Дубовый стол, буковый стул.

Стул - неудобный новодел, хотел бы я стул как тут.

На столе:

  • системник,
  • старенький VGA-монитор,
  • древняя колонка,
  • ИБП,
  • девайс, над которым работаю,
  • рабочая тетрадь и прочая канцелярия,
  • командирские часы.

На компе Debian 10, открыта SystemWorkbench for STM32, отладка пока не запущена, нужно вычитать изменения.

И да, ЯЗАДОЛБАЛСЯУЖЕВЭТОЙСАМОИЗОЛЯЦИИЧЕРТОВОЙ!!!

 ,

shkolnick-kun
()

Python, asyncio, удаление ненужных очередей

Форум — Development

Привет ЛОР!

В данный момент пилю прототипы сервера, прокси и клиента для одного IoT стартапа. Суть такова: есть IoT девайс (сервер), к которому должно подключаться и интерактивно взаимодействовать мобильное приложение (клиент), поскольку девайс сидит за NAT-ом, то нужен прокси с белым IP, через который будет организована связь.

Вчера запилил прототип прокси в котором для каждого сервера/клиента создается очередь сообщений (asyncio.Queue) при первом обращении к прокси.

Мне для прототипирования достаточно просто создавать эти самые очереди, и хрен с ней, с текущей памятью, но…

Возникли вопросы:

  1. как правильно удалять эти самые очереди, если к ним давно небыло доступа на чтение?

  2. Есть ли какие-то паттерны для решения подобных задач?

 , , ,

shkolnick-kun
()

Воркспейс Eclipse, метаданные и git

Форум — Development

Привет, лорчане!

Есть воркспейс эклипса с несколькими проектами, который находится под контролем git.

Чтобы не следить за всякими там логами и прочими history я добавил в .gitignore весь каталог .metadata.

Как показала практика, это было зря, ибо имортировать кучу проектов при переносе на другое рабочее место - БОЛЬ!!!11

Реквестирую рецептов для .gitignore, которые позволят держать в git-е каталог .metadata в работоспособном состоянии, но без всяких логов и истории, которая и так есть в git.

 , , , ,

shkolnick-kun
()

Вот запилил тут прототипы алгоритмов фильтрации и статью с описанием

Форум — Development

Вы наверное заметили, что в последние пару месяцев не двигался проект нейроябеды…

Это случилось потому, что я занимался другим проектом.

В общем, накидал несколько прототипов «доработки фильтров Калмана напильником», и написал околонаучную статью о том, как это устроено.

Прототипы

Графомания

Милости прошу в issues к нашему шалашу.

 , ,

shkolnick-kun
()

В nim 1.0 поломали целочисленную арифметику в нескольких местах.

Форум — Talks

Заголовок самодостаточен.

Подробности

В общем, зря я провел несколько вечеров настраивая vscode в debian для работы с этим хипсторским языком.

Одно радует, - выходит! (c) Павел Воля

Пожалуй, подожду ещё несколько месяцев, пока они по крайней мере арихметику починят.

 , ,

shkolnick-kun
()

Вконтакте запускает нейромодератора

Форум — Talks

Вообще, заголовок самодостаточен, но специально для Ъ: Одна из самых ботонаполненных социальных сетей запилила новую функцию в форме для постинга: при попытке запостить оскорбительный коммент выводится сообщение, чтобы мамкин троль умерил свой пыл.

Это очень похоже на то, что я предлагал сделать тут

А линукс тут при том, что сервера под ним, и нейросети делаются из под него же.

Подробности

З.Ы. Шома, мы отстаем! Cast @Shaman007

 , ,

shkolnick-kun
()

В России создали беспилотный LADA-катафалк.

Форум — Talks

В дополнение ко вчерашней новости про теслу.

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

Я считаю, очень дальновидно:

Наш автомобиль создан для перевозки трупаков со скоростью 5 км/ч, тем, кто пока жив, советуем воспользоваться «теслой», после чего они смогут стать нашими клиентами.

>>Подробности

А линукс тут при том, что вряд ли они поставят на автопилот офтоп какой-нибудь.

А, да, КАК ТЕБЕ ТАКОЕ, ИЛОН МАСК???

 , ,

shkolnick-kun
()

Индия запустила луноход. Как тебе такое, Дмитрий Олегович?

Форум — Talks

Для Ъ: Вместо того, чтобы строить в Нью-Дели дилды из стекла и бетона, Индийская организация космических исследований (ISRO) успешно запустила к Луне автоматическую экспедицию «Чандраян-2» с небольшим луноходом на борту.

>>>Подробности

А линукс тут при том, что он по любому должен где-то там использоваться.

 , ,

shkolnick-kun
()

Нейроябеда тестовый топик

Форум — Talks

В этот топик будет постить Нейроябеда во время тестирования и отладки.

Перемещено tailgunner из development

 , ,

shkolnick-kun
()

Проект Нейромодератор

Форум — Development

Точнее «нейрокрыса»: т.к. модераторских полномочий у меня нет, я лишь могу сделать скрипты, которые будут отписываться в специальный тред

Тема навеяна Бан без причины (комментарий)

Суть такова: буду пилить набор скриптов для «выявления подозрительных сообщений», обучать буду на текстах с LORа, которые были удалены модераторами.

Когда доделаю попрошу модераторов оценить качество работы сабжа.

На данный момент:

  • скачан архив тредов с января по май 2019;
  • идет первичный анализ данных;
  • идет подготовка к разметке данных.

Проблема: модераторы указывают причины вручную (или не указывают совсем), соответственно:

  • есть сомнения в качестве разметки,
  • текстовую разметку придется превращать в разметку для классификации;

Для решения проблемы сформированы:

Да, разделитель в файлах - точка с запятой.

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

cast @jollheef, @Shaman007, @maxcom

Апдейт 1 (13.06.2019)

По результатам обсуждения тут решил:

  • В качестве положительных примеров брать удаленные модераторам вручную сообщения, для которых указаны нормальные причины а не всякий треш.

  • В качестве отрицательных - оставленные модераторами собщения из тех же топиков, что и удаленные.

  • Если данных хватать не будет - добью неудаленными из других топиков.

Пришлось немного переформатировать датасет (датафрейм pandas), т.к. раннее там не было ссылок сообщение-топик.

В эти выходные сделаю обучающую выборку и попробую сделать бинарный классификатор.

Если получится, - на следующей неделе буду пилить нейромодератора нейроябеду.

Апдейт 2 (16.06.2019)

Апдейт 3 (16.06.2019)

Апдейт 4 (16.06.2019)

Апдейт 5 (17.06.2019)

Апдейт 6 (22.06.2019)

Апдейт 7 (22.06.2019)

Апдейт 8 (27.06.2019)

Апдейт 9 (30.06.2019)

Апдейт 10(05.07.2019)

Апдейт 11(14.09.2019)

Апдейт 12(08.12.2019)

Проект на GitHub

Тестовый тред

 , ,

shkolnick-kun
()

Что поставить на комп с Ryzen 2400G?

Форум — Linux-install

Привет, ЛОР, есть один комп (купил для домашнего датасаенса), на нем:

  • Ryzen 5 2400G;
  • Мамка с b350f;
  • 2060 rtx;
  • SSD 120Gb;
  • HDD 3Tb.

Специально взял APU, чтобы попробовать разные извращения с ядром и IOMMU посчитать и на AMD и на Nvidia.

В итоге пока не снял «зеленую» видеокарту - ловил панику из-за iommu, пришлось указать в опциях запуска ядра iommu=pt, панику это убрало, но при каждой загрузке ещё сыплются ошибки, связанные с iommu.

Вайфай - tp-link archer, его пока даже не пытался запустить, ибо в курсе, что дров в основной ветке ядра еще нет.

Насколько я понял, поискав темы про рязань на ЛОР, для стабильной работы мне нужен дистрибутив с ядром 4.19+, таковых я пока нашел только debian testing и manjaro.

В общем, ЛОР Ай нид хэлп!

Для субботней BDSM-сессии с компом мне нужны рекомендации по:

  • Выбору дистрибутива (напишите, что еще подойдет).
  • Параметрам загрузки Ядра.
  • Установке ROCm для AMD.
  • Установке блоба для 2060 rtx.
  • Установке драйвера вайфай.

Желательно сделать это все штатными средствами дистрибутива, чтобы ничего не отваливалось при обновлениях, причем - не приходя в сознание.

И да, поверх этого всего должна будет работать Anaconda, в которой будут keras-gpu/tf, pytorch, plaid-ml, etc.

Да, обычно пользуюсь debian-based дистрибутивами, но не против попробовать легкий BDSM void, manjaro, etc.

 , , ,

shkolnick-kun
()

BuguRTOS-4.0.0

Новости — Open Source
Группа Open Source

Седьмого января 2019 года вышла встраиваемая операционная система реального времени BuguRTOS-4.0.0.

( читать дальше... )

>>> Подробности

 , , ,

shkolnick-kun
()

Python, Qt, Графики и таблицы.

Форум — Development

Привет, LOR.

Реквестирую виджеты PyQt (А лучше - Pyside) для рисования таблицы и графика.

Суть такова:

Нужно визуализировать временные ряды на интервале в несколько месяцев с дискретностью пол секунды, формы представления таблица и график по типу pyplot, только с возможностью «быстрого» обновления.

Данные на входе в pandas.DataFrame.

На экране небольшой кусок данных, по кускам перемещаемся кнопками или мышью.

 , ,

shkolnick-kun
()

Как вам такое, фанбои Илоны Марковны?

Форум — Talks

Согласно недавно проведенному опросу Илон Маск обладает наихудшей фанбазой на этом глобусе.

 , ,

shkolnick-kun
()

Мир «1884» и «Права прочесть» уже скоро.

Форум — Talks

Вот, наткнулся на статью http://perevodika.ru/articles/1199419.html

Для Ъ:

Технологические гиганты не только следят за тобой %username% и сливают твои данные и их аналитику ЦРУ, АНБ, черту лысому; они еще и злоупотребляют полученной информацией для достижения политических целей некоторых групп людей (никогда такого не было, и вот опять, ЛОЛ).

Более того, идет стремительное сращивание корпораций и правительственных структур, скоро будет невозможно понять, где заканчивается твоя любимая социальная сеть и начинается ЦРУ.

Все это происходит при массированном использовании нейроночек и машобчика для анализа больших массивов даанных.

В общем, всех предупреждали, но всем - как обычно.

А линукс тут при том, что он - основная система для датасаентистов по всему миру.

 , , , ,

shkolnick-kun
()

Debian 9 крашится при выходе из hibernate.

Форум — Desktop

Проблема описана в заголовке.

Гугление не добавило ничего кроме https://unix.stackexchange.com/questions/377973/hibernation-resume-fail-on-li...

Но это оказалось бесполезно.

Ядро 4.9.0-6-686 без PAE. uswsusp не установлен.

 , ,

shkolnick-kun
()

Linux install. Live USB. Kernel panic

Форум — Linux-install

Нужно поставить какой-нить дистриутив на HP Probook 4320s, до этого туда отлично вставали всякие *buntu и debian.

В прошлые выходные попробовал завести на нем несколько вариантов void, debian, из KDE/Cinnamon/Gnome 32/64bit на нем завелся только debian 64bit cinnamon, остальное паникует при загрузке.

Ставить страшно, ибо в прошлый раз 64-разрядная система, установленная на винт, спонтанно падала в панику, так, что даже на кнопки не реагировала.

Войды проверил еще и на Acer extensa 2519, паникуют при попытке доступа к squashfs, дебианы дополнительно проверять не стал ибо задолбало...

Образы на флешки заливал с Mint и его встроенного мастера заливки образов...

Это у меня руки искривились, или сейчас так дистрибутивы делают?

Что делать?

Как поставить Linux на строе железо, которое нормально работает со старыми дистрибутивами...

 ,

shkolnick-kun
()

Micro CLI. Проект выходного дня.

Форум — Development

Интересно существуют ли фрилансеры, которые пишут не говнокод?

В общем, переписывал очередную прошивку, сделанную очередным фрилансером, прикрутил релиз-кандидат BuguRTOS (да, я считаю, что система дотсаточно надежна для продакшона)...

Пишу себе пишу, и вот понадобился мне там CLI через USB CDC...

Поискал на GitHub, нашел много реализаций, но либо они не вписываются в архитектуру, либо там лицензия GPL без исключений, либо это вообще не CLI, а, например, нейросетевой фреймворк...

В итоге, написал свой проект выходного дня.

P.S. А нейросетевой фреймворк мне понравился, попробую оживить как-нибудь во время отпуска...

 ,

shkolnick-kun
()

RSS подписка на новые темы