Pull to refresh
35
-0.9

исследователь

Send message

Делаем многопользовательскую кроссплатформенную RPG с нуля

Level of difficultyMedium
Reading time14 min
Views13K

Когда-то давно меня очаровал ADOM. Я даже и близко не подошёл к прохождению игры, но мне нравилось бродить по этому миру, собирать предметы с эффектом, который не прочувствуешь, пока не используешь. Нравилось, что монстры в подземельях имели какие-то зачатки собственного интеллекта, подбирали с пола вещи и использовали их. Всё время что-то происходило и менялось, проходишь по тому же месту – смотришь кто-то уже подобрал с пола монеты. Или предметы в инвентаре испортились. Мир как будто живёт своей жизнью. В пещерах можно идти по коридорам, а можно наугад пробивать туннели заклинанием в надежде отыскать потайную комнату, оставляя на полу груду камней. Мир полный возможностей и способов взаимодействия.

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

Читать далее
Total votes 20: ↑19 and ↓1+18
Comments29

Перенос нейронной сети из PyTorch на Google Coral

Reading time13 min
Views3.5K

Всем привет! Меня зовут Антон Расковалов и мы с командой  отдела перспективных исследований «Криптонит» решили проверить, можно ли использовать Google Coral в решении наших задач. Приобретённым опытом делюсь в статье ниже.

Санкции вынуждают пересматривать подходы к организации ИТ-инфраструктуры, в том числе — искать альтернативу облачным ИИ-платформам. Одним из вариантов является использование специализированных ускорителей с нейропроцессорами, которые физически находятся на стороне клиента. Даже на фоне санкционного давления их можно купить на AliExpress и оплатить банковской картой, выпущенной на территории России.

Данная статья посвящена переносу нейронных сетей написанных на одном из самых популярных фрэймворков, PyTorch, на Google.Coral, один из самых "производительных ускорителей"

Читать далее
Total votes 12: ↑11 and ↓1+10
Comments5

aztotmd: молекулярная динамика [+ непостоянное поле сил] [+ излучательный термостат]. CUDA-версия. Руководство

Reading time26 min
Views2.6K

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

 Возможности и ограничения

Требуется видеокарта NVidia с computational capability > 2.2. Программа основана на численном интегрировании уравнений движения скоростным алгоритмом Верле. Опции:

+ периодические граничные условия и только в форме прямоугольного параллелепипеда;

+ парные потенциалы: 6 обычных и 1 температуро-зависимый;

+ 3 способа учета электростатики: наивный, суммирование по Эвальду и метод Феннеля и Гецельтера;

+ 2 термостата: Нозе-Гувера и излучательный;

+ валентные связи;

+ валентны углы;

+ внешнее электрическое поле с постоянным градиентом;

+ возможность динамического образования/удаления валентных связей (включая водородные) и валентных углов;

Далее
Total votes 22: ↑22 and ↓0+22
Comments9

Что такое температура и как её учитывать в молекулярном моделировании? Реализация на CUDA

Reading time12 min
Views5.7K

Методы численного моделирования молекулярных систем, такие как молекулярная динамика, рассматривают эти системы как механические (что-то вроде набора шариков на пружинках). Однако, в отличие от механических систем, для молекулярных существует понятие температура. Вещество не может существовать без температуры, а температура – без вещества (на счет последней части утверждения есть и другое мнение). Из опыта мы знаем, что очень многие свойства вещества кардинально зависят от температуры, и, естественно, что её надо как-то учитывать. Для поддержания температуры в молекулярной динамике используются специальные алгоритмы-«термостаты». Наиболее известные среди них это термостаты Андерсена, Берендсена и Нозе-Гувера. Все они основаны на молекулярно-кинетической теории газов, где температура есть просто величина пропорциональная среднекинетической энергии молекул. Соответственно, работа данных термостатов осуществляется путём умножения скоростей частиц на некоторую величину.

Что же не так?
Total votes 9: ↑9 and ↓0+9
Comments10

Перенос молекулярной динамики на CUDA. Часть III: Внутримолекулярное взаимодействие

Reading time17 min
Views2.1K
До этого мы рассматривали молекулярную динамику, где законы взаимодействия между частицами зависели исключительно от типа частиц или от их заряда. Для веществ молекулярной природы взаимодействие между частицами (атомами) сильно зависит от того, принадлежат ли атомы одной молекуле или нет (точнее, связаны ли они химической связью).

Например, вода:

image

очевидно, что водород с кислородом внутри одной молекулы взаимодействуют совсем по-другому, нежели тот же кислород с водородом соседней молекулы. Таким образом, разделяют ВНУТРИмолекулярное (intramolecular) и МЕЖмолекулярное (intermolecular) взаимодействие. Межмолекулярное взаимодействие можно задать короткодействующими и Кулоновскими парными потенциалами, о которых речь шла в предыдущих статьях. Здесь же сконцентрируемся на внутримолекулярном.
Читать дальше →
Total votes 4: ↑4 and ↓0+4
Comments4

Перенос молекулярной динамики на CUDA. Часть II: Суммирование по Эвальду

Reading time10 min
Views3.3K
В предыдущей статье мы обсудили основу метода молекулярной динамики, в том числе вычисление энергии и сил взаимодействия между частицами с заданными парными потенциалами. А что, если частицы обладают некоторым электрическим зарядом? Например, в том случае, если мы моделируем кристалл поваренной соли, состоящий из ионов Na+ и Cl-. Или водный раствор, содержащий те или иные ионы. В этом случае, кроме парных потенциалов типа Леннарда-Джонса между ионами действуют силы электростатического взаимодействия, т.е. закон Кулона. Энергия такого взаимодействия для пары частиц i-j равна:

$E=C\frac{q_iq_j}{r_{ij}},$


где q – заряд частицы, rij – расстояние между частицами, С – некоторая постоянная, зависящая от выбора единиц измерения. В системе СИ это — $\frac{1}{4\pi\epsilon_0}$, в СГС — 1, в моей программе (где энергия выражена в электронвольтах, расстояние в ангстремах, а заряд в элементарных зарядах) C примерно равно 14.3996.

image

Ну и что, скажете вы? Просто добавим соответствующее слагаемое в парный потенциал и готово. Однако, чаще всего в МД моделировании используют периодические граничные условия, т.е. моделируемая система со всех сторон окружена бесконечным количеством её виртуальных копий. В этом случае каждый виртуальный образ нашей системы будет взаимодействовать со всеми заряженными частицами внутри системы по закону Кулона. А поскольку Кулоновское взаимодействие убывает с расстоянием очень слабо (как 1/r), то отмахнуться от него так просто нельзя, сказав, что с такого-то расстояния мы его не вычисляем. Ряд вида 1/x расходится, т.е. его сумма, в принципе, может расти до бесконечности. И что же теперь, миску супа не солить? Убьёт электричеством?
Оказывается
Total votes 22: ↑22 and ↓0+22
Comments4

Перенос молекулярной динамики на CUDA. Часть I: Основы

Reading time22 min
Views7.3K
Цель данной статьи – поднять вопросы распараллеливания кода программы для численного моделирования методом молекулярной динамики (МД) с помощью технологии CUDA. Зачем это вообще нужно, ведь уже существуют программные пакеты по МД, работающие в том числе и на CUDA? Дело в том, что я развиваю свою собственную концепцию «непостоянного поля сил» (non-constant force field), которая не реализована в существующих МД-программах.

Переделывать чужой код под эти нужды – довольно неблагодарное занятие, поэтому я взялся перенести уже написанный свой последовательный код и заодно поделится некоторыми размышлениями. Кроме того, это ответ на часто мелькающий здесь комментарий к статьям по CUDA, вроде этого .

Итак, что же такое молекулярная динамика? На Хабре уже есть несколько постов на эту тему, например здесь или вот здесь. Кратко, МД – это метод, позволяющий моделировать движение множества частиц (в том числе атомов, ионов, молекул) и рассчитывать коллективные свойства системы, зависящие от этого движения. Как это работает? Допустим для множества из N частиц заданы некоторые начальные координаты, скорости, массы и (главное!) законы взаимодействия между ними. Изменяем координаты согласно скоростям. На основе законов взаимодействия вычисляем силы, действующие между частицами. Раз знаем силу и массу – знаем ускорение. Поправляем скорость с учетом ускорения. И снова переходим к изменению координат. И так повторяем тысячи раз, пока не надоест не наберем достаточную статистику.

image
Итак
Total votes 31: ↑30 and ↓1+29
Comments29

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity