Какие много-/многоядерные (микро)процессоры/контроллеры мне следует использовать для «досадно параллельных» вычислений? [закрыто]

Это мой первый вопрос на этом сайте, поэтому я надеюсь, что не напортачу. :D

Я постараюсь быть как можно более конкретным.


Что мне нужно:

  • Что-то, что я могу программировать на C (или C-подобном языке).

  • Мне нужен процессор, который можно соединить в массив для массовых параллельных вычислений.

  • Блок должен иметь многоядерную архитектуру (достаточно 32-битного RISC), и ядра, а также блоки должны иметь возможность взаимодействовать друг с другом.

  • Все блоки должны быть одновременно программируемыми. Я не хочу программировать каждый из них вручную.

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

  • Скорость ядра, деленная на цену, должна быть как можно выше.

  • Полученный массив должен на несколько порядков превосходить стандартный настольный компьютер в отношении высокопараллельных вычислений.

  • Решение не должно быть слишком сложным.

  • Энергоэффективность меня не особо волнует. Пока для этого не требуется невероятное количество энергии (например, частная атомная электростанция на процессор), это не должно быть проблемой.


Для чего мне это нужно:

  • Нейронные сети и различные другие реализации машинного обучения

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

  • Хеширование и другие приложения грубой силы

  • Среди других параллельных программ.


Что я нашел до сих пор:

  • Вычисления с ускорением на графическом процессоре:
    это решение кажется лучшим из тех, что я нашел до сих пор. Используя CUDA и OpenCL, я могу использовать аппаратные шейдеры графического процессора как отдельные ядра. Так майнинг биткойнов осуществлялся в прошлом.
    Преимущество этого подхода в том, что я могу одновременно запускать сотни потоков. Также есть много онлайн-поддержки, использующей этот метод.
    Недостатком этого подхода является то, что шейдеры графического процессора плохо работают с условными переходами, что мешает мне писать такие программы с множеством вложенных условий.

  • Микросхемы XMOS
    Одной из первых микросхем семейства, которые мне показались подходящими, была линейка продуктов xCORE. Это микропроцессоры, которые относительно дешевы (~ 20 долларов США каждый) и могут иметь до 32 ядер.
    Что немного сбивает с толку, так это тот факт, что единственным показателем скорости является MIPS. Глядя на руководство по подключению, они используют внешний кварц 25 МГц. Также не так много онлайн-поддержки.

  • Parallella Board
    Это очень интересная маленькая плата, которая позиционируется как «суперкомпьютер размером с кредитную карту». Он работает на производной от Ubuntu и имеет сопроцессор Epiphany-III с 16 ядрами (я думаю). Говорят, что он может выполнять 90 GFLOPS.
    Недостатком является то, что мне нужно больше ядер.

  • Epiphany-IV (E64G401)
    Этот микропроцессор кажется совершенным. Она производится той же компанией, что и плата Parallella, и имеет 64 ядра RISC с колоссальной частотой 800 МГц.
    Единственным недостатком является то, что эта микросхема снята с производства. :'(

  • Процессоры Kalray и карты PCIe
    Снова очень интересное решение для параллельных вычислений, где процессоры имеют до 256 ядер. Kalray также предлагает обучение использованию своей продукции.
    Недостатком является то, что нужно запрашивать цену, и кажется, что эти компоненты можно купить только у них напрямую. Также мне кажется, что они больше ориентированы на нетворкинг.

  • FPGA
    также рассматривались, поскольку они могут выполнять целые алгоритмы за один такт.
    Что я ищу, так это что-то, что также может выполнять очень большие алгоритмы, в то время как FPGA не имеют такого количества логических элементов.


В плане бюджета я очень гибкий. Итак, скажем, 10 000 долларов США.
Я бы предпочел разработать собственную печатную плату вычислительного массива с микросхемой, которую вы, ребята, порекомендовали, однако я открыт для других решений. Может быть, я уже нашел лучшее решение, но я еще не знаю его. Что вы думаете, дамы и господа?

Заранее большое спасибо!

-- Линус


Список изменений:

  • Добавил, что хотел бы программировать на C

  • Добавлены ПЛИС

  • Добавил, что меня не волнует энергопотребление

  • Добавлено, что я бы предпочел сделать свою собственную печатную плату.

  • Добавлен бюджет 10 000 usd

Если вы также ищете энергоэффективность - что вы думаете о FPGA с несколькими программными процессорами внутри? Кроме того, нейронная сеть и хеширование могут быть выполнены на FPGA без процессора, насколько я знаю.
Я также смотрел на FPGA, однако они действительно дороги и имеют слишком мало логических элементов для моих нужд. Но спасибо, что напомнили. Я быстро добавлю это к моему вопросу.
Однако до ASIC наиболее эффективным майнером биткойнов были FPGA (та же задача хеширования, о которой вы упомянули). Цена является недостатком, это правда. GPU будет дешевле, но - менее эффективен в смысле энергопотребления.
Программирование программных ядер на C на FPGA монументально упускает суть FPGA. Если вы не хотите изучать аппаратное проектирование на VHDL (или Verilog), вы не получите от них максимума.
@Looongcat Хммм ... Я проведу дополнительные исследования по этому поводу. Спасибо за предложение :D. Я знаю, что FPGA отлично подходят практически для всех приложений, однако я действительно ищу решение, специфичное для моей проблемы — то, что уже сделано. Еще одна проблема с ПЛИС заключается в том, что если к ним не подключен дополнительный внешний микроконтроллер, он потеряет весь код после выключения.
У вас немного неправильное представление - не внешний MCU, а внешняя память конфигурации. В любом случае, это даже дороже, чем MCU :) И @brian-drummond прав, изучение HDL — серьезная задача.
Альфа- или бета-версия Hardware rec, вероятно, является правильным местом для этого: hardwarerecs.stackexchange.com
@horta К сожалению, этот сайт находится в закрытой бета-версии. Я не могу получить к нему доступ. Причина, по которой я поместил его на этот форум, заключается в том, что я думаю использовать его для своей диссертации по мехатронике. Я бы предпочел изготовить свою собственную печатную плату массива процессоров, однако я открыт и для других решений.
Попался. Было бы неплохо отметить, с каким бюджетом вы должны работать.
10K действительно не купят вам много вычислений. Серверы, которые входят в серверные фермы, могут легко стоить 10 тысяч за штуку. Что-то, что вы не указали, — это Xeon Phis, сопроцессор общего назначения x86, который используется в некоторых суперкомпьютерах.
@Орта Вау. Фи выглядит потрясающе! Я сделаю некоторые дальнейшие исследования по этому поводу. Все это для исследовательских целей, а также для развлечения. Я не собираюсь взламывать с его помощью Северную Корею. :P Вот почему я сказал 10k.
Меня посетила еще одна мысль. При больших объемах вычислений, в зависимости от того, что вы хотите делать, аренда этих вычислительных мощностей может оказаться более рентабельной. Что-то вроде Amazon Web Services. Таким образом, вы можете масштабировать количество энергии, необходимое для данной задачи в любой момент времени. Это не оборудование, но это, вероятно, самый быстрый, простой и, возможно, самый дешевый способ достижения ваших целей, если только часть вашей цели не состоит в том, чтобы на самом деле построить оборудование.
@horta Я тоже рассматривал этот вариант, и, честно говоря, я думаю, что это будет проще всего. Хотя я планирую работать 24/7. Кстати, внешний вид Phi — это почти то, что мне нужно, и цена тоже хорошая. : D Я буду читать больше в этом, хотя.
Я голосую за то, чтобы закрыть этот вопрос как не по теме, потому что это компьютерный вопрос.

Ответы (1)

Построить новую машину

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

  • Процессор Intel Xeon E3-1231v3 (четырехъядерный 3,4 ГГц с технологией Hyper-Threading)
  • Материнская плата Gigabyte GA-B85N-Phoenix mini-ITX
  • Оперативная память Kingston KVR DDR3-1600 8 ГБ x 2
  • Графический процессор AMD Radeon R9 290X (или, если вы можете себе это позволить, R9 295X2)
  • Твердотельный накопитель Kingston SSDNow V300 120 ГБ SATA-6 Гбит/с

Или, если у вас есть хорошая игровая установка, используйте ее. Перечисленная выше машина на самом деле является рекомендуемой игровой установкой малого форм-фактора.

Еще одна установка, чертовски дороже, чертовски больше, более чем в три раза быстрее, чем предыдущая установка, и все еще без каких-либо узких мест:

  • Два процессора Intel Xeon E5-2643v3 (шестиъядерный процессор 3,4 ГГц с технологией Hyper-Threading)
  • Двухсокетная материнская плата Asus Z10PE-D16 WS
  • Kingston KVR DDR4-2133 ECC RAM 16GBx8 (или, если вы можете себе это позволить, 16GBx16)
  • Две карты AMD Radeon R9 295X2 в конфигурации CrossFire (всего 4 графических процессора, и если вы можете с этим справиться, получите три из них)
  • Твердотельный накопитель Intel серии 730 (карта PCIe NVMe)

Перепрофилировать старые системы, их много

Кроме того, если вы можете найти много старых компьютеров по дешевке (например, моя школа продает более 100 компьютеров с процессором Core 2 Duo по 15 долларов каждый после их замены новыми машинами i5), вы можете собрать несколько десятков из них и бросить объедините их в кластер Beowulf, если вы знаете, как заставить эти кластеры работать.

Например, если вы собрали 30 таких систем Core 2 Duo с 512 МБ ОЗУ каждая, вы получите кластер с 60 ядрами и 30 ГБ ОЗУ.

Одномашинный суперкомпьютер

Если вы сможете выиграть Sony PlayStation 3, которая все еще может работать под управлением Linux, этот зверь сможет вам очень помочь. Кстати, по данным USAF, объедините 1790 из них в кластер Beowulf, и вы получите суперкомпьютер из списка TOP500.

Спасибо за ваш ответ. Решение для PS3 очень интересное. Также позже я рассмотрю скопления Беовульфа. Я уже изучал графические процессоры, но, как уже говорилось, условные переходы для графических процессоров довольно сложны для вычисления, как показано в этой статье: chipgen.stanford.edu/people/alum/pdf/…
@LinusBrendel Статье, которую вы цитируете, уже более десяти лет! Новые архитектуры теперь сильно отличаются!