Pull to refresh
3
0.3
Send message

Равномерное распределение точек на сфере

Reading time8 min
Views23K
Как можно более равномерное распределение точек на сфере — невероятно важная задача в математике, науке и компьютерных системах, а наложение сетки Фибоначчи на поверхность сферы при помощи равновеликой проекции — чрезвычайно быстрый и эффективный метод аппроксимации для её решения. Я покажу, как благодаря незначительным изменениям его можно сделать ещё лучше.


Какое-то время назад этот пост появился на главной странице Hacker News. Его обсуждение можно прочитать здесь.

Введение


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

К сожалению, за исключением нескольких особых случаев (а именно платоновых тел) невозможно идеально ровно распределить точки на сфере. Кроме того, решение задачи сильно зависит от критерия, который используется для оценки однородности. На практике используется множество критериев, в том числе:

  • Упаковка и покрытие
  • Выпуклые оболочки, ячейки Вороного и треугольники Делоне
  • Ядра $s$-энергии Риса
  • Кубатура и определители

Очень важно уяснить этот аспект: обычно не существует единственного оптимального решения этой задачи, потому что оптимальное решение, основанное на одном критерии, часто не является оптимальным распределением точек для других. Например, мы также выясним, что оптимизация упаковки необязательно создаёт оптимальную выпуклую оболочку и наоборот.

Ради краткости в этом посте мы рассмотрим только два критерия: минимальное расстояние упаковки и выпуклую оболочку/сетку Делоне (объём и площадь).
Читать дальше →

Запускаем StableDiffusionXl на Nvidia видеокартах с помощью python

Level of difficultyMedium
Reading time4 min
Views6.9K

В данном посте я расскажу о том, как запускать модели StableDiffusion, в том числе тысячи их производных на видеокарте Nvidia с помощью Docker.

Читать далее

Справочник по применению GPU в машинном обучении

Level of difficultyMedium
Reading time35 min
Views13K

Это перевод популярного лонгрида Тима Детмерса "Выбор графического процессора для глубокого обучения: мой опыт и советы".

Глубокое обучение (Deep learning, DL) - область с высокими вычислительными требованиями, и выбор графического процессора будет в корне определять ваши возможности в этой сфере. Какие характеристики важны при выборе нового GPU? Оперативная память GPU, ядра, тензорные ядра, кэш? Как сделать экономически эффективный выбор? Мы рассмотрим эти вопросы, заодно разберемся с распространенными заблуждениями, разберемся в характеристиках GPU, дадим советы, которые помогут вам сделать правильный выбор.

Читать далее

Reformer на TRAX?

Level of difficultyEasy
Reading time11 min
Views1.6K

Что такое Reformer и почему он круче Transformer’a (GPT-4...)?

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

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

Это происходит потому, что каждый токен в последовательности должен вычислять оценки внимания со всеми другими токенами, что приводит к плотной матрице внимания, размер которой растет с квадратом длины последовательности – мрак для вычислительных способностей наших TPU и GPU. 

Читать далее

Разбираем KAN по полочкам

Reading time4 min
Views8.9K

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

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

Читать далее

Ветровая нагрузка на здания и сооружения

Level of difficultyMedium
Reading time8 min
Views11K

В статье кратко и почти только по делу говорится о ветровой нагрузке (точнее о её статической составляющей). Вообще, конечно, по интернету гуляет довольно много сильно схожих (друг с другом) объяснений по работе с этим видом загружения, но тем не менее вопросов, особенно у начинающих, с годами меньше не становится и даже наоборот... в связи с чем и публикуется данная статья.

Читать далее

Как начать писать на Java в VSCode

Level of difficultyEasy
Reading time11 min
Views49K

Давайте признаемся: подавляющее большинство пишет Java код, используя JetBrains IntelliJ IDEA Ultimate. Да, это отличная IDE. Для нее есть большое количество расширений, среда очень тесно интегрируется с Spring Framework и знает его особенности.

Тогда зачем пробовать что‑то другое?

Привет, Хабр! Меня зовут Константин Шибков, я Java‑разработчик в CDEK.

В какой‑то мере все Java‑разработчики стали заложниками IDEA. Она так привычна, что нет желания пробовать другое. Ведь всё такое удобное и знакомое за столько лет использования.

