Рыцарь-демон, Intel Xeon Phi в 2024-м, часть 0
Изображение НЕ сгенерировано нейросетью
Вы точно знаете о процессорах Intel. Вероятно, вы что-то слышали о видеокартах Intel. Но об этом устройстве не знает никто (effectively никто). Триста ватт, двести пятьдесят ядер, архитектура x86 (почти). Это чудовище из 2014-го зовут Intel Knights Corner или же Intel Xeon Phi… и это карта-сопроцессор для слота PCI-E.
Ленивая охота за этим устройством на просторах барахолок длилась пару лет. После бума китайских «материнок» для Xeon E5 v3 хотелось ещё более странного. Дзынь. Немного безналичных денег и девайс ждёт в пункте выдачи. Тяжёлый. Чувствуется запах гари (да не умер он в Запретном лесу). Но ведь продавец убеждал, что всё работает. Любопытство победило жадность. Поверим продавцу, чем чёрт не шутит.
Из системных требований только 400 ватт мощности блока питания и наличие включенной опции Above 4G Decoding (она же ReBAR). Вставил и забыл… нет, не забыл, забыть об этом турбинном пылесосе невозможно. Впрочем, он явно рассчитан на серверное применение, поэтому просто вынесем его на балкон. Греется даже «на холостых».
Реальных ядер показывает 61 штуков
К сожалению, через Thunderbolt во внешнем боксе для видеокарт оно не заработало, учитывайте это перед приобретением. Предложения на барахолках появляются иногда, ловите момент. Кстати, судя по внешнему виду (в интернете карта синяя, а мой вариант серый) мне достался инженерный образец. Производитель строго запретил майнинг на этом устройстве. Хорошо, что мы уже в 2024-м, соблазн невелик.
Если не пересказывать долго рекламные статьи, Intel Xeon Phi это такой мини-компьютер, в нём 200 виртуальных вычислительных ядер и 8/16 гигабайт оперативной памяти. Этот мини-компьютер запускает внутри себя GNU/Linux и ждёт, попутно он создаёт для хост-машины сетевой адаптер на 40 гигабит/сек. Этого хватает, чтобы программы, скомпилированные особым образом могли выгружать инструкции и данные в память устройства и запускать их там в режиме массового параллельного исполнения на всех этих ядрах. И всё должно было быть быстро. Очень быстро.
Чтобы эта схема работала, нужен фирменный компилятор Intel. Его не так легко найти, ведь поддержка устройства закончилась. Помог web.archive.org, три часа (очень медленной) загрузки и дистрибутив с драйверами у меня. Ещё некоторое время и старая версия Intel Parallel Studio XE 2017 тоже в наличии. Хост-машина на Windows, извините.
Работает
Скучную часть пропустим. Устройство действительно работает, сетевой адаптер активен, пинг идёт. Работает доступ по SSH. Немного сетевой магии netsh и работает интернет, локальная сеть и даже монтирование NFS. Всё что нужно для восхода солнца вручную. Такой вариант использования тоже предполагался, прямая загрузка и запуск программ через ssh.
К сожалению, Visual Studio 2017 (совместимость с которой обещали авторы дистрибутива Intel Parallel Studio) отказалась видел компилятор Intel, поэтому пока я смог скомпилировать только самую простую программу и только в консоли. Но она реально работает, пишет в консоли Xeon Phi заветную строку «Hello, World!».
Привет, мир!
В устройстве нет постоянной памяти для пользовательских данных, поэтому каждый старт производится фактически с нуля. В этот момент в устройство загружается «прошивка» пользовательской файловой системы, состоящая из тех файлов и папок, которые перечислены (вручную, да) в текстовых файлах на хост-машине. Ну, спасибо и на этом.
К сожалению (или к счастью) я обычный крудошлёп и очень слабо знаком с экосистемой Си. Наивная надежда, на то, что умные компиляторы из 2017-го сделают всё сами никак не оправдалась. Осталось нереализованным желание скомпилировать под это чудо техники популярный плеер языковых моделей llama.cpp
, о котором кто только не писал (и я в том числе). Кажется, что в инференсе бюджетных нейросетей это устройство может найти свою загробную нишу.
Отчасти в неудаче «виноват» Windows и в самом деле, в интернете многие успешные инструкции относятся к тем случаям, когда на хост-машине установлен CentOS или Debian с особой сборкой компилятора gcc. Это и был следующий шаг в моём плане по окормлению старого рыцаря в углу (Knights Corner, кодовое название устройства), но как только я решился на дальнейшие эксперименты, новогодние каникулы кончились и мне пришлось вернуться в 2024-й, в нём Котлин, Ангуляр и прочие скучные преобразователи времени в зарплату.
А если кто-то всё же знает, как скомпилировать llama.cpp под архитектуру mic, пишите в комментариях. Может и на следующую часть материал наберётся, как уже было сказано, чем рыцарь-чёрт не шутит.
И самое главное: берегите себя и своих близких.