Многопроцессорность

Просьба знатокам не читать, вам и так всё известно и всё понятно. Тут текст, для тех, кто сомневается.

 

Когда появились первые многоядерные вычисления?

Многие думают, что в 1999 году, с выпуском IBM Power4.

А вот НИФИГА! Приведём несколько примеров.

 

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

0013-013-Soobschajuschiesja-sosudy

Каждое ядро вычисляло высоту столба в зависимости от количества жидкости, налитой в сообщающийся сосуд. Два ядра постоянно обменивались данными (текущим давлением и, следовательно, жидкостью). После уравнивания давления вычисления заканчивались. И ещё, с помощью сообщающихся сосудов вычисляли соотношение плотностей разных жидкостей.

 

2.Но вот, с развитием торговли результатами сельхозпроизводства на полях с оросительными системами, появилась потребность в измерительных сосудах. С помощью таких сосудов можно выяснить (померить) объём любого другого сосуда. То есть, можно было брать двойные и тройные интегралы. Время вычисления равнялось времени успокоения налитой жидкости из мерительных сосудов. Причём вычислить объём можно было и для поверхностей, для которых не существует аналитического выражения, только вычисление. При этом не нужны были ни циклы, ни лямбды. За счёт атомной структуры жидкости вычисление происходит достаточно быстро и почти одинакового для любой, самой сложной функции, описывающей объём сосуда, и с достаточной точностью. В данном случае можно сказать, что вычисление производилось параллельно при помощи мириадов супермикропроцессоров – атомов или молекул. То есть, процессоров используется в таких вычислениях порядка числа Авогадро 6* 10^^23.  Заметим, что  с ростом размера молекул точность замера снижается. Для практики этим можно пренебречь. Передача данных происходит в момент столкновения молекул путем обмена кинетической энергией и импульсом. Кроме того, есть глобальные переменные – давление и тяготение. В принципе, то же самое вычисление происходило и в первом случае, с сообщающимися сосудами. В наше время есть программы, которые имитируют такое вычисление методом конечных объёмов и пр., но вряд ли там рассматривается такое количество элементов жидкости.

 

  1. Позднее такие вычислители (физические модели) часто использовались, и используются, по сей день для проверки строительных конструкций самых различных архитектурных сооружений, проверки аэродинамики корпусов автомашин и летательных аппаратов и прочих нужд. Там где вычислительных мощностей не хватает для необходимой точности расчётов, делают натурное моделирование, что, по сути, является массовым параллельным вычислением с количеством процессоров, недоступным современным компьютерам. Самое удивительное, что легко можно снять результат этого вычисления с такой вычислительной системы, например, встроив в модель датчик давления, датчик смещения, датчик радиации, любой необходимый датчик. Аналогично, подобные модели можно строить с помощью аналоговых электронных схем, для «числового» решения не решаемых аналитически дифференциальных уравнений.

 

  1. Как же устроены эти вычислительные устройства? Обмен данными между «вычислителями» происходит путём столкновения атомов и передачи импульса и кинетики. «Параллельная шина данных», когда практически одинаковое воздействие оказывается на все атомы, доступна только для сил тяготения, электростатики или магнитного поля. Благодаря этому можно брать интегралы по объёму, по массе, по потенциалам полей. Важное отличие от обычного компьютерного моделирования состоит в том, что программы рассматривают и рассчитывают во время вычисления многочисленные объёмы жидкости и их взаимодействия, то есть 6 уравнений. Если моделировать атомы или молекулы, в уравнении взаимодействует всего двое участников, от силы трое.
  1. А как же компьютерные нейросети? У меня есть большие сомнения, что живые сети нейронов имеют мириады аксонов, которые вырастают для запоминания определённой информации. Вроде уже известно, что геометрия живой материи определяется генами, а вовсе не внешней средой. Если для вычисления интеграла (объёма сосуда) атомам достаточно контактов с соседями (до 6 атомов соседних), то и нейросетям нужно не больше контактов для работы. Аналогично, все суставы костного скелета обходятся контактами с соседними костями, и нет причин выделять нейроны из других видов клеток в этом отношении. Вот интересно, как работает регенерация. Всегда есть точка роста, как у растений или их может быть несколько у регенерирующего органа или структурной детали этого органа?
  2. Кстати в известном проекте SpiNNaker именно 6 связей между соседними процессорами (см. http://apt.cs.manchester.ac.uk/projects/SpiNNaker/). Но процессорная сеть организована в виде поверхности тора, а не кубической решётки. Такая организация сети не пригодна для обработки изображений или трёхмерных объектов. Кубическая решётка позволяет легко написать ПО, производящее ряд основных операций над плоскими и трёхмерными спрайтами Rotating_Doughnut_S2
  3. Кубическая решётка позволяет легко написать ПО для совершения следующих операций над двумерными или трёхмерными спрайтами: перемещение, уменьшение и увеличение по осям, изменение цвета и прозрачности. Вращение можно тоже легко описать параллельными расчётами с помощью оператора вращения. Заметим, что 2D-спрайты состоят из пикселов в квадратной решётке, 3D-спрайты из пикселов в кубической решётке.
Запись опубликована в рубрике ISI. Добавьте в закладки постоянную ссылку.