Но если у вас есть трудности с доступом к Ultimate версии, а Community вариант не достаточно функционален — самое время попробовать современную альтернативу — Visual Studio Code.

В статье делюсь опытом подготовки среды разработки и изучения вопроса: «А можно ли перейти на VSCode?».

Перейти на VSCode

Моделируем процессы в OpenFOAM и отображаем результаты в веб

Reading time13 min
Views11K

В статье я расскажу, как можно просто, быстро и дёшево собрать свой пакет моделирования задач гидродинамики в облаке. Сделаю я это с помощью комбинации двух инструментов: средства численного моделирования механики сплошных сред OpenFOAM, а также набора инструментов визуализации массивов данных ParaView.


Я обычный разработчик, и не являюсь специалистом в данной научной области. С этим видом задач я столкнулся впервые в рамках недавно прошедшего хакатона FIT-M 2020, где мне посчастливилось поучаствовать в качестве со-организатора и ментора. Опыт мне показался интересным, в частности из-за возможности прикоснуться к области высокопроизводительных вычислений (англ. High Performance Computing), которые часто запускают на суперкомпьютерах. Я разобрался как можно довольно быстро наладить запуск вычислений на сервере в облаке и посмотреть на результат прямо через браузер, хоть с планшета или телефона!


Мне показалось, что материалов на русском языке по теме визуализации результатов в web не так много, хотя сама по себе тема довольно полезная и интересная. Надеюсь, это пошаговое руководство поможет кому-то в их вполне практических ежедневных задачах. А может быть, это станет для кого-то первым шагом в новую и интересную область науки.


Barcelona Supercomputing Center - Centro Nacional de Supercomputación
Картинка взята из Barcelona Supercomputing Center

Читать дальше →

Дерево отрезков

Reading time21 min
Views18K

Всем привет. В этой статье я расскажу про дерево отрезков. Очень мощной структуры данных, которая позволяет делать много разных операций над массивом чисел. Я постараюсь по полочкам разложить эту тему и объяснить возможности дерева отрезков. Также я разберу несколько нетривиальных задач на дерево отрезков. Помимо самого дерева отрезков я расскажу и про связанные темы: дерево Фенвика и разреженные таблицы.

Читать далее

Thinkpad T480 — максимальное улучшение ноутбука, подробный гайд по замене/установке компонентов

Reading time5 min
Views63K

Thinkpad T480 - максимальное улучшение ноутбука, подробный гайд по замене/установке компонентов (ОЗУ, охлаждение, SSD, аккумуляторы и т. д.).

Читать далее

Алгоритм расчёта расстояния между строками

Level of difficultyMedium
Reading time3 min
Views7.2K

По работе стояла задача оптимизации поиска по адресам (улицы, дома и объекты). Главный критерий - нахождение адреса, если написано с ошибками или не дописан он в полной мере. Bert’ы, косинусные расстояния эмбеддингов и т.д. не подходили, так как они заточены под смысловой поиск, а в адресах смысла нет. TF-IDF c лемматизацией тоже не очень подходил для этой задачи, результаты были плохие.

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

Цель данного поста описание только алгоритма.

Читать далее

Преобразование Уолша-Адамара

Level of difficultyHard
Reading time11 min
Views16K

На сайте hackerrank.com есть отличная задача. По заданному массиву short[] A; найти максимальное количество его подмассивов, xor элементов которых будет одинаковым. Сам этот xor тоже нужно найти.

Максимальная длина массива равна 105, так что квадратичный алгоритм не укладывается в лимит по времени исполнения. Я в своё время с этой задачей не справился и сдался, решив подсмотреть авторское решение. И в этот момент я понял почему не справился — автор предлагал решать задачу через дискретное преобразование Фурье.

Читать далее

Практическое руководство по Rust. Бонус

Level of difficultyMedium
Reading time34 min
Views10K



Hello world!


Представляю вашему вниманию бонусную часть практического руководства по Rust.



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


Руководство основано на Comprehensive Rust — руководстве по Rust от команды Android в Google и рассчитано на людей, которые уверенно владеют любым современным языком программирования. Еще раз: это руководство не рассчитано на тех, кто только начинает кодить 😉

Читать дальше →

Осваиваем кросс-компиляцию с помощью Clang и LLVM

Reading time21 min
Views28K

Каждый, кто когда-либо пробовал собрать программу на C/C++ через кросс-компиляцию знает, насколько болезненным может быть этот процесс. Главными причинами столь печального положения вещей являются недружелюбность систем сборки при конфигурации кросс-компиляции, а также запутанность процесса настройки набора утилит (тулчейна).


Одним из основных виновников этих проблем, по моему опыту, является тулчейн GNU — древний мамонт, на котором много десятилетий строится весь мир POSIX. Подобно многим компиляторам былых времён, семейство GCC и binutils никогда не ориентировалось на поддержку множества различных целей сборки в одной установке, и единственным способом хоть как-то добиться желаемого была настройка полной кросс-билд-системы для каждой целевой платформы на каждом хосте.

Читать дальше →

VS Code, python, контейнеры — как обуздать эту триаду и разрабатывать внутри контейнера

Level of difficultyMedium
Reading time16 min
Views52K

Как пользоваться VS Code в полную силу


image


Это небольшой туториал о настройке VS Code для работы с python. Здесь вы не увидите каких-то божественных откровений — тут будет просто мой опыт о том, как сделать свою работу/хобби немного комфортнее и почему я пришел именно к такой конфигурации.

Читать дальше →

Исходников нет, но мы не сдадимся: как и зачем я портировал более старый Android, чем стоял «с завода»?

Level of difficultyMedium
Reading time13 min
Views15K
image


Моддинг-сцена с разработкой и портированием кастомных прошивок для Android-устройств существует вот уже более 10 лет. В основном, энтузиасты пытаются проапгрейдить свои устройства путем портирования более свежих версий Android, чем предлагает производитель девайса. Чего уж говорить, если Galaxy S III, которому уже 12 лет стукнуло, получил неофициальный апгрейд до Android 14. Порой мне в голову приходят различные, весьма странные моддерские мысли: например, почему бы не портировать на старенький смартфон… ещё более старую версию Android, дабы посмотреть «что будет». Казалось бы «портировал и портировал», но в процессе работы я столкнулся с множеством интересных нюансов и особенностей работы Android, о которых хотел бы рассказать и вам — моим читателям! Сегодняшняя статья будет в классическом «научпоп»-стиле без кода, зато с подробными объяснениями одной из техник портирования Android-прошивок путем патчинга скриптов для конфигурации системы и подмены Board-specific библиотек, дабы система «увидела» всё необходимое железо! Интересно? Тогда жду вас под катом!
Читать дальше →

Есть ли жизнь в виртуалке на ПК?

Level of difficultyEasy
Reading time9 min
Views16K
image
Виртуализация и работа в виртуальных машинах (ВМ) прочно входят в нашу жизнь. Кто-то таким образом тестирует программное обеспечение (ПО), кто-то реализует рабочие места, а кто-то организует работу сервисов. Неизменно во всем этом деле только то, что программным образом ресурсы ПК/ноутбука делятся на несколько частей, пропорции которых задаете Вы или человек, который его администрирует. Однако можно ли в ВМ запускать любое ПО без ограничений и может ли она быть, как и ПК, МУЛЬТИМЕДИЙНОЙ? Давайте разбираться.
Читать дальше →

MacOS Monterey на Linux — быстро и просто?

Level of difficultyEasy
Reading time3 min
Views54K
Что делать, если у вас возникло желание или необходимость заняться разработкой под MacOS или iOS, но под рукой нет макбука, а покупать его только чтобы открыть Xcode кажется делом сомнительным? Недавно я столкнулся с такой проблемой в одном из своих пет-проектов и решил ее достаточно просто и быстро. После выполнения нескольких достаточно примитивных шагов, мне удалось запустить MacOS Monterey как на скриншоте ниже.

image

Никакого Virtualbox, никакого Virtual Machine Manager. Из требований — только 100 Гб свободного места на диске и хотя бы 16 Гб оперативной памяти. В рунете я встречал описание похожих путей установки, вроде Docker-OSX или Sosumi. Но я бы хотел поделиться способом, который позволяет использовать актуальную версию MacOS (Sosumi — сразу минус) и не потратить уйму свободного времени на возню с конфигами и терминалом. Поехали.
Читать дальше →

Information

Rating
3,847-th
Location
Кызыл, Тува (Тувинская Респ.), Россия
Registered
Activity

Specialization

Software Developer, Application Developer
Senior
From 150,000 ₽
Python
C++
Linux
Docker