Разработка лабораторного комплекса "Кластерные технологии"

Типы кластеров и анализ кластерных технологий. Принципы работы среды MPICH. Разработка рабочих заданий для лабораторных работ, программного обеспечения для лабораторного комплекса. Подготовка рабочих мест и описание хода выполнения лабораторных работ.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 13.02.2016
Размер файла 3,7 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Опции запуска MPI-программы

Сложность задачи

Время выполнения

Число узлов

Число ядер

1

8

1000000000

1.264005

2

8

1000000000

0.702406

3

8

1000000000

0.567381

4

8

1000000000

0.447176

5

8

1000000000

0.412220

6

8

1000000000

0.366205

7

8

1000000000

0.298248

8

8

1000000000

0.241296

9

8

1000000000

0.214650

10

8

1000000000

0.163198

1

1

1000000

0.017913

2

1000000

0.009362

4

1000000

0.004605

8

1000000

0.002418

2

8

1000000

0.001659

4

8

1000000

0.000832

8

8

1000000

0.000616

16

8

1000000

0.000605

1

1

16777216

0.199176

2

33554432

0.210453

4

67108864

0.231804

8

134217728

0.224581

2

8

268435456

0.221952

4

8

536870912

0.264089

8

8

1073741824

0.272010

3. СИСТЕМОТЕХНИЧЕСКИЙ РАСЧЁТ: РАСЧЁТ ПОКАЗАТЕЛЕЙ ЭФФЕКТИВНОСТИ ВЫЧИСЛЕНИЙ

3.1 Описание показателей эффективности параллельных вычислений

Содержание лабораторной работы №3 связано с оценкой показателей эффективности вычислительного процесса на базе кластерных технологий. К таким показателям относятся ускорение, эффективность алгоритма и стоимость вычислений.

Ускорение (speedup), получаемое при использовании параллельного алгоритма для p процессоров, по сравнению с последовательным вариантом выполнения вычислений определяется величиной

Sp(n)=T1(n)/Tp(n),

т.е. как отношение времени решения задач на скалярной ЭВМ к времени выполнения параллельного алгоритма (величина n применяется для параметризации вычислительной сложности решаемой задачи и может пониматься, например, как количество входных данных задачи).

Эффективность (efficiency) использования параллельным алгоритмом процессоров при решении задачи определяется соотношением

Ep(n)=T1(n)/(pTp(n))=Sp(n)/p

(величина эффективности определяет среднюю долю времени выполнения алгоритма, в течение которой процессоры реально задействованы для решения задачи).

Из приведенных соотношений можно показать, что в наилучшем случае Sp(n)=p и Ep(n)=1. При практическом применении данных показателей для оценки эффективности параллельных вычислений следует учитывать два важных момента:

При выборе надлежащего параллельного способа решения задачи может оказаться полезной оценка стоимости (cost) вычислений, определяемой как произведение времени параллельного решения задачи и числа используемых процессоров

Cp=pTp.

В связи с этим можно определить понятие стоимостно-оптимального (cost-optimal) параллельного алгоритма как метода, стоимость которого является пропорциональной времени выполнения наилучшего последовательного алгоритма.

Оценка показателей производится по результатам измерений, полученным при выполнении первых двух лабораторных работ и сведены в таблицы 3.1 и 3.2.

3.2 Описание хода лабораторной работы №3

Рассчитать показатели эффективности алгоритмов (ускорение, эффективность, стоимость), на основании данных, полученных в Лабораторных №1 и №2.

Таблица 3.1 Расчёт показателей эффективности вычислений кластера на базе MPICH2

Вычислительные узлы

Сложность задачи

Время выполнения

Ускорение

Sp(n) =

T1(n)/Tp(n)

Эффективность

Ep(n) = Sp(n)/p

Стоимость

Cp = pTp

Узел 1

Узел 2

1

0.010345

0.03006283

0.00751571

0.04138

1000

0.003709

0.07387436

0.01846859

0.01484

1000000

0.006647

1.31412667

0.32853167

0.02659

10000000

0.150230

0.59016841

0.1475421

0.60092

100000000

0.428189

2.06752392

0.51688098

1.71276

500000000

1.638354

2.72440022

0.68110006

6.55342

1000000000

3.204190

2.78179758

0.6954494

12.8168

2000000000

6.402070

2.79194714

0.69798678

25.6083

Узел 1:1 процесс

1000000

0.008860

1

1

0.00886

Узел 1:2 процесса

1000000

0.004488

1.974153298

0.987076649

0.008976

Узел 1:4 процесса

1000000

0.004782

1.852781263

0.463195316

0.019128

Узел 1:8 процессов

1000000

0.005014

1.767052254

0.220881532

0.040112

Узел 1:16 процессов

1000000

0.006190

1.431340872

0.089458805

0.09904

Узел 1:32 процесса

1000000

0.007988

1.109163746

0.034661367

0.255616

Узел 1:64 процесса

1000000

0.013651

0.649036701

0.010141198

0.873664

Показатели, рассчитанные в Таблице 3.1 и ломанные на рисунке 3.1 численно и наглядно должны подтверждать выводы, сделанные в ходе лабораторной работы №1.

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

Таблица 3.2 Расчёт показателей эффективности вычислений кластера МИИТ Т-4700

Опции запуска MPI-программы

Сложность задачи

Время выполнения

Ускорение

Sp(n)=

T1(n)/Tp(n)

Эффектив-ность

Ep(n) = Sp(n)/p

Стоимость

Cp= pTp

Число узлов

Число ядер

1

8

1000000000

1.264005

8.8517854

1.10647317

10.112

2

8

1000000000

0.702406

15.929108

0.99556925

11.2385

3

8

1000000000

0.567381

19.7199078

0.82166282

13.6171

4

8

1000000000

0.447176

25.0207994

0.78189998

14.3096

5

8

1000000000

0.412220

27.1425477

0.67856369

16.4888

6

8

1000000000

0.366205

30.5531082

0.63652309

17.5778

7

8

1000000000

0.298248

37.5147562

0.66990636

16.7019

8

8

1000000000

0.241296

46.3691939

0.72451865

15.4429

9

8

1000000000

0.214650

52.1253249

0.72396285

15.4548

10

8

1000000000

0.163198

68.5590571

0.85698821

13.0558

1

1

1000000

0.017913

1

1

0.01791

2

1000000

0.009362

1.91337321

0.95668661

0.01872

4

1000000

0.004605

3.88990228

0.97247557

0.01842

8

1000000

0.002418

7.40818859

0.92602357

0.01934

2

8

1000000

0.001659

10.7974684

0.67484177

0.02654

4

8

1000000

0.000832

21.5300481

0.672814

0.02662

8

8

1000000

0.000616

29.0795455

0.4543679

0.03942

16

8

1000000

0.000605

29.6082645

0.23131457

0.07744

На кластере МИИТ Т-4700, рост накладных расходов при решении задачи низкой сложности делает сильное распараллеливание всё менее эффективным в отличие от случая с большой сложностью задачи, о чём свидетельствуют убывающий графики ускорения и эффективности(рис 3.2 и 3.3).

4. АНАЛИЗ ЧЕЛОВЕКО-МАШИННОГО ВЗАИМОДЕЙСТВИЯ

В данном разделе речь пойдёт о разработке метода оценки для определения готовности студента к обучению с использованием разрабатываемого лабораторного комплекса «Кластерные системы». В основе разработки теста лежит теория тестовых заданий (IRT).

4.1 Обзор теории тестовых заданий (Item response theory)

IRT создана в рамках направления «Data Mining» (которое во время создания IRT не называлось ещё никак) для выявления скрытых параметров, в данном случае определяющих успешность учащихся и информативность контрольно-измерительных материалов (так в современной литературе по обучающим технологиям называются задания для контрольных работ, промежуточных испытаний, экзаменов и т.п., мы же для краткости будем вести речь об экзаменах).

Достоинством IRT считается возможность сравнения по одной шкале результатов экзаменов как по оцениваемым, так и по заданиям. Фактически протокол экзаменов, записанный в виде таблицы (экзаменационную ведомость) можно единообразно читать как по строкам (результаты студента по многим экзаменам), так и по столбцам (результаты экзамена по группе студентов) и, следовательно, единообразно оценивать успеваемость студентов и информативность экзаменов в смысле критериальной валидности.

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

Основоположник IRT датский математик Г. Раш (G. Rasch) ввел две меры: «логит уровня знаний» и «логит уровня трудности задания». Первую он определил как логарифм отношения доли правильных ответов испытуемого на все задания теста, к доле неправильных ответов, а вторую - как логарифм доли неправильных ответов на задание теста к доле правильных ответов на тоже задание. Фактически предлагается перейти от самих оценок на экзамене к логарифмам оценок вероятностей успеха на экзамене для студента и вероятностей выполнения заданий для экзаменов и, соответственно, к статистикам по множеству испытуемых. В современных технологиях методы построения IRT-оценок не требуют больших затрат времени и вычислительных ресурсов.

Содержательно интерпретация IRT позволяет в статистическом смысле сравнить достижения разных студентов по разным учебным дисциплинам и строить соответствующие рейтинги.

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

В литературе известно мнение об общей устойчивости IRT-оценок в смысле test-retest-, crosstest- и test-subtest-валидностей, но, вообще говоря, в каждом конкретном случае эту устойчивость надо доказывать отдельно.

В IRT вводится основное предположение о существовании некоторой взаимосвязи между наблюдаемыми результатами и латентными качествами испытуемых. Предполагается, что каждому испытуемому ставится в соответствие только одно значение латентного параметра. Элементы первого множества -- это уровни знаний N испытуемых иi, где i = 1,...,N. Второе множество образуют значения латентного параметра дj, j = 1,…,K, равные трудностям k заданий. На практике решается задача по ответам испытуемых на задания оценить значения латентных параметров и и д.

4.2 Процедура расчёта

Чтобы разработать тест для определения готовности студента к обучению с использованием разрабатываемого лабораторного комплекса «Кластерные системы», десяти испытуемым были предложены 12 заданий. В дихотомической матрице (Таблица 4.1) ответы характеризуется двумя символами 0 и 1. Нулю соответствует неверный ответ, единице - верный ответ.

Таблица 4.1 Бинарная матрица результатов тестирования

Вопросы

1

2

3

4

5

6

7

8

9

10

11

12

Испытуемые

1

1

1

1

1

0

1

1

1

0

1

1

1

2

1

1

0

1

1

0

0

1

1

0

1

1

3

0

1

0

0

0

1

1

0

0

0

0

1

4

0

0

0

0

0

0

0

0

0

0

0

0

5

0

0

0

0

0

0

0

0

0

0

1

1

6

1

1

0

1

1

1

1

1

1

0

1

1

7

1

1

0

0

0

1

1

1

0

0

1

0

8

1

1

1

1

1

1

1

1

1

1

1

1

9

0

1

0

0

0

0

0

0

0

0

0

0

10

0

1

1

1

1

1

1

1

1

1

1

1

Вот список заданий, которые были предложены испытуемым:

1. В чём разница между C и C++?

2. Что такое Microsoft Visual C++?

3. Найдите ошибки во фрагменте кода C.#include <stdio.h> 

void main(); 

printf("Hello!!!\n");

return 0;

}

4. Напишите фрагмент кода на языке C, который будет вычислять количество кратных 3-ём элементов массива int mas[10].

5. Прокомментируйте данную запись на языке C: void Print(int x);

6. Что будет на экране после выполнения данного фрагмента кода?

#include <stdio.h> 

main() 

int x=2, y=5, z=-20, max; 

if( x < y) 

max=x; 

else 

max=y; 

if ( z<max) 

max=z; 

printf(" Максимальное из (%d, %d, %d)= %d \n",x, y, z, max); 

}

7. Что такое процесс? Что такое ядро процессора?

8. Что такое синхронизация процессов?

9. Какая команда ОС Linux выводит на экран список входящих в каталог файлов?

10. Каким образом запускаемой через терминал ОС Linux или ОС Windows программе передаются параметры?

11. Что такое интерактивный режим и пакетный режим работы?

12. Что такое служба ОС Windows?

Для дальнейшего анализа, нам потребуются значения Хi - индивидуального балла i-го испытуемого, количество верных ответов Rj, на j-е задание, количество неверных ответов Wj на j-е задание, доля верных ответов pj и доля неверных ответов qj.

После сортировки данных и вычисления указанных выше величин, таблица приобрела следующий вид:

Таблица 4.2 Бинарная матрица результатов тестирования с расчетами

Вопросы

2

11

12

6

7

8

1

4

5

9

3

10

X

Испытуемые

8

1

1

1

1

1

1

1

1

1

1

1

1

12

10

1

1

1

1

1

1

0

1

1

1

1

1

11

1

1

1

1

1

1

1

1

1

0

0

1

1

10

6

1

1

1

1

1

1

1

1

1

1

0

0

10

2

1

1

1

0

0

1

1

1

1

1

0

0

8

7

1

1

0

1

1

1

1

0

0

0

0

0

6

3

1

0

1

1

1

0

0

0

0

0

0

0

4

5

0

1

1

0

0

0

0

0

0

0

0

0

2

9

1

0

0

0

0

0

0

0

0

0

0

0

1

4

0

0

0

0

0

0

0

0

0

0

0

0

0

r

8

7

7

6

6

6

5

5

4

4

3

3

w

4

5

5

6

6

6

7

7

8

8

9

9

p

0.66

0.58

0.58

0.5

0.5

0.5

0.41

0.41

0.33

0.33

0.25

0.25

q

0.33

0.41

0.41

0.5

0.5

0.5

0.58

0.58

0.66

0.66

0.75

0.75

pq

0.22

0.24

0.24

0.25

0.25

0.25

0.24

0.24

0.22

0.22

0.18

0.18

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

В нашем случае это испытуемый 8, который ответил все 12 вопросов, и испытуемый 4, который наоборот не ответил ни на один. После их удаления можно приступить к расчёту сложности заданий и подготовленности испытуемых.

Таблица 4.3 Таблица расчёта подготовленности испытуемых

i

X

p

q

и0

(и0)2

10

11

0.917

0.083

2.398

5.750

1

10

0.833

0.167

1.609

2.590

6

10

0.833

0.167

1.609

2.590

2

8

0.667

0.333

0.693

0.480

7

7

0.583

0.417

0.336

0.113

3

4

0.333

0.667

-0.693

0.480

5

3

0.250

0.750

-1.099

1.207

9

1

0.083

0.917

-2.398

5.750

Сумма

2.457

18.961

Сначала необходимо вычислить доли верных pi и неверных qi=1- pi ответов испытуемых.

Далее вычисляем начальные значения уровня подготовленности испытуемых по формуле:

Здесь j пробегает значения от 1 до M, где M -количество испытуемых. Величины pj и qj рассчитаны нами ранее и приведены в таблице 4.2.

Таблица 4.4 Таблица расчёта сложности заданий

j

r

p

q

В0

(в0)2

2

5

0.833

0.167

-1.609

2.590

11

5

0.833

0.167

-1.609

2.590

12

5

0.833

0.167

-1.609

2.590

1

4

0.667

0.333

-0.693

0.480

6

4

0.667

0.333

-0.693

0.480

7

4

0.667

0.333

-0.693

0.480

8

4

0.667

0.333

-0.693

0.480

4

3

0.500

0.500

0.000

0.000

5

2

0.333

0.667

0.693

0.480

9

2

0.333

0.667

0.693

0.480

3

1

0.167

0.833

1.609

2.590

10

1

0.167

0.833

1.609

2.590

-2.996

15.834

В таблицах 4.3. и 4.4 мы имеем значения параметров на разных интервальных шкалах. Нам надо свести их в единую шкалу стандартных оценок. Для этого необходимо вычислить дисперсии  и , используя данные из таблиц.

Далее вычисляем угловые коэффициенты

Наконец, мы можем записать оценки параметров и и в на единой интервальной шкале.

Результаты сведены в таблицы 4.5 и 4.6 (второй столбец).

Таблица 4.5 Сложность заданий

j

вn

2

-2.465

11

-2.465

12

-2.465

1

-0.82851

6

-0.82851

7

-0.82851

8

-0.82851

4

0.409456

5

1.647417

9

1.647417

3

3.283913

10

3.283913

Таблица 4.6 Подготовленность испытуемых

i

иn

10

3.552311

1

2.302181

6

2.302181

2

0.849367

7

0.283845

3

-1.34866

5

-1.99154

9

-4.0516

4.3 Построение характеристических кривых для заданий

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

В принципе, вместо логистической функции можно использовать любую функцию со смыслом функции распределения вероятностей, проверив обычными методами статистическую гипотезу о соответствии теоретического и наблюдаемого распределений, использование логистической функции связано отчасти с историческими причинами, отчасти с простотой вычислений. Например, известна модель Фергюссона, в которой вместо логистической функции строится функция нормального распределения и вводится поправочный коэффициент в показателе экспоненты для согласования моделей Раша и Фергюссона.

Характеристические кривые заданий показывают вероятность успеха в зависимости от уровня его подготовленности. Чем выше уровень подготовленности и испытуемого, тем выше вероятность успеха в том или ином задании. Отметим, что в точках, где и = в вероятность правильного ответа должна быть равной 0,5. То есть, если трудность задания равна уровню подготовленности (ability) испытуемого, то он с равной вероятностью может справиться или не справиться с этим заданием.[8]

Сами кривые для нашего теста представлены на рисунке 4.1.

Рисунок 4.1 Характеристические кривые сложности заданий(сложность 1M итераций)

1. 4.4 Обсуждение результатов и дальнейших действий

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

Поэтому характеристические кривые заданий должны равномерно покрыть шкалу потенциально возможных уровней знаний испытуемых. При измерении уровня знаний по классической модели для каждого обучаемого формируется экзамен определенной длины из выбранных случайным образом заданий. При этом экзамены отличаются по сложности, и итоговая оценка формируется по статистике правильных ответов с учетом весовых коэффициентов заданий. Недостатком такого метода может быть появление ситуаций, когда слабому студенту попадается сложное задание и как следствие этого - практическое отсутствие ответов. А сильный студент может получить легкий экзамен и не проявить свои способности. Для обеспечения максимальной информативности результатов контроля необходимо, чтобы средняя сложность предъявляемого обучаемому задания соответствовала его гипотетическому уровню готовности.

Практически это можно осуществить с помощью адаптивного тестирования.

Под адаптивным тестовым контролем понимают компьютеризованную систему научно обоснованной проверки и оценки результатов обучения, настраиваемую под когнитивные и прочие возможности каждого конкретного студента. Эффективность контрольно-оценочных процедур повышается при использовании многошаговой стратегии отбора и предъявления заданий, основанной на алгоритмах с полной контекстной зависимостью, в которых очередной шаг совершается только после оценки результатов выполнения предыдущего шага. После выполнения испытуемым очередного задания каждый раз возникает потребность в принятии решения о подборе трудности следующего задания в зависимости от того, верным или неверным был предыдущий ответ. Алгоритм отбора и предъявления заданий строится по принципу обратной связи, когда при правильном ответе испытуемого очередное задание выбирается более трудным, а неверный ответ влечет за собой предъявление последующего более легкого задания, чем то, на которое испытуемым был дан неверный ответ. Также есть возможность задания дополнительных вопросов по темам, которые обучаемый знает не очень хорошо для более тонкого выяснения уровня знаний в данных областях. Таким образом, можно сказать, что адаптивная модель напоминает преподавателя на экзамене - если обучаемый отвечает на задаваемые вопросы уверенно и правильно, преподаватель достаточно быстро ставит ему положительную оценку. Если обучаемый начинает «плавать», то преподаватель задает ему дополнительные или наводящие вопросы того же уровня сложности или по той же теме, и в зависимости от ответов повышает или понижает уровень сложности заданий. И, наконец, если обучаемый с самого начала отвечает плохо, оценку преподаватель тоже ставит достаточно быстро, но отрицательную.

К непременным условиям реализации таких алгоритмов следует отнести:

· наличие банка калиброванных заданий с устойчивыми оценками их параметров, позволяющими прогнозировать успех или неуспех испытуемого при подборе очередного задания адаптивного теста;

· использование программно-инструментальных средств и компьютерных программ для индивидуализации алгоритмов подбора заданий, основанных, как правило, на оценке вероятности правильного выполнения учебных заданий;

· использование параметрических моделей Item Response Theory.[7]

Тестирование можно начать с задания средней сложности, т.е. с задания со сложностью равной 0 логитов. А следующее задание будет зависеть от правильности ответа испытуемого. Если испытуемый решит задание верно, то следующий вопрос будет сложнее, иначе будет предложен вопрос легче.

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

Достоинства:

· Выявляет темы, которые обучаемый знает плохо и позволяет задать по ним ряд дополнительных вопросов.

Недостатки:

· Заранее неизвестно, сколько вопросов необходимо задать обучаемому, чтобы определить его уровень знаний. Если вопросов, заложенных в систему тестирования, оказывается недостаточно, можно прервать тестирование и оценивать результат по тому количеству вопросов, на которое ответил обучаемый; В таких случаях нужны поправки на динамику работоспособности и утомления испытуемого. Этой поправки нет в известных моделях, следовательно, необходимо исправить модель, что бы в ней она учитывалась.[8]

4.5 Вывод

Из таблицы 3.2.5 видно, что ?вi=-0.44. Рекомендуется стремиться к тому, чтобы ?вi было близко к нулю. Чем ближе ?вi тем более сбалансированным является тест. Однако если мы захотим оптимизировать тест и сократить задания, которые обладают одинаковой характеристической кривой, то тест в среднем станет труднее, т.к. в нашем случае сократить придётся именно простые задания. С помощью такого теста адекватно оценить знания испытуемых с невысоким уровнем подготовленности будет тяжело. Наиболее целесообразным решением данной проблемы может стать применение адаптивного тестирования, описанного ранее(п. 3.5.).

5. ЭКОНОМИЧЕСКАЯ ЧАСТЬ

5.1 Постановка экономической задачи

Цель данной работы - Разработка лабораторного комплекса «Кластерные технологии» в рамках дисциплины «Высокопроизводительные вычислительные системы» для обучения студентов кафедры АСУ.

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

Настоящая разработка должна позволить:

· Повысить уровень подготовки студентов кафедры АСУ

· Оптимизировать временные затраты на организацию учебного процесса

В результате дипломного проектирования будет разработан лабораторный комплекс, для изучения и решения задач параллельного программирования с использованием средств университета: кластера и стационарных компьютеров, объединённых ЛВС.

Для оценки эффективности разработки выбран следующий показатель социальной эффективности:

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

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

5.2 Расчет затрат, связанных с разработкой лабораторного комплекса

Затраты, связанные с разработкой лабораторного комплекса определяются как сумма затрат на техническое, программное обеспечение и разработку методического и программного обеспечения.

Стоимость вычислительной техники, необходимой выполнения лабораторных работ может быть представлена в виде таблицы:

Таблица 5.1 Стоимость вычислительной техники

Наименование элемента ТО

Количество

Назначение

Цена, руб.

Ц

Настольный компьютер(включая периферийные устройства)

14

Рабочие станции для студентов в ауд.1313

40 000

560 000

Кластер МИИТ Т-4700 (полная стоимость проекта, монтаж, аппаратное и программное обеспечение)

1

решения ресурсоемких вычислительных задач при промышленном проектировании

80 000 000

80 000 000

Коммутатор

1

Коммутатор в ауд. 1313

10 000

10 000

В данном случае выполнение лабораторных работ реализуется на имеющемся оборудовании, которое не закупается специально, а затрачивает часть свободного ресурса , поэтому рассчитаем удельную стоимость технического обеспечения по формуле:

Куд=Ц*t/Tгод

где Ц-стоимость первоначальная, используемого оборудования;

Ц1 =570 000 руб.

Ц2= 80 000 000 руб.

Для обучения студентов потребуется 3 часа работы на кластере МИИТ Т-4700 и 24 часа работы в аудитории в год

t 1= 24 ч;

t2=3 ч.

Т1год ,Т2год - временной ресурс имеющегося оборудования за год:

Т1год= 8*22*12 = 2 112 ч;

Т2год= 24*30*12 = 8640 ч.

Ц2 следует умножить на 20/64, т.к. для учебных нужд есть возможность задействовать не все узлы кластера 20 из них достаточно.

Куд1= (570 000 х 24)/2112 = 6470 руб.

Куд2= (80 000 000 х 20/64 х 3)/8640 = 8680 руб.

Затраты на реконструкцию и строительство в случае кластера МИИТ Т-4700 уже учтены, а в аудитории 1313 не требуются, поэтому дополнительных расчётов стоимости строительства и реконструкции не потребуется.

Стоимость периферийных устройств так же учтена в цене кластера и настольного компьютера.

Таблица 5.2 Стоимость лицензий на программное обеспечение

Наименование элемента ПО

Количество

Назначение

Цена, руб.

Ц

MS Windows XP Professional

14

Операционная система рабочей станции в ауд. 1313

5 500

77 000

Остальное используемое программное обеспечение распространяется свободно.

ЦПО=77 000 руб.

Как и в случае с техническим обеспечением должна быть рассчитана удельная стоимость на программное обеспечение

Куд3= (77 000 х 24)/2112 = 875 руб.

Куд=Куд1+Куд2+Куд3=16 025 руб.

Процесс проектирования методического обеспечения лабораторного комплекса и программного обеспечения «Интерфейс для MPICH» состоит из следующих работ:

1. Получение задания на проектирование и постановка задачи;

2. Изучение задания;

3. Сбор и изучение научно-технической литературы;

4. Составление аналитического обзора состояния вопроса;

5. Разработка программного обеспечения;

5.1. Описание требований к ПО;

5.2. Построение диаграмм;

5.3. Кодирование;

5.4. Отладка;

5.5. Анализ полученных результатов;

5.6. Корректировка программы;

6. Разработка методического обеспечения лабораторного комплекса;

6.1. Разработка содержания лабораторных работ;

6.2. Разработка рабочих заданий;

6.3. Описание подготовки рабочих мест;

6.4. Описание хода выполнения лабораторных работ;

6.5. Описание хода выполнения лабораторных работ с участием кластера;

Таблица 5.3. Расчёт затрат на разработку.

Этап проектирования

Трудоемкость в ч/часах

Исполнитель

ЗП + ед.соц.налог

в час

Эл.энерго и амортизация

в час

Накладные расходы

в час

?затраты

Должность

Количество

Оклад

1

8

Дипломник

1

1700

10

3,62

0

108.96

2

16

Дипл.

1

1700

10

3,62

0

217.92

3

40

Дипл.

1

1700

10

3,62

0

544.8

4

40

Дипл.

1

1700

10

3,62

0

544.8

5.1

4

Дипл.

1

1700

10

7,24

0

68.96

5.2

4

Дипл.

1

1700

10

7,24

0

68.96

5.3

24

Дипл.

1

1700

10

7,24

0

413.76

5.4

24

Дипл.

1

1700

10

7,24

0

413.76

5.5

4

Дипл.

1

1700

10

7,24

0

68.96

5.6

8

Дипл.

1

1700

10

7,24

0

137.92

6.1

8

Дипл.

1

1700

10

3,62

0

108.96

6.2

8

Дипл.

1

1700

10

3,62

0

108.96

6.3

8

Дипл.

1

1700

10

3,62

0

108.96

6.4

160

Дипл.

1

1700

10

7,24

0

2758.4

6.5

4

Дипл

1

1700

10

199,24

0

836.96

6511.04

При расчете стоимости электроэнергии, потребляемой в час в процессе проектирования считалось, что 1 компьтер потребляет ? 0,6 кВт/час, а цену принять равной 1,5 руб/кВт.

Кластер потребляет ? 60 кВт, что обходится в 150руб./ч., но так как мы не используем весь кластер, как и раньше будем учитывать потребление электроэнергии только 20/64 кластера.

Часовая амортизация зависит от цены компьютера и режима его работы. Для режима работы ПК, соответствующего наличию выходных и праздничных дней, и 8-ми часовому рабочему дню, можно считать часовую амортизацию по формуле:

,

Где Ц- цена ЭВМ,

0,11- норма амортизации в год;

173- норма работы часов в месяц.

При использовании одного компьютера

ач=2.12 руб./ч

Для расчёта амортизации кластера МИИТ Т-4700 формула аналогичная

ач=142 руб./ч

Итого затраты на разработку и внедрение лабораторного комплекса составят:

Куд+?затраты= 16025 + 6511=22536 руб.

5.3 Экономическая эффективность

5.3.1 Расчёт показателей эффективности

Рассчитаем экономическую эффективность разработки лабораторного комплекса.

С точки зрения расчёта экономического эффекта задача является прямой. Выводы об экономической эффективности будут сделаны на основании показателя «Экономический уровень оплаты труда» (ЭУОТ).

Таблица 5.4 Расчёт ЭУОТ

Исходная доля времени на выполнение функции соответствующего уровня

Уровень оплаты труда в год

Уровень сотрудника

1

2

3

1

2

0

3

0

0

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

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

Таблица 5.5 Годовые заработные платы сотрудников

Сотрудник

Заработная плата в год

Лектор(доцент)

180000

Лаборант

60000

Таблица 5.6 Оценка ЭУОТ на текущий момент

Исходная доля времени на выполнение функций соответствующего уровня

ЭУОТ

Задачи уровня лектора

Задачи уровня лаборанта

Лектор

0.7

0.3

220 408

Лаборант

0

0.7

85 714

Таблица 5.7 Оценка ЭУОТ при применении лабораторного комплекса

Исходная доля времени на выполнение функций соответствующего уровня

ЭУОТ

Задачи уровня лектора

Задачи уровня лаборанта

Лектор

0.9

0.1

193 333

Лаборант

0

1

60 000

Таблица 5.8 Расчёт эффекта

Уровень оплаты труда в год

«Экономический уровень оплаты труда» до внедрения ИТ

«Экономический уровень оплаты труда» после внедрения ИТ

Эффект

Лектор

180000

220 408

193 333

27075

Лаборант

60000

85 714

60 000

25714

Суммарный эффект

52789

5.3.2 Расчет затрат по эксплуатации лабораторного комплекса

При использовании компьютерного класса из 14 компьютеров 24 часа в год, расходы на электроэнергию составят:

3.62*14*24=1216 руб./год

При использовании части узлов кластера МИИТ Т-4700 3 часа в год получим:

142*3=428 руб./год

Итого затраты на электроэнергию 1644 руб./год.

5.3.3 Расчёт эффективности разработки

Следует учесть, что рассчитанный показатель ЭУОТ является далеко не главным показателем эффективности данной разработки. Самое главное в лабораторном комплексе это то, что он повысит уровень подготовки студентов кафедры АСУ, поможет выпускникам быть более востребованными и конкурентоспособными на рынке труда. Этот показатель представить в денежном выражении не представляется возможным.

Рассчитаем эффективность разработки:

, где

СТТ - текущие затраты при традиционной технологии,

СН - текущие затраты при новой технологии,

КАВТ - затраты на автоматизацию (разработку проекта).

СТТ -СН, рассчитан в пункте 3.1. =52 789 руб.

КАВТ=22536 руб. + 1644 руб. за первый год эксплуатации.

Е=52 789 / 24180=2.19

ЗАКЛЮЧЕНИЕ

Вычислительные кластеры используются в вычислительных целях, в частности в научных исследованиях. Для вычислительных кластеров существенными показателями являются высокая производительность процессора в операциях над числами с плавающей точкой (flops) и низкая латентность объединяющей сети, и менее существенными -- скорость операций ввода-вывода, которая в большей степени важна для баз данных и web-сервисов. Вычислительные кластеры позволяют уменьшить время расчетов, по сравнению с одиночным компьютером, разбивая задание на параллельно выполняющиеся ветки, которые обмениваются данными по связывающей сети.[1]

Один из разделов учебной дисциплины ВВС посвящен изучению кластерных технологий, однако в настоящее время отсутствует лабораторная поддержка данного направления. Представляется целесообразным включить в учебный процесс лабораторную работу, в рамках которой студенты могли бы отрабатывать практические навыки построения, использования и анализа кластеров различного типа.

СПИСОК ИСТОЧНИКОВ

1. Статья «Кластер» | Wikipedia

http://ru.wikipedia.org/wiki/%D0%9A%D0%BB%D0%B0%D1%81%D1%82%D0%B5%D1%80_(%D0%B3%D1%80%D1%83%D0%BF%D0%BF%D0%B0_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BE%D0%B2)

2. В.П. Гергель. «Высокопроизводительные вычисления для многоядерных многопроцессорных систем». Нижний Новгород - 2012.

3. Статья «MPI» | Wikipedia

http://ru.wikipedia.org/wiki/Message_Passing_Interface

4. Статья «MPICH и Windows» | Image Processing

http://iproc.ru/programming/mpich-windows/

5. Статья «Суперкомпьютер МИИТ Т-4700»

http://miit.ru/content/130385.pdf?id_wm=130385

6. Сайт загрузок MPICH2 Аргоннской Национальной Лаборатоории

http://?www.?mcs.?anl.?gov/?research/?projects/?mpich2/?downloads/?index.php??s=downloads

7. Центр загрузок Microsoft Corp.

http://www.microsoft.com/en-us/download/default.aspx

8. В.С. КИМ. «Тестирование учебных достижений». Монография. Уссурийск - 2010. Глава 5.

9. Статья «Использование Теории тестовых заданий (Item Response Theory) в адаптивном тестировании»

http://www.wikiznanie.ru/ru-wz/index.php/%D0%98%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5_%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D0%B8_%D1%82%D0%B5%D1%81%D1%82%D0%BE%D0%B2%D1%8B%D1%85_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B9_(Item_Response_Theory)_%D0%B2_%D0%B0%D0%B4%D0%B0%D0%BF%D1%82%D0%B8%D0%B2%D0%BD%D0%BE%D0%BC_%D1%82%D0%B5%D1%81%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B8

10. «Система пакетной обработки заданий Torque. Руководство пользователя.» Т-Платформы - 2014

11. З.А. Крепкая. «CASE-Средства проектирования информационных систем на железнодорожном транспорте на основе структуроного и объектно-ориентированного подходов. Часть 2. Унифицированный язык моделирования UML. CASE-средства объектно-ориентированного проектирования IBM Rational Rose» . Москва - 2008.

ПРИЛОЖЕНИЯ

Приложение 1. Листинг разработанного ПО

Листинг программы Интерфейс для MPICH

Project1.cpp

//---------------------------------------------------------------------------

#include <vcl.h>

#pragma hdrstop

//---------------------------------------------------------------------------

USEFORM("Unit1.cpp", Form1);

//---------------------------------------------------------------------------

WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)

{

try

{

Application->Initialize();

Application->CreateForm(__classid(TForm1), &Form1);

Application->Run();

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

catch (...)

{

try

{

throw Exception("");

}

catch (Exception &exception)

{

Application->ShowException(&exception);

}

}

return 0;

}

//---------------------------------------------------------------------------

Unit1.h

//---------------------------------------------------------------------------

#ifndef Unit1H

#define Unit1H

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <Grids.hpp>

#include <ExtCtrls.hpp>

#include <Menus.hpp>

#include <Dialogs.hpp>

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published: // IDE-managed Components

TButton *Button1;

TButton *Button2;

TButton *Button3;

TStringGrid *StringGrid1;

TButton *Button4;

TEdit *Edit1;

TEdit *Edit2;

TEdit *Edit3;

TEdit *Edit4;

TEdit *Edit5;

TGroupBox *GroupBox1;

TCheckBox *CheckBox1;

TLabel *Label1;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

TLabel *Label5;

TLabel *Label6;

TLabel *Label7;

TMainMenu *MainMenu1;

TMenuItem *N1;

TMenuItem *N2;

TMenuItem *N3;

TMenuItem *N4;

TMenuItem *N5;

TSaveDialog *SaveDialog1;

TOpenDialog *OpenDialog1;

void __fastcall Button3Click(TObject *Sender);

void __fastcall Button1Click(TObject *Sender);

void __fastcall Button2Click(TObject *Sender);

void __fastcall Button4Click(TObject *Sender);

void __fastcall FormCreate(TObject *Sender);

void __fastcall CheckBox1MouseUp(TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y);

void __fastcall N5Click(TObject *Sender);

void __fastcall N4Click(TObject *Sender);

void __fastcall N3Click(TObject *Sender);

void __fastcall N2Click(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//---------------------------------------------------------------------------

#endif

Unit.cpp

//---------------------------------------------------------------------------

#pragma hdrstop

#include "Unit1.h"

#include <vcl.h>

#include <fstream.h>

#include <string.h>

#include <math.h>

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button3Click(TObject *Sender)

{

String command;

//command= " ";

command="\""+Edit1->Text+"\" -hosts " +(StringGrid1->RowCount-1)+" ";

for (int i=1;i<StringGrid1->RowCount;i++){

command=command+ StringGrid1->Cells[0][i]+" ";

command=command+ "8 ";

}

command=command+" -noprompt "+ Edit4->Text+" "+Edit5->Text;

system(command.c_str());

ifstream f(Edit5->Text.c_str());

char str[5];

for(int i=1;i<StringGrid1->RowCount;i++)

{

f.getline(str,100);

StringGrid1->Cells[1][i]=str;

}

f.close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

StringGrid1->RowCount++;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

if(StringGrid1->Row==0)StringGrid1->Row++;

if(StringGrid1->RowCount>2){

for(int i=StringGrid1->Row;i<StringGrid1->RowCount-1;i++)

StringGrid1->Rows[i]= StringGrid1->Rows[i+1];

StringGrid1->RowCount--;}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

Edit3->Text="";

Edit3->Text="\""+Edit1->Text+"\" -hosts " +(StringGrid1->RowCount-1)+" ";

for (int i=1;i<StringGrid1->RowCount;i++){

Edit3->Text=Edit3->Text+ StringGrid1->Cells[0][i]+" ";

Edit3->Text=Edit3->Text+ StringGrid1->Cells[1][i]+" ";

}

Edit3->Text=Edit3->Text+"-noprompt "+ Edit2->Text;

system(Edit3->Text.c_str());

}

//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)

{

StringGrid1->Cells[0][0]="IP-адреса или имена узлов";

StringGrid1->Cells[1][0]="Число процессов";

}

//---------------------------------------------------------------------------

void __fastcall TForm1::CheckBox1MouseUp(TObject *Sender,

TMouseButton Button, TShiftState Shift, int X, int Y)

{

if (CheckBox1->State==cbUnchecked) {

Edit4->Enabled=false;

Edit5->Enabled=false;

Button3->Enabled=false;

Label1->Enabled=false;

Label2->Enabled=false;

}else {

Edit4->Enabled=true;

Edit5->Enabled=true;

Button3->Enabled=true;

Label1->Enabled=true;

Label2->Enabled=true;

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N5Click(TObject *Sender)

{

SaveDialog1->Execute();

if (SaveDialog1->FileName!="")

{

ofstream s( SaveDialog1->FileName.c_str());

s<<Edit1->Text.c_str()<<"\n";

s<<Edit2->Text.c_str()<<"\n";

s<<Edit3->Text.c_str()<<"\n";

s<<Edit4->Text.c_str()<<"\n";

s<<Edit5->Text.c_str()<<"\n";

s<<StringGrid1->RowCount<<"\n";

for (int i=1;i<StringGrid1->RowCount;i++)

{

s<<StringGrid1->Cells[0][i].c_str()<<"\n";

s<<StringGrid1->Cells[1][i].c_str()<<"\n";

}

s.close();

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N4Click(TObject *Sender)

{

OpenDialog1->Execute();

if (OpenDialog1->FileName!="")

{

ifstream o( OpenDialog1->FileName.c_str());

char str[100];

o.getline(str,100);

Edit1->Text=str;

o.getline(str,100);

Edit2->Text=str;

o.getline(str,100);

Edit3->Text=str;

o.getline(str,100);

Edit4->Text=str;

o.getline(str,100);

Edit5->Text=str;

o.getline(str,100);

StringGrid1->RowCount=StrToInt(str);

for (int i=1;i<StringGrid1->RowCount;i++)

{

o.getline(str,100);

StringGrid1->Cells[0][i]=str;

o.getline(str,100);

StringGrid1->Cells[1][i]=str;

}

o.close();

}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N3Click(TObject *Sender)

{

Form1->Close();

}

//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)

{

MessageBox(NULL,"Программа Интерфейс для MPICH\n для запуска MPI-программ","О прогамме",MB_OK);

}

//---------------------------------------------------------------------------

Листинг тестирующей MPI-программы

#include <stdio.h>

#include <math.h>

#include <conio.h>

#include "mpi.h"

double f(double a)

{

return (4.0 / (1.0+ a*a));

}

int main(int argc, char **argv)

{

int done = 0, n, myid, numprocs, i;

double PI25DT = 3.141592653589793238462643;

double mypi[160], pi[160], perf[20], h, sum, x, maxtime=0;

double startwtime = 0.0, endwtime;

int namelen;

char processor_name[MPI_MAX_PROCESSOR_NAME];

MPI_Init(&argc, &argv);

MPI_Comm_size(MPI_COMM_WORLD,&numprocs);

MPI_Comm_rank(MPI_COMM_WORLD,&myid);

MPI_Get_processor_name(processor_name,&namelen);

fprintf(stdout, "Process %d of %d is on %s\n", myid,numprocs,processor_name);

fflush(stdout);

if(myid==0)

{

fflush(stdout);

n=10000000*numprocs;

startwtime = MPI_Wtime();

}

MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);

double procstime=MPI_Wtime();

if(n==0)

done = 1;

else

{

h = 1.0 / (double) n;

sum = 0.0;

for(i = myid + 1 ; (i <= n) ; i += numprocs)

{

x = h * ((double)i - 0.5);

sum += f(x);

}

double procetime=MPI_Wtime();

for(i=0;i<numprocs;i++)mypi[i]=0;

mypi[myid] = procetime - procstime;

MPI_Reduce(mypi, pi, numprocs, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);

if(myid==0)

{

for(int j=0;j<numprocs;j++){

printf("%.9f\n", pi[j]);

}

for(int j=0;j<numprocs;j=j+8){

perf[j/8]=(pi[j]+pi[j+1]+pi[j+2]+pi[j+3]+pi[j+4]+pi[j+5]+pi[j+6]+pi[j+7])/8;

if(maxtime<perf[j/8])maxtime=perf[j/8];

printf("%.9f\n", perf[j/8]);

}

int numhosts=numprocs/8;

FILE *of;

of=fopen(argv[1],"w");

for(int j=0;j<numhosts;j++){

int p=floor(maxtime/perf[j]*8+0.8);

printf("%d\n", p);

fprintf(of,"%d\n", p);

}

fclose(of);

endwtime = MPI_Wtime();

printf("wall clock time = %f\n", endwtime-startwtime);

fflush(stdout);

}

}

MPI_Finalize();

return 0;

}

Приложение 2. Инструкция по написанию и запуску заданий на кластере МИИТ Т-4700

Для запуска задач на вычислительном кластере МИИТ Т-4700 необходимо пользоваться менеджером распределённых ресурсов Torque. Пользователь готовит файл задания для Torque и ставит его в очередь командой qsub. При этом пользователь запрашивает необходимые для этой задачи ресурсы: число узлов кластера, число процессоров на каждом из них, необходимое количество оперативной памяти и время выполнения задачи.

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

Файл задания представляет собой командный файл, который настраивает нужные переменные среды (пути, расположение временных каталогов, файлов с данными и выходных файлов) и запускает программу пользователя.

Спецификация необходимых ресурсов может быть осуществлена в команде qsub с помощью ключей командной строки.

· -l nodes=1:ppn=2 Число узлов=1, число ядер=2

· -l mem=100mb Объём выделенной на задание памяти = 100mb

· -l walltime=1:30:00 Время выполнения задания

· -q single Название очереди для задания

· -o sleep.out Название файла для стандартного вывода

· -e sleep.err Название файла для вывода ошибок

Например, чтобы поставить в очередь под названием single задачу sleep.job на один процессор, на полтора часа, используя сто мегабайт памяти, нужно выполнить такую команду:

qsub -l nodes=1:ppn=1,mem=100mb,walltime=1:30:00 -q single sleep.job

Еще одна возможность задания ресурсов - это указание их внутри самого командного файла, в строках-комментариях начинающихся с #PBS. Например, файл sleep.job, который описывает задание, похожее на приведённое выше, может выглядеть следующим образом:

#!/bin/bash

#PBS -q single

#PBS -l nodes=1:ppn=1,mem=100mb,walltime=1:30:00

#PBS -S /bin/bash

#PBS -o sleep.out

#PBS -e sleep.err

#PBS -N sleep

echo " Start date:`date`"

sleep 10

echo " End date:`date`"

В таком случае задание запускается просто как qsub sleep.job. В отличие предыдущего задания, у этого будет sleep, а стандартный вывод и вывод ошибок будут помещены в файлы sleep.out и sleep.err соответственно. С помощью оператора echo можно также поместить в выходной файл желаемые данные. В нашем примере после выполнения задания в sleep.out будет выведено:

Start date:<текущая дата>

End date:<текущая дата>

Полный список параметров и ресурсов для qsub можно найти c помощью man qsub и man pbs_resources.

После того, как задание успешно поставлено в очередь, ему присваивается уникальный идентификатор задачи (Job ID). Используя этот номер, можно манипулировать заданием в очереди:

· - qstat Посмотреть состояние очереди;

· - qdel Удалить задание из очереди;

· - qalter Изменить параметры уже запущенного задания;

· - qrerun Перезапустить задание, если это возможно;

· - qhold Приостановить задание;

· - qrls Запустить приостановленное задание.

Каждая из этих команд имеет множество параметров, ознакомиться с которыми пользователь может при помощи команды man <имя команды>, например man qstat.

Если задание было успешно поставлено в очередь, qstat по умолчанию выведет на экран таблицу, столбцы которой имеют следующие значения:

· Job id - уникальный идентификатор задания;

· Name - имя исполняемого задания;

· User - имя владельца задания;

· Time Use - общее процессорное время, использованное заданием на данный момент

· S - состояние задачи (Q - находится в очереди, R - вычисляется, E - произошла ошибка при выполнении или задание завершает выполнение);

· Queue - название очереди, в которой запущена задание.

Пример запуска команды qstat:

Job id Name User Time Use S Queue

------------------- ---------------- --------------- -------- - -----

1972.master PCGAMESS davydovk 00:00:00 R single

1993.master cpi-mpirun kruchin 00:00:00 R para

1994.master dl chepasov 0 Q para

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.