Хочу рассказать о том, как занимался оптимизацией card raytracer - минимального рейтрейсера, код которого умещается на визитке.
Точнее, это развёрнутая для лучшей читабельности версия, которая в форумной ветке
использовалась как тест скорости разных языков.
Когда я наткнулся на эту ветку, я как раз изучал компиляторы Cи, и конечно немедленно вознамерился всех порвать обогнать. В результате действительно обогнал, но с нарушением правил - слегка поправив структуру данных.
Тем не менее, это хороший пример того, как можно "заточить" код под векторизацию, с сохранением читабельности и умеренным ростом объёма и сложности. Я расскажу, какие есть варианты векторизации, как перестроить код и данные, и наконец, как переложить на компилятор черновую работу по кодогенерации - используется автовекторизация, векторные расширения и совсем немного интринсики.
Наверное, статья в большей степени полезна новичкам, но и опытные разработчики (по привычке с 2000-го года пишущие SIMD-код интринсиками) могут найти что-то новое.
Компилятор - в основном Clang, можно GCC, в конечном итоге я адаптировал и под MSVC.
Пользователь
Облака атомных колебаний
В этой заметке мы поговорим о том, что такое молекулярная динамика, и как её результаты можно реализовать в виде облаков распределений атомов.
Как мы с женой повышали ее качество жизни с диабетом при помощи ИТ
Всем привет! Меня зовут Андрей. Сегодня я расскажу о проекте, который делал для своей жены и при активном ее участии. Это устройство на Raspberry Pi с опенсорсным софтом для контроля сахара в крови с помощью данных мониторинга и команд, отдаваемых инсулиновой помпе.
Оговорюсь, что все это мы делали на свой страх и риск. Зарегистрированных медицинских устройств такого назначения не существует. Но мы не были готовы ждать, пока найдется энтузиаст, который разработает коммерческий инструмент и пройдет весь путь медицинской сертификации, чтобы продукт появился в магазинах.
Как работает автоматическая регулировка усиления
Привет, Хабр! Сегодня изучим автоматическую регулировку усиления, АРУ, на примере гитарного эффекта компрессора. Это прибор для сжатия не воздуха, а электрического сигнала. Из слабого сигнала он делает сильный, а из слишком сильного просто сильный.
Педаль на основе схемы культового DOD 280 я планирую не только собрать, но и немного усовершенствовать, добавив эффект тремоло (амплитудное вибрато). Дело в том, что и компрессор, и тремоло построены на основе усилителя с управляемым усилением. Для тремоло нужно добавить только генератор медленных колебаний (LFO, low frequency oscillator).
Первый блин Чарльза Циммермана. Необычные самолёты 1930-х
Имя аэродинамика Чарльза Циммермана мелькает на самых разных страницах истории американской авиации, да и в космонавтике он оставил свой след. Любимой темой Циммермана были аппараты вертикального взлёта и посадки, да не банальные вертолёты, а что-нибудь неизменно экзотическое. Но самым необычным его детищем было, пожалуй, самое первое
Прионная болезнь. Романтический ужас
История открытия прионных болезней представляет собой одну из самых романтических страниц в истории борьбы человека против инфекционных болезней.
В свою очередь, история исследования прионов насчитывает чуть более пятидесяти лет. Открытие этих инфекционных агентов сыграло выдающуюся роль в формировании представления о медленных инфекциях, впервые представив доказательства распространения медленных инфекций среди не только животных, но и людей.
Прионные инфекции отличает длительный инкубационный период
(в течение нескольких месяцев и даже лет), медленно прогрессирующий характер течения, необычность поражения органов и тканей и неизбежный летальный исход.
В мире в настоящее время учёным и врачам знакомы шесть прионных заболеваний животных: скрепи, трансмиссивная энцефалопатия норок, хронический синдром истощения оленей и лосей, коровье бешенство.
Известны также четыре прионных болезни человека: куру, болезнь Кройтцфельда-Якоба, синдром Герстманна-Штреусслера-Шейнкера и фатальная семейная бессонница. В данном очерке рассказ будет о трёх самых известных и наиболее распространённых прионных болезнях человека и животных: скрепи, куру и болезни Кройтцфельдта-Якоба.
Легендарные и самые любимые научно-популярные журналы 20 века
Часто ли вы заглядываете в свой почтовый ящик? Не тот, который на сервере, а тот, который висит на первом этаже и открывается маленьким ключиком. Сейчас там можно найти разве что кучу рекламной макулатуры да парочку счетов.
Раньше же почтовый ящик был, не побоюсь этих громких слов, источником знаний. Ведь туда приходили письма, газеты и журналы. Писем мне в школьные годы, конечно, никто особо не писал. А вот газеты и журналы приходили регулярно. Это сейчас нам доступно гигантское количество разнообразных информационных ресурсов, а в те годы каждый новый выпуск научно-популярного журнала был для меня маленьким долгожданным чудом. Он таил в себе целую россыпь сокровищ и заботливо размещался на книжной полке. Каждый выпуск я перечитывал по нескольку раз и до сих пор узнаю те номера по обложкам.
Эксперименты с карбидом кремния (SiC): замедление переключения SiC-MOSFET
Из статьи вы узнаете особенности применения карбид-кремниевых MOSFET-транзисторов и диодов, как выбрать элемент и сравнение с кремниевыми (Si) приборами, и, самое главное результаты моих экспериментов и исследований в замедлении переключения SiC-транзисторов, проведённых на моей недавней разработке – источнике питания для солнечной энергетики.
Под катом немного аналитики и практики в области силовой электроники – добро пожаловать.
Стабилизированный блок питания для тёплых ламповых схем
Привет, Хабр! Сегодня соберём трансформаторный источник питания с мостовым выпрямителем и рассмотрим два типа линейных стабилизаторов напряжения. На транзисторном повторителе напряжения и на специализированной микросхеме.
А самое главное, что будем не только паять, но и разбираться, как эти электронные цепи работают. Это нужно не только для того, чтобы найти и устранить неисправность в случае, если она есть, но и определить, какая схема годится для нашей цели, и что в схеме можно изменить, чтобы она работала так, как нам надо.
Сигналы глобальных навигационных систем
Алгоритмы обработки навигационных сигналов определяются математической моделью навигационного сигнала. И на этом шаге современные глобальные спутниковые навигационные системы преподносят нам сюрприз. Оказывается, что разные системы используют разные сигналы. Более того, каждый спутник не ограничивается одним типом сигнала, а излучает целый набор. Так на новых спутниках ГЛОНАСС можно выделить до 14 разных сигнальных компонент! А в совокупности по всем системам типов сигналов больше 50.
Попробуем разобраться с этим многообразием.
Hi-Tech DIY: Турбореактивный микрогенератор электричества. Изучаем возможности
Многие видные умы современности бьются над тем, как решить проблему энергетической зависимости от источников питания.
В прошлой статье мы уже рассмотрели возможность создания самодельного двигателя внутреннего сгорания, который позволил бы решить эту проблему, в том числе и в случае возникновения каких-то глобальных потрясений.
Однако прошлые рассмотренные варианты были достаточно габаритными. В этой же статье мы рассмотрим гораздо более интересное устройство, которое является поистине миниатюрным.
Вы хотели настоящий хай-тек? «Таки его есть у нас» :-)
Обзор методов множественного доступа в беспроводной связи. Часть 1. Как разделить спектр: Частотно-временное разделение
В настоящее время происходит бурное развитие технологий беспроводной связи: новые поколения сотовой связи (5G, 6G), интернет вещей, спутниковая связь и т.д. Одна из ключевых задач, стоящих перед разработчиками новых систем связи – обслуживание одной радиосистемой как можно большего числа абонентов, т.е. задача эффективной организации множественного доступа. Традиционные технологии временного (TDMA), частотного (FDMA) или кодового (CDMA) разделения пользователей уже не способны удовлетворить возрастающие потребности современного мира, поэтому перед разработчиками стоит острая необходимость в разработке новых, более эффективных и ёмких методов множественного доступа к радиоэфиру. Этой статьёй запускается целая серия, поэтому следите за обновлениями нашего блога. В этой серии статей я попытаюсь дать подробный обзор методов множественного доступа, как широко используемых на данный момент, так и новых, находящихся на стадии теоретической или практической разработки.
В первой части мы рассмотрим технологии множественного доступа, использующие разделение абонентов по времени, по частоте или комбинированное частотно-временное разделение – начиная от традиционных TDMA и FDMA и заканчивая перспективными модификациями OFDM, а также технологиями SEFDM и OTFS.
Мои вопросы работодателю, когда подаюсь на разработчика
За последние 10 лет я поменял 3 работы, прособеседовался с 10+ компаний на позицию разработчика (software engineer) и вел переписку с HR/рекрутерами из нескольких десятков фирм. По ходу дела заметил, что вопросы, которые я задаю на собеседовании с менеджером/командой или с HR, повторяются, и решил их структурировать. Некоторые из них являются общими, и их может задать кандидат на почти любую вакансию; другие касаются только вакансий для программистов. В этой статье поделюсь с вами наиболее типичными и важными вопросами, которые, на мой взгляд, может задать соискатель потенциальному работодателю.
Поддержка mTLS в своём Service Mesh: чему мы научились
Салют! На связи команда платформы Авито, сегодня будем рассказывать про service mesh.
У Авито самописный service mesh — сначала это был Netramesh, который потом трансформировался в собственный control-plane и envoy в качестве data-plane. В начале этого года я добавлял в него поддержку mTLS, а сейчас мы успешно раскатываем это решение для межсервисного взаимодействия.
Взаимная аутентификация делает сервисы безопаснее и помогает защитить передаваемые по сети данные. Такая фича уже есть в разных готовых решениях. Тем не менее, я узнал для себя ряд интересных моментов при создании своей реализации и теперь хотел бы поделиться этим опытом с вами.
Расчёт электрических цепей методом структурных чисел для детей и взрослых
Когда я узнал об этом подходе, то первым ощущением было чувство, что меня где-то обманывают - или это какая-то ошибка и заблуждение, или от меня что-то скрывали все предыдущие годы обучения. Метод выглядел эффективным и удивительно простым в применении, но при этом я никогда не слышал о нём раньше. Как такое могло случиться?
Когда я говорю о простоте, то это не фигура речи. Если бы вы сидели напротив меня я уверен, что за 15 минут я научил бы ЛЮБОГО из вас. Ни знаний физики, ни знания математики не требуется. Это похоже на магию. Вы делаете простые операции с натуральными числами и ... в конце получаете все необходимые параметры схемы. В этом сила, красота и, возможно, проклятие этого подхода.
Если бы вы сидели напротив меня... но вы не сидите, и не так-то просто изложить всё это письменно. Я постарался. Если у меня получилось, то через 20 - 30 минут вы сможете рассчитать ЛЮБОЙ пассивный четырёхполюсник с линейными элементами.
Итак, засекаем время.
Контекстные многорукие бандиты для рекомендации контента, или Не Бернулли единым
Привет, Хабр! Меня зовут Александр Сухочев, я занимаюсь машинным обучением и руковожу командой рекомендаций и развития сервисов ВКонтакте. Сегодня хочу поделиться нашим опытом и результатами внедрения контекстуальных многоруких бандитов для рекомендации контента на примере игр и стикеров.
Статья состоит из четырёх частей, переходите сразу ко второй или третьей, если знакомы с проблематикой, или читайте по порядку, чтобы составить полную картину:
Введение расскажет о том, какие бывают подходы к построению рекомендательных систем и при чём здесь многорукие бандиты — это раздел для тех, кто раньше не был знаком с данным подходом.
Основные алгоритмы решения задачи многорукого бандита: эпсилон-жадный подход, сэмплирование Томпсона, Upper Confidence Bound.
Алгоритм контекстных многоруких бандитов — о контекстных многоруких бандитах и способе их обучения в частном случае, который мы использовали в нашем решении.
Заметки о практической реализации — о тонкостях внедрения, бизнес-требованиях и результатах на примере сервиса рекомендации игр и стикеров.
Как спроектировать фильтр электромагнитных помех для DC-DC преобразователя?
Поставщики компонентов наперебой рассказывают, как просто при помощи их изделий создать готовое к промышленному выпуску решение. После посещения одного из таких мероприятий от Wurth Electronic по проектированию пассивных фильтров электромагнитных помех (ЭМП) у меня появились смутные сомнения по поводу методики подбора компонентов, и мы решил провести собственное исследование.
Сегодня мы постараемся рассеять маркетинговый туман и внести осознанность в проектирование фильтров ЭПМ для импульсных преобразователей (DC-DC).
Автоматизация тестирования при разработке прошивок радиоэлектронных устройств
Занимательный факт. Исходный код программы бортового управляющего компьютера лунного модуля Аполлон 11 содержит 64830 строк. Исходные коды прошивок навигационного приемника, которые мы в МЭИ разрабатываем последние десять лет, содержат 217510 строчек на C++ и 181236 строчек на SystemVerilog. И я всё жду, когда это количество перейдет в качество.
Встраиваемый софт - это не только прошивки небольших контроллеров, он может быть объемным и сложным. Его разработка, например, для современных систем связи и навигации, может стоить дороже разработки схемотехники, корпуса или даже запуска в производство интегральных микросхем.
Едем на солнечной энергии. Солнечное зарядное устройство для электровелосипеда. Часть 1
Здравствуйте, уважаемые читатели Хабра. Меня зовут Илья.
Одним из занятий, которому я посвятил значительную часть своей жизни - является электротранспорт.
Особое внимание я уделяю экзотике в сфере электротранспорта: электрические летательные аппараты, использование солнечной энергии для заряда аккумуляторов и т.д.
Второй год я эксплуатирую экспериментальное зарядное устройство для аккумулятора электровелосипеда на складных солнечных панелях. Они используется как основной источник энергии для передвижения в многодневных автономных путешествиях по глухим местам нашей необъятной на электровелосипеде.
Всего на электровелосипеде преодолено более 92 тыс. км за 10 лет, из них 3000 км было преодолено на солнечной энергии (2021-2022 г), поэтому накопился определенный инженерный и эксплуатационно-технический опыт, которым есть возможность поделиться в данной статье.
Едем на солнечной энергии. Превращаем повышающий DC-DC преобразователь в солнечный контроллер. Часть 2 (Редакт. 9.04.23)
И снова здравствуйте, уважаемые читатели!
Первая часть статьи касалась общей информации по главным аспектам путешествия на солнечной тяге, вторая - будет более узкоспециализированной, рассчитанной на пользователей, имеющих некоторый инженерный опыт в сфере электроники.
Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность