Windows Azure: распараллеливание кода - PullRequest
0 голосов
/ 16 июня 2010

У меня есть операция умножения матриц.Я хочу распараллелить выполнение этих операций через несколько процессоров. Это можно сделать на высокопроизводительном вычислительном кластере с использованием MPI (Message Passing Interface).

Как и я, могу ли я провести некоторое распараллеливание в облаке, используя несколькорабочие роли.Есть ли способ сделать это.

Ответы [ 2 ]

2 голосов
/ 17 июня 2010

Июньская версия Azure SDK and Tools, версия 1.2, теперь поддерживает .NET 4. Теперь вы можете использовать преимущества параллельных расширений, включенных в .NET 4. Это включает Parallel.ForEach () и Parallel.For (). , как примеры.

Task Parallel Library (TPL) поможет вам только на одной виртуальной машине - она ​​не поможет разделить вашу работу между несколькими виртуальными машинами. Поэтому, если вы настроите, скажем, 2-, 4- или 8-ядерную виртуальную машину, вы действительно увидите значительное повышение производительности при параллельном выполнении.

Теперь: если вы хотите разделить работу между экземплярами, вам нужно создать способ назначения работы каждому экземпляру. Например: установите одну рабочую роль в качестве координатора vm, а другую рабочую роль с n экземплярами в качестве вычисления vm. Затем пусть координатор vm перечислит все экземпляры вычисления vm и разделит работу n способами. Отправьте 1 / n рабочих сообщений каждому экземпляру через вызовы WCF через внутреннюю конечную точку. Каждый экземпляр vm обрабатывает каждое рабочее сообщение (возможно, также и с TPL) и сохраняет свой результат в хранилище больших двоичных объектов или таблиц, доступном для всех экземпляров.

0 голосов
/ 08 октября 2010

В дополнение к передаче сообщений, очереди Azure идеально подходят для этой ситуации, поскольку каждая рабочая роль может выполнять чтение из очереди для выполнения работы, а не для итераций.Это гораздо менее хрупкий подход, поскольку количество рабочих может динамически меняться по мере масштабирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...