Результаты просчётов

Наконец переходим к самому интересному к результатам просчётов. Долгий путь был проделан только лишь ради этого момента. Конечно в кластере ОмГТУ не так много узлов всего, а свободных было и того меньше. Мне позволили использовать не более 16 узлов одновременно. Или точнее 16 процессоров, которые расположены на 2-х узлах.

Результаты просчётов на кластере

Эксперименты по параллелизации решения уравнения Лапласа проводились на вычислительном кластере омского государственного технического университета (ОмГТУ), который состоит из 4-х вычислительных узлов и 1-го управляющего на базе серверов Hewlett Packard ProLiant DL160 G5.

Каждый узел содержит по два четырёхядерных процессора Intel Xeon X5472 3.0GHz Quad Core и по 8 Гб оперативной памяти PC2-5300 ECC. Сервера соединены между собой каналом в 1 гигабит. Узлы работают под управлением операционной системы Red Hat Enterprise Linux HPC.

Для начала задача была просто распараллелена на 6 и 16 процессоров для того чтобы проверить не будет ли такого падения производительности, что дальнейшие испытания не имели бы смысла. Результаты запусков можно увидеть в таблице 1.

Таблица 1. Параллельный метод конечных разностей

Размер задачи

Количество ядер

Период обмена

Время полное, с

Время вычислений, с

Время синхронизации, с

Кол-во итераций

500х500

1

37.225

37.225

18441

500х500

6

2

28.206

7.54

20.666

23260

500х500

6

10

17.335

11.1

6.235

34500

500х500

6

25

19.975

16.3

3.675

50550

500х500

6

50

28.227

25.35

2.877

78600

1000х1000

1

644.292

644.292

78162

1000х1000

6

2

240.757

114.18

126.577

91048

1000х1000

6

10

173.04

141.33

31.71

112720

1000х1000

6

25

201.282

184.432

16.85

147150

1000х1000

6

50

279.875

268.028

11.847

213400

2000х2000

1

7053.525

7053.525

201641

2000х2000

6

2

2686.954

1265.074

1421.88

239966

2000х2000

16

2

1676.773

505.968

1170.805

249936

2000х2000

16

10

852.919

582.862

270.057

284070

2000х2000

16

25

791.305

657.401

133.904

322050

2000х2000

16

50

961.324

845.824

115.5

428050

4000х4000

1

>86400

>86400

4000х4000

16

2

23569.43

4817.204

18752.224

525616

4000х4000

16

10

9208.121

5127.927

4080.194

509650

4000х4000

16

25

6116.352

5038.785

1077.567

488025

4000х4000

16

50

7118.494

6477.505

640.989

578200

Как видно из таблицы падения производительности не только не происходит, но, даже наоборот, параллелизация ускоряет решение задачи в десятки раз, особенно для матриц больших размерностей и на большом количестве ядер: 2000х2000, 4000х4000.

Результаты просчётов на компьютере

Следующий эксперимент был развёрнут на бытовых вычислителях — обычным компьютере и ноутбуке, которые были соединены между собой в локальную сеть. Самая слабая конфигурация: Intel Core i5-2410M 2.3 GHz Doublecore. Синхронизация осуществлялась через веб-сервер apache 2.0 при помощи языка php, передача на сервер так же осуществлялась скриптом php. На каждой машине было запущенно по два решателя, для каждого из которых было выделено по ядру. Веб-сервер был запущен на одной из машин, которая принимала участия в расчётах. Результаты второго эксперимента можно увидеть в таблице 2.

Таблица 2. Запуск экспериментов на бытовых вычислителях

Размер задачи

Количество ядер

Период обменов

Время полное

Время вычислений

Время синхронизации

Кол-во итераций

500х500

1

22.741

22.741

11493

500х500

4

100

516.595

12.793

503.802

500х500

4

200

440.042

20.696

419.346

63800

500х500

4

500

288.525

21.435

267.09

66000

500х500

4

1000

175.334

24.792

150.542

73000

1000х1000

1

319.727

319.727

52697

1000х1000

4

100

2957.047

180.433

2776.614

135900

1000х1000

4

200

3072.167

230.871

2841.296

174800

1000х1000

4

500

1810.272

373.831

1436.441

284000

1000х1000

4

1000

1049.794

391.383

658.411

297000

1500х1500

1

1217.997

1217.997

83073

1500х1500

4

200

2826.717

510.675

2316.042

160200

1500х1500

4

400

2160.194

556.366

1603.828

177200

1500х1500

4

800

866.670

517.652

349.018

127200

1500х1500

4

1000

533.209

289.175

244.034

87000

1500х1500

4

1600

245.769

144.195

101.574

41600

Из таблицы видно, что время синхронизации достаточно велико, из-за чего для малых задач смысла использовать такую параллелизацию нет. Второе, на что хотелось бы обратить внимание это количество итераций для матриц размера 1500х1500 и периода обмена больше 400. Из таблицы видно, что количество итераций уменьшается, чего быть не должно. Это как раз тот эффект, о котором упоминалось в главе 2. Когда решение подзадачи сходится к какому-то промежуточному решению. Когда период обмена слишком высок, то есть вероятность того, что подзадачи на всех решателях сойдутся к какому-то временному решению, после чего сработает критерий завершения и вычисления будут завершены.

Бонус

Бонус тем, кто дочитал — фотки из серверной. Сразу оговорюсь, что я там не заведую и к этому ужасу не причастен.

Ужасы серверной Ужасы серверной Ужасы серверной Ужасы серверной

 

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.