2012-04-03 4 views
1

Я просто задавался вопросом, почему возникает необходимость преодолевать все трудности создания распределенных систем для массивной параллельной обработки, когда мы можем просто создать отдельные машины, которые поддерживают сотни или тысячи ядер/процессоров (или даже GPGPU) на машину?Параллельные вычисления: распределенные системы и многоядерные процессоры?

В основном, почему вы должны выполнять параллельную обработку по сети машин, когда ее можно сделать гораздо дешевле и гораздо надежнее на 1 машине, которая поддерживает многочисленные ядра?

ответ

2

Я думаю, что это дешевле. Эти машины доступны сегодня, не нужно изобретать что-то новое.

Следующая проблема будет в сложности материнской платы, представьте себе 10 процессоров на одном MB - столько ссылок! И если один из этих процессоров умирает, он может уничтожить всю машину.

Конечно, вы можете написать программу для GPGPU, но это не так просто, как написать ее для CPU. Есть много ограничений, например. кэш на ядро ​​очень мало, если таковые имеются, вы не можете связываться между ядрами (или можете, но это очень дорого) и т. д.

Связь многих компьютеров более стабильна, более масштабируема и дешевле из-за долгой истории использования.

0

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

Если у вас нет общей памяти, тогда вы эффективно работаете с разными машинами, даже если они все в одном окне.

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

Учитывая, что это так, мало подходит для создания многоядерных индивидуальных машин, хотя некоторые из них существуют, например. nvidia tesla ...

Смежные вопросы