В предыдущем посте (посту?) я показал свой комп, но проблема конечно этим не решается. Даже если учесть что у меня сейчас 16×3=48 ядер, этого хватает для того чтобы что-то считать, гонять TeamCity (видите какой я лояльный?) и еще кое-какую сервисную муть. Но этого мало, поэтому касательно вычислительной мощи у меня припасен другой козырь, про который я вам и расскажу.
Когда я ушел из аспирантуры в 2006 году, я не то чтобы уволился. Ну вот не уволился и все тут. Остался на позиции Visiting Researcher (или просто Visitor, чтоб без пафоса) в универе. Зачем? Ну, для начала плюшки простые: я получил от универа кучу софта, доступ в библиотеки (попробуйте поищите статьи в журналах не имея подписки), и другие мелкие плюшки вроде возможности получать академический софт и покупать железки от Altera со скидкой.
Но главное не это. Как я уже говорил, когда я начал заниматься алготрейдингом, я был нищий и вычислительных мощностей у меня практически не было — я гонял нейросети на компе который был HTPC билдом с Пентиум М (ноутбучный!) на борту. Ну, чем богаты тем и рады.
Так вот, тут внезапно оказалось, что мой универ входит в некий консорциум, которому принадлежит второй по размеру кластер в Англии! Хотите глянуть на спеку кластера? Окей. На текущий момент она выглядит как-то вот так:
- 750 нодов, каждый из которых оборудован двумя ксеонами по 8 ядер (E5-2670) и 64гб оперативки
- Четыре “толстозадые” ноды с E5-4640 (т.е. 32 ядра) и 256Gb оперативки
- 12 GPU нодов в каждом из которых по две теслы — сейчас это K20. Одна такая игрушка стоит $5k, что сейчас кажется копейками, но когда-то это было огого!
- Порядка 10 Xeon Phi 5110P нод которые, как вы понимаете, уже морально устарели.
Естественно, все это оборудование предназначено для исследований и академического использования, но печальный факт в том, что и студенты и профессора порядочные раздолбаи, и программировать-то толком всю эту кухню не могут (это ж С++ надо знать, для современного студента-английчанина это нереально).
Когда я сунулся во все это я, вообщем-то, тоже был тот еще раздолбай: у меня не было навыков ни в численных дисциплинах ни в программировании. Но я-то знаю как замотивировать себя изучить новый предмет: написать видеокурс по нему! Что я и сделал, записав для Pluralsight курс по High-Performance Computing.
После попадания на кластер, я столкнулся с очевидными ограничениями в работе системы: все данные синхронизованы по GPFS (ухх, InfiniBand, мне б такое!), а поскольку у нод нет своих дисков, это накладывает некоторые ограничения на то, сколько можно всего обсчитать.
Все это привело к моей нескончаемой радости ровно до того момента, когда я понял что мне придется строить собственную кодовую инфраструктуру поверх чужого железа. И несмотря на то что за 12 лет меня еще не выгнали (я не произвожу на универ никакой полезной работы, только беру), эта возможность является совсем не иллюзорной.
Кластер сам по себе управляется с помощью MPI. Межпроцессорное взаимодействие я реализую с помощью OpenMP — достаточно бесячего, но работающего кое-как стандарта. Помимо этого, я порой использую SIMD — либо явно (это конечно не особо желательно), либо путем использования оптимизаций компилятора и подстаивания своих циклов так, чтобы это можно было делать проще через #pragma simd
и иже с ними.
Что касается собственно того что я запускаю там, в основном это рассчеты на С++ или MATLAB (там лицензия MDCS) которые, как правило, тестируют ту или иную рыночную теорию. Поскольку вычислительных ресурсов чуть более чем дофига, а платить за них не надо (в отличии от, например, Azure), я гоняю очень много спекулятивной или вычислительно-неэффективной фигни которая, вместо того чтобы использовать механизмы machine learning-а (всякий annealing там), пытается по сути брут-форсить анализ путем рассмотрения избыточных комбинаций данных. Это моя визитная карточка — вместо того чтобы делать все умно (и сложно), я делаю де факто Монте-Карло.
Пока я копошился во всем этом, универ не мудрствуя лукаво решил проапгрейдить всю ту инфру что я написал. Точнее проапгрейдить = закупиться еще, за деньги налогоплательщиков студентов, конечно же.
Спеки нового кластера меня порадовали еще больше — 464 ноды по 40 ядер и 192гб оперативки, особо мощные ноды (которых мало и для них нужно просить допуск — для меня не вариант), а также няшные GPU ноды — 10 нод по 4 GTX1080 и 10 нод по 2 Volta V100. Я пожалуй единственный, у кого есть и навыки программирования CUDA (да-да, по этой технологии я тоже курс сделал, по тем же причинам) а также подходящие задачи чтобы все это амортизировать.
Не будь всего этого добра, я бы не смог анализировать так много, и так быстро. Конечно, сейчас я уже могу позволить себе купить какое-то время в облаке, но согласитесь — бесплатный кластер, которым кроме тебя мало кто вообще пользуется — это просто шикарно. Я правда и пользу приношу — когда что-то в кластере идет не так, я засылаю ответственным людям инфу о поломке с репро-кейсами, что делает их работу чуточку проще. Это делает людей меньшими раздолбаями, т.к. они понимают: либо они чинят поломку здесь и сейчас, либо я пойду к вышестоящим инстанциям универа и их всех вызовут на ковер. А если чего все англичане и боятся, так это личного общения — особенно с руководством. Проще все сделать как Дмитрий хочет.
Как видите, эта история в очередной раз иллюстрирует, что порой нужно встроиться в правильную структуру правильным образом, и будет тебе вычислительное счастье. ■
Оставить комментарий