Как загрузить GPU реальными инженерными вычислениями? Давайте я расскажу, как с помощью Julia наконец смог втащить высокопроизводительные вычисления в свою немудрёную инженерную работу. Это был долгий путь, но мне кажется, что Julia стала моим лучшим другом в мире GPU/HPC.
Julia *
Высокоуровневый высокопроизводительный язык
Новости
Биорадиолокация в Engee
Привет, Хабр! По своей профессиональной деятельности я занимаюсь моделированием и разработкой цифровых алгоритмов в области радиолокации. Однако универ закончил по специальности «Биотехнические и медицинские аппараты и системы», поэтому всегда хотел совместить эти два направления. И для этого как нельзя лучше подходит область биорадиолокации.
Биорадиолокация – набирающий популярность бесконтактный метод измерения жизненно важных показателей (ЖВП) человека, таких, как сердцебиение и дыхание. В отличие от контактных систем радары не нуждаются в прикреплении каких-либо датчиков на поверхность тела пациента.
В статье разберём построение относительно простой, но в то же время полезной модели биорадара. Модель разбита на две части. Первая часть посвящена моделированию перемещения грудной клетки человека. Вторая часть модели – про разработку FMCW-радара с последующим анализом его эффективности и применимости для обнаружения ЖВП. Итак, начнем…
Engee – лучшая альтернатива MATLAB, Simulink, Amesim
Современные реалии рынка инженерного ПО в России бросают вызов техническим специалистам любого уровня, так как перед ними встает задача найти отечественную альтернативу привычным CAE-системам для технических вычислений и модельно-ориентированного проектирования, таким как MATLAB, Simulink, Amesim. Это непросто, поскольку предприятиям нужно максимально сохранить привычный рабочий процесс и имеющиеся наработки, в том числе многолетние, и при этом безболезненно внедрить новую систему на рабочие места и обучить сотрудников.
Мы можем с уверенностью заявить, что соответствующая таким требованиям альтернатива MATLAB, Simulink, Amesim найдена, и это среда Engee.
Моделирование блэкаутов: какой софт сейчас используют российские электроэнергетики?
Привет, Хабр! Всем известно, на чём программисты пишут код, — большинство из вас хоть раз слышали о Python, Java или C++. Но задумывались ли вы когда-нибудь, какими инструментами разработки пользуются инженеры-электроэнергетики? Ведь их задача — не просто написать код, а смоделировать целую энергосистему и внедрить в нее новый алгоритм без катастрофических последствий. Сегодня мы хотим погрузить вас в мир электроэнергетики и рассказать про то, какой российский софт пришел на смену зарубежному.
Истории
Шесть причин выучить Julia в 2024 году
В этом году Экспонента вместе со средой разработки Engee стали информационными партнерами бесплатной Летней школы Julia. Это уникальное событие для России, ведь еще никто не проводил онлайн-курсы по этому современному и очень перспективному языку программирования. Мы уверены, что в современных политических и экономических реалиях за этим языком видится большое будущее, особенно в научной и инженерной средах, и приглашаем всех желающих принять участие в этом важном событии.
А чтобы подогреть ваш интерес, мы подготовили небольшую статью (опирались на этот материал, спасибо авторам, и добавили много тезисов на основе нашего опыта с Julia) с описанием основных причин, почему вы должны срочно заинтересоваться Julia и подать заявку на Летнюю школу. Приятного чтения!
Искусство мозговых волн. Как ученые визуализируют вызванные потенциалы: результаты опроса
Меня зовут Владимир Михеев, я работаю в лаборатории Вычислительный когнитивных наук Университета Штутгарта. Мы разрабатываем библиотеки для анализа, симуляции и визуализации ЭЭГ данных на языке Julia под зонтичным брендом Unfold.
В социальных и психологических науках уже лет десять бушует кризис невоспроизводимости: результаты многих исследований не повторяются. Обычно уделяют внимание статистическим методам, размерам выборки, честности ученых. Мы решили обратить внимание на визуализацию. Это не только вопрос о красоте графиков, это еще и серьезный вопрос о корректности представления данных. И, как показывает наше исследование, ученые часто допускают при этом досадные ошибки.
Эта статья может быть вам полезна если вы:
• Хоть раз рисовали потенциал вызванного действия.
• Визуализируете временные данные.
• Радеете за воспроизводимость научных исследований.
• Разрабатываете аналитическое ПО.
• Делаете красивые графики и хотите, чтобы они были корректными.
Julia. Метапрограммирование и макросы
Julia является одним из самых востребованных математических языков программирования. Однако некоторые особенности этого языка, которые обеспечивают гибкость и позволяют расширять её области применения, не столь часто используются программистами. В этой статье пойдёт речь о механизме макросов, который выгодно её отличает от прочих скриптовых языков программирования.
Механизм макросов используется в Julia довольно часто. Макрос при использовании начинается с символа @
и имеет вид @show
, @benchmark
… А также, в неявной форме, макросами являются регулярные выражения r"[a..z]"
(это макрос с полным именем r_str), а также многочисленные другие способы применения, включая примеры Modia.jl / Unitful.jl с макросом u_str
, где физическая величина «вшита» в число:
L = 0.8u"m",
m = 1.0u"kg",
d = 0.5u"Nms/rad",
g = 9.81u"m/s^2",
Кратко про FP в Julia
В отличие от императивного подхода, где выражается последовательность операций, функциональное программирование (FP) сосредотачивается на "что" и "как" должно быть вычислено, а не на "когда". Это приводит к более чистому, модульному и легко тестируемому коду.
Juliа поддерживает анонимные функции, замыкания, и имеет систему типов, которая позволяет писать высокооптимизированный код без потери читаемости и удобства.
Временные ряды с Julia с библиотекой TimeSeries.jl
Julia позволяет достигать скорости, сравнимой с C, что делает её хрошим выбором для временных рядов.
Пакет TimeSeries
предоставляет удобные методы для работы с данными временных рядов в Julia.
Julia в машинном обучение: база
Привет, Хабр!
Julia зародилась в 2012 году, благодаря усилиям четырех энтузиастов-разработчиков: Джефф Безансон, Стефан Карпински, Вирал Би Шах, и Алан Эдельман. Они стремились создать язык, который сочетал бы легкость Python, скорость C, динамичность Ruby, лингвистическую чистоту Lisp и возможности математических систем вроде Matlab. Им удалось! Julia – это слияние простоты и мощи.
Благодаря JIT-компиляции, код Julia может выполняться с скоростью, сопоставимой с кодом, написанным на C или Fortran.
Automate the boring stuff with Julia
Считается, что Julia – это нишевый язык созданный для лабораторий, научных симуляций и HPC. Хотя на самом деле благородя свой экспрессивности и динамизму Julia можно и нужно использовать для автоматизации и скриптинга. Давайте на паре простых примеров посмотрим как Julia можно использовать для решения рутинных задач.
Julia 1.9. Основные моменты
7-го мая 2023, после 3-х бета-версий и 3-х релиз-кандидатов наконец выпущена новая версия языка программирования Julia 1.9. Мы хотели бы поблагодарить всех участников, разработчиков этого выпуска и всех тех, кто тестировал и помог выявить проблемы в предварительных выпусках. Без вас этот выпуск был бы невозможен.
Полный список изменений можно найти в файле release-1.9/NEWS.md, а здесь мы дадим развернутый обзор некоторых ключевых моментов выпуска.
Mojo может стать крупнейшим достижением в области разработки языков программирования за последние десятилетия
Mojo — это новый язык программирования, основанный на Python, который устраняет имеющиеся у него проблемы производительности и развёртывания.
Об авторе: Джереми Говард (Jeremy Howard) — Data Scientist, исследователь, разработчик, преподаватель и предприниматель. Джереми является одним из основателей исследовательского института fast.ai, занимающегося тем, чтобы сделать глубокое обучение более доступным, а также он является почётным профессором Университета Квинсленда. Ранее Джереми был выдающимся научным сотрудником в Университете Сан‑Франциско, где он был основателем Инициативы Уиклоу «Искусственный интеллект в медицинских исследованиях».
Ближайшие события
Genie Builder v0.2: ускорьте разработку вашего приложения на Julia
В этой статье представлен перевод руководства: "How to quickly turn your Julia code into a web app with Genie Builder". В статье пойдет речь о новом инструменте быстрой разработки web-приложений на основе Ginie Framework - платформы для интернет приложений на языке Julia.
Максимальная оптимизация игры «Жизнь» на Julia
Это очень хорошой case для оптимизации. Алгоритм крайне прост и его знают все. Но сколько можно сделать!
Glider guns vs случайная конфигурация в игре «Жизнь»
И снова к старой теме. В старой статье я сделал два предположения:
Гипотезы
Первая гипотеза касается окончания 'движухи' - в широком диапазоне изначальных плотностей p от 0.1 до 0.7, после окончания 'движухи' 'пепел' имеет одну и ту же плотность, около 0.27
Так как ружья накачают 'вселенную' глайдерами при сколь угодно малой изначальной плотности, и снова начнется 'движуха', то вторая гипотеза сильнее:
В пределе при любой плотности p (кроме вырожденных случаев p=0, p=1) получается 'пепел' плотности 0.027
На Julia, имея теперь огромные мощности, я решил проверить обе. Вас ждет красивое видео
Игра Жизнь и Julia
В одной из своих прошлых статей по эволюции случайной конфигурации в игре жизнь я выдвинул гипотезу: Первая гипотеза касается окончания 'движухи' - в широком диапазоне изначальных плотностей p от 0.1 до 0.7, после окончания 'движухи' 'пепел' имеет одну и ту же плотность, около 0.27
Рассчитывая фрактал Римана, я был вынужден пересесть с Python на Julia из-за скорости, и не пожалел об этом. Однако теперь я мог на Julia быстро обрабатывать огромные конфигурации, например, 10k x 10k, и я решил повторить численные эксперименты на новом уровне. Как всегда, вас ждет и видео.
Десять предупреждений для желающих познакомиться поближе с Julia
Julia – мой любимый язык программирования и основной рабочий инструмент для проведения научных исследований и подготовки научной графики. Я восхищаюсь её простотой, изящностью и производительностью. Именно благодаря Julia я вошёл во вкус и начал получать удовольствие от самого процесса программирования. Иногда могу программировать что-то с утра и до вечера несколько дней подряд, но при этом я не являюсь в полной мере ни программистом, ни работником IT-отрасли. У меня нет полноценного IT образования и я никогда не работал программистом. В некотором смысле я являюсь именно тем, для кого разрабатывался язык - я учёный, исследователь. Моя работа всегда была связана с геологией, а программирование было только способом автоматизации каких-то операций или получения результата, недостижимого с использованием существующих средств. Года три я программировал на R, потом перешёл на Julia. И вот, по прошествии двух лет, я хочу поделиться некоторыми проблемами, которые я вижу у Julia и её экосистемы. Не чтобы пожаловаться, а чтобы предупредить и подготовить тех, кто только приступает к освоению этого прекрасного языка, или только присматривается к нему. В сети много восторженных статей двух-трёхлетней давности, есть и современные разборы проблем от профессиональных программистов. А я хочу постараться передать взгляд учёного, простого пользователя, решающего с помощью Julia свои повседневные не самые сложные задачи.
Запускаем Julia на Arduino
У меня нет особого опыта работы с микроконтроллерами. Раньше я немного экспериментировал с Arduino, а главной точкой входа моей домашней сети является Raspberry Pi, но на этом мой недавний опыт заканчивается. Я прошёл один курс по микроконтроллерам несколько лет назад, и справлялся с ним ужасно, едва набрав проходной балл. Тем не менее они меня восхищают — это устройства с низким энергопотреблением, которые можно запрограммировать выполнять практически любые операции, если быть аккуратным с управлением ресурсами и не стрелять себе в ногу.
При обсуждении Julia всегда подразумевается обязательное наличие двух аспектов: среды исполнения и сборщика мусора. Чаще всего оптимизация Julia (да и любого другого кода) сводится к двум аспектам:
- минимизация времени, потраченного на выполнение кода, который вы не писали,
- иметь достаточно кода, который нужно запускать скомпилированным в нативные команды той системы, где он должен работать.
Требование 1 сводится к принципу «не обменивайтесь информацией со средой исполнения и GC, если это необязательно», а требование 2 — к принципу «убедитесь, что не выполняется ненужный код, например, интерпретатор», то есть статически компилируйте свой код и по возможности избегайте динамичности.
Почему я больше не рекомендую Julia
Много лет я пользовался языком программирования Julia для преобразования, очистки, анализа и визуализации данных, расчёта статистики и выполнения симуляций.
Я опубликовал несколько опенсорсных пакетов для работы с такими вещами, как поля расстояний со знаком, поиск ближайших соседей и паттерны Тьюринга (а также с другими), создавал визуальные объяснения таких концепций Julia, как broadcasting и массивы, а ещё применял Julia при создании генеративной графики для моих визиток.
Какое-то время назад я перестал пользоваться Julia, но иногда мне задают о нём вопросы. Когда люди спрашивают меня, я отвечаю, что больше не рекомендую его. Мне подумалось, что стоит написать, почему.
Вклад авторов
Yermack 912.4Pand5461 126.0Tzimie 114.0rssdev10 104.6badcasedaily1 35.0potan 34.0grigoryvp 33.0kirtsar 28.0A_Degteryov 27.0n_kapyrin 23.0