
Как вычислить экспоненциальную функцию быстро и с минимальной погрешностью? Пишем векторизованный код.
Пользователь
Как вычислить экспоненциальную функцию быстро и с минимальной погрешностью? Пишем векторизованный код.
Меня изрядно забросали помидорами в первой части этой статьи. Поэтому сегодня не будем об “ошибках”. Давайте просто посмотрим, что ещё “болит” у айтишников в английском, и как можно эти боли “вылечить”.
Нас ждёт мозговыносящая смесь 64/32-битного ассемблера и старого-доброго C++. Мы сделаем собственную реализацию... Волокон (fibers) без вызова Win API и звонков в службу спасения.
В команде есть человек, который всё делает сам, знает больше всех, но категорически не делится знаниями? Возможно, перед вами не суперсеньор, а «накопитель риска» — точка отказа в человеческом обличье. Разбираемся, откуда берутся такие одиночки, почему их нельзя поощрять и как выстраивать культуру, где знания не замыкаются на одном человеке.
Мотивация профессионалов — одна из сложных и деликатных тем в корпоративном управлении. Это не новички, не линейные сотрудники и не «голодные» карьеристы, стремящиеся доказать свою значимость. Это зрелые ценные специалисты, уже достигшие определённого уровня компетентности, признания и зачастую — финансового комфорта.
Тем не менее, именно в этой группе часто наблюдаются профессиональное выгорание, потеря смысла в работе, отсутствие вовлечённости, и даже скрытое сопротивление изменениям.
На технических интервью я нередко вижу таких людей - профессиональных и компетентных, но без искры в глазах. Как будто они занимаются не своим делом. В чём же причина?
Современный мир движется к объединению технологий: промышленной автоматизации и искусственного интеллекта. Но для меня, занимающегося программированием в сфере АСУ ТП, было трудно понять, как на ПЛК, с его скромными техническими характеристиками и средой Codesys или TIA Portal можно применить технологии ИИ. На форумах готового решения не нашел, но проникся мыслью, что лучше обучить нейросеть на Python, а затем готовые веса и структуру перенести в Codesys. Я решил использовать OpenAI Gym, задачу CartPole. Это классическая задача обучения с подкреплением, где цель агента состоит в том, чтобы удерживать шест в вертикальном положении, выбирая действия (движение влево (0) или вправо (1)), на основе текущего состояния системы. План действий: для получения весов написать класс нейросети на PyTorch с использованием пакет DEAP. После этого написать Modbus TCP сервер на Python с окружающей средой CartPole, подсоединиться к нему с помощью ПЛК. Полученные данные обрабатывать в ПЛК и передавать сигнал, который будет управлять тележкой, на сервер.
В этом посте будет разобрано, как написать приложение на Rust с применением самого минимального API, возможности которого искусственно ограничены (например, не применяется динамическое выделение памяти). Предполагается, что читатель немного знаком с языком Rust.
Этот текст – дополнение ко второй части лекции про особые линейные системы.
Сравниваем расчет многослойной стенки в сеточной модели и расчет по формуле ТАУ.
Хочу рассказать о том, как занимался оптимизацией card raytracer - минимального рейтрейсера, код которого умещается на визитке.
Точнее, это развёрнутая для лучшей читабельности версия, которая в форумной ветке
использовалась как тест скорости разных языков.
Когда я наткнулся на эту ветку, я как раз изучал компиляторы Cи, и конечно немедленно вознамерился всех порвать обогнать. В результате действительно обогнал, но с нарушением правил - слегка поправив структуру данных.
Тем не менее, это хороший пример того, как можно "заточить" код под векторизацию, с сохранением читабельности и умеренным ростом объёма и сложности. Я расскажу, какие есть варианты векторизации, как перестроить код и данные, и наконец, как переложить на компилятор черновую работу по кодогенерации - используется автовекторизация, векторные расширения и совсем немного интринсики.
Наверное, статья в большей степени полезна новичкам, но и опытные разработчики (по привычке с 2000-го года пишущие SIMD-код интринсиками) могут найти что-то новое.
Компилятор - в основном Clang, можно GCC, в конечном итоге я адаптировал и под MSVC.
VS Code сам по себе не нуждается в представлении, однако многие программисты, привыкшие в нём разрабатывать, упускают одну очень полезную вещь. Благодаря встроенным возможностям по разработке расширений можно легко автоматизировать многие рутинные задачи — например, те, что выполняются в командной строке.
В этой статье, второй в серии материалов о нестандартных возможностях VS Code, разберём инструменты для создания интерактивных расширений, которые я применяю в работе над решениями productivity suite платформы МойОфис. Под катом мы рассмотрим веб-панели и их разновидность – веб-представления, а также другие стандартные средства VS Code API, такие, например, как элементы строки состояния (кнопки и сообщения).
В последние годы на рынке труда часто можно услышать термин "T-shaped" специалист. Компании ищут таких людей, а кандидаты добавляют эту характеристику в свои резюме. Давайте разберёмся, что это значит и почему этот подход так популярен.
Фондовый рынок – это океан возможностей. Но не только позитивных! Чудесные истории роста на нем случаются никак не реже сказочных глупостей или обескураживающих простотой и критичностью ошибок, имеющих иногда глобальное влияние.
В этой публикации мы расскажем о четырех крупных катастрофах на фондовом рынке как о напоминании: «черный лебедь» может прилететь в любую минуту. У каждой катастрофы есть конкретная причина, большая или малая — чья-то невнимательность, вышедшие из-под контроля дурные привычки, техническая ошибка, порочность государственной системы, приводящая на ключевые позиции некомпетентных людей.
Но не чтобы морализировать, конечно. Просто каждому, кому интересен фондовый рынок, нужно помнить: мелкая ошибка, твоя или чужая, может стать источником сказочного обогащения или ужасного провала. И простые стратегии, умение держать себя в руках, а также понимание работы когнитивных заблуждений, могут оказаться полезнее даже многолетнего опыта.
MistralAI, вслед за LLaMA 3.1 405B, представила свою флагманскую модель с открытыми весами Mistral Large 2 (Mistral-Large-Instruct-2407). Mistral всегда отличалась очень качественными открытыми моделями, и, судя по всему, эта будет не исключением.
Веса открыты, размер контекста составляет 128k, размер модели 123B, модель была обучена на 80 языках программирования и десятках естественных языков, включая русский. Модель хорошо себя показывает как в рассуждениях, так и в математике и программировании.
Привер, Хабр!
В копилку статей про DeepSeek, которых здесь уже великое множество, хочу забросить ещё пять копеек в виде практического отчёта о инсталляции на Xeon, о котором меня попросили в комментариях к посту «Мануал по запуску полной модели DeepSeek-R1 локально...». Кому любопытно — может заглянуть под кат, ну а тем, кто уже выполнил упражнение по установке — вероятно будет совершенно неинтересно.
В июне 1978 года организаторы крупной математической конференции в Марселе, Франция, объявили о последнем добавлении в программу. Во время обеденного перерыва математик Роджер Апери представит доказательство того, что одно из самых известных чисел в математике — «дзета от 3», или ζ(3), как пишут математики, — не может быть выражено в виде дроби двух целых чисел. Оно оказалось тем, что математики называют «иррациональным числом».
Участники конференции отнеслись к этому скептически. Дзета-функция Римана является одной из центральных функций в теории чисел, и математики на протяжении веков пытались доказать иррациональность ζ(3) — числа, которое дзета-функция выдаёт при входном значении 3. Апери, которому было 61 год, не считался ведущим математиком. У него был говор, напоминающий деревенский, и репутация провокатора. Многие участники, предполагая, что Апери затеял сложный розыгрыш, пришли готовые ответить ему тем же. Как позже вспоминал один математик, они «пришли, чтобы навести шороху».
В последние месяцы всё чаще слышим про «reasoning-модели», способные не просто продолжать текст, а действительно шаг за шагом решать сложнейшие задачи цепочкой рассуждений (chain-of-thought). Впервые такой подход эффектно показали в OpenAI o1, но, к сожалению, подробности там остаются секретными. Недавно же команда DeepSeek наделала шуму с открытыми вариантами R1 и R1-Zero, созданными поверх их собственной большой MoE-модели DeepSeek-V3. В этом посте я не стану углубляться в вопрос «чья модель лучше — o1 или R1». Зато разберу, какие главные технические детали стоят за R1, почему Zero-версия выглядит особо захватывающе, и как именно авторам удалось обучить модель мыслить.
Недавно у меня возникла необходимость непременно вырезать фрагмент из видео без перекодирования, и, разочаровавшись в очередной раз в LosslessCut, я отправился искать альтернативы.
На Reddit-е я наткнулся на пост, где утверждалось, что для этого можно использовать скрипт mpv-cut, который работает без внешнего графического интерфейса и дополнительных программ.
При ближайшем рассмотрении mpv-cut оказался скриптом на lua, который позволял вырезать кусок из видео прямо в процессе просмотра в плеере mpv. Я как-то не предполагал, что mpv-плеер при всей своей минималистичности поддерживает скрипты, которые позволяют расширять его функциональность. И решил это дело тщательно разъяснить.