User Tools

Site Tools


rfbr:rje:taskschema

<html> <?xml version=“1.0” encoding=“UTF-8”?> <!DOCTYPE html

PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd">

<html xmlns=“http://www.w3.org/1999/xhtml”><!–This file was converted to xhtml by OpenOffice.org - see http://xml.openoffice.org/odf2xhtml for more info.–><head profile=“http://dublincore.org/documents/dcmi-terms/”><meta http-equiv=“Content-Type” content=“application/xhtml+xml; charset=utf-8”/><title xml:lang=“en-US”>- no title specified</title><meta name=“DCTERMS.title” content=“” xml:lang=“en-US”/><meta name=“DCTERMS.language” content=“en-US” scheme=“DCTERMS.RFC4646”/><meta name=“DCTERMS.source” content=“http://xml.openoffice.org/odf2xhtml”/><meta name=“DCTERMS.creator” content=“Andrey Demichev”/><meta name=“DCTERMS.issued” content=“2011-12-09T13:14:14” scheme=“DCTERMS.W3CDTF”/><meta name=“DCTERMS.contributor” content=“Andrey Demichev”/><meta name=“DCTERMS.modified” content=“2011-12-09T13:14:52” scheme=“DCTERMS.W3CDTF”/><meta name=“DCTERMS.provenance” content=“” xml:lang=“en-US”/><meta name=“DCTERMS.subject” content=“,” xml:lang=“en-US”/><link rel=“schema.DC” href=“http://purl.org/dc/elements/1.1/” hreflang=“en”/><link rel=“schema.DCTERMS” href=“http://purl.org/dc/terms/” hreflang=“en”/><link rel=“schema.DCTYPE” href=“http://purl.org/dc/dcmitype/” hreflang=“en”/><link rel=“schema.DCAM” href=“http://purl.org/dc/dcam/” hreflang=“en”/><base href=“.”/><style type=“text/css”>

@page {  }
table { border-collapse:collapse; border-spacing:0; empty-cells:show }
td, th { vertical-align:top; font-size:12pt;}
h1, h2, h3, h4, h5, h6 { clear:both }
ol, ul { margin:0; padding:0;}
li { list-style: none; margin:0; padding:0;}
<!-- "li span.odfLiEnd" - IE 7 issue-->
li span. { clear: both; line-height:0; width:0; height:0; margin:0; padding:0; }
span.footnodeNumber { padding-right:1em; }
span.annotation_style_by_filter { font-size:95%; font-family:Arial; background-color:#fff000;  margin:0; border:0; padding:0;  }
* { margin:0;}
.Heading_20_1 { font-size:115%; margin-bottom:0.0835in; margin-top:0.1665in; font-family:Arial; writing-mode:page; font-weight:bold; }
.P1 { color:#000000; font-size:14pt; font-weight:normal; line-height:150%; margin-left:0in; margin-right:0in; text-align:justify ! important; text-indent:0.2402in; font-family:Times New Roman; writing-mode:page; }
.P2 { color:#000000; font-size:14pt; font-weight:bold; line-height:150%; margin-left:0in; margin-right:0in; text-align:justify ! important; text-indent:0.2402in; font-family:Times New Roman; writing-mode:page; }
.P3 { color:#000000; font-size:14pt; font-weight:normal; line-height:150%; margin-left:0in; margin-right:0in; text-align:justify ! important; text-indent:0.2402in; font-family:Times New Roman; writing-mode:page; }
.P4 { color:#000000; font-size:14pt; font-weight:bold; line-height:150%; margin-left:0in; margin-right:0in; text-align:justify ! important; text-indent:0.2402in; font-family:Times New Roman; writing-mode:page; }
.P5 { color:#000000; font-size:14pt; font-weight:normal; line-height:150%; margin-left:0in; margin-right:0in; text-align:justify ! important; text-indent:0.2402in; font-family:Times New Roman; writing-mode:page; }
.P6 { color:#000000; font-size:14pt; font-weight:normal; line-height:150%; margin-left:0in; margin-right:0in; text-align:justify ! important; text-indent:0.2402in; font-family:Times New Roman; writing-mode:page; }
.P7 { color:#000000; font-size:14pt; font-weight:normal; line-height:150%; margin-left:0in; margin-right:0in; text-align:justify ! important; text-indent:0.2402in; font-family:Times New Roman; writing-mode:page; }
.P8 { color:#000000; font-size:14pt; font-weight:normal; line-height:100%; margin-left:0.0035in; margin-right:0.0035in; text-align:justify ! important; text-indent:0.0209in; font-family:Times New Roman; writing-mode:page; }
.P9 { font-size:14pt; font-style:normal; margin-bottom:0.0835in; margin-top:0.0835in; font-family:Times New Roman; writing-mode:page; }
.отчет { font-size:14pt; font-family:Times New Roman; writing-mode:page; margin-left:0in; margin-right:0in; line-height:150%; text-align:justify ! important; text-indent:0.2402in; color:#000000; font-weight:normal; }
.Table35 { width:6.9299in; margin-left:0in; margin-right:-0.0049in; float:none; writing-mode:lr-tb; }
.Table35_A1 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-width:0.0133cm; border-top-style:solid; border-top-color:#000000; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
.Table35_A2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-style:none; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
.Table35_B1 { padding:0.0382in; border-width:0.0133cm; border-style:solid; border-color:#000000; }
.Table35_B2 { padding:0.0382in; border-left-width:0.0133cm; border-left-style:solid; border-left-color:#000000; border-right-width:0.0133cm; border-right-style:solid; border-right-color:#000000; border-top-style:none; border-bottom-width:0.0133cm; border-bottom-style:solid; border-bottom-color:#000000; }
.Table35_A { width:1.2396in; }
.Table35_B { width:5.6903in; }
.Bullet_20_Symbols { font-family:StarSymbol, Times New Roman; font-size:9pt; }
.T3 { font-weight:bold; }
<!-- ODF styles with no properties representable as CSS -->
.T1 .T2 { }
</style></head><body><h1 class="Heading_20_1"><a id="a__Язык_описания_задач"><span/></a>Язык описания задач</h1><p class="отчет">Главное назначение ЯОЗ — это правильное отображение требований задачи на архитектуру СК кластера. В данном разделе мы ограничимся только теми требованиями, которые существенны с точки зрения задач из области нанонаук, в том числе задач моделирования наноматериалов, которые требуют выполнения большого объема параллельных вычислений.</p><p class="отчет">Параллельные задачи отличаются по использованию разных технологий параллелизации (<span class="T1">MPI</span>/<span class="T1">OpenMP</span>) и разных подключаемых библиотек.  Разные типы параллельных задач требуют разных условий для выполнения. Главные из них – это условия на наличие требуемых ресурсов и программное окружение.</p><p class="отчет">Во-первых, требуется подходящий вычислительный ресурс, то есть вычислитель с заданным числом ядер в определенной конфигурации. При работе параллельной программы возможности ресурса используются оптимально, если каждый процесс/поток выполняется на отдельном ядре при максимально плотном распределении по узлам. Кроме количества ядер ресурс должен обеспечить для каждого запущенного процесса необходимый размер оперативной памяти и дискового пространства.</p><p class="отчет">Во-вторых, разные реализации <span class="T1">MPI</span> на уровне коммуникационных библиотек не совместимы, поэтому запуск и работа скомпилированной программы предполагает наличие соответствующего <span class="T1">MPI</span>-окружения.</p><p class="отчет">Для формализации описания произвольных задач ведем базовый набор возможных типов одиночных задач. </p><p class="отчет">- <span class="T1">single</span>  - простая последовательная задача, выполняется один процесс. </p><p class="отчет">- <span class="T1">omp</span> - <span class="T1">openmp</span>-задача, может использовать указанное число <span class="T1">N</span> потоков, </p><p class="отчет">             выполняется на одном <span class="T1">smp</span>-узле.</p><p class="отчет">- <span class="T1">mpi</span>  - <span class="T1">mpi</span>-задача, использует  заданное число <span class="T1">M</span> процессов, которые могут </p><p class="отчет">             работать на разных узлах.</p><p class="отчет">- <span class="T1">mix</span>  - гибридная <span class="T1">mpi</span>/<span class="T1">openmp</span>-задача, где каждый из <span class="T1">M</span> <span class="T1">mpi</span>-процессов </p><p class="отчет">             является <span class="T1">openmp</span>, порождающим <span class="T1">N</span> потоков.</p><p class="отчет">При этом каждый openmp либо порождает число потоков <span class="T1">N</span> = числу ядер на узле(default), либо число порожденных потоков ограничивается переменной OMP_NUM_THREADS=<span class="T1">N</span>.</p><p class="отчет">С  точки зрения запроса необходимого количества ядер,  для описания требований произвольной задачи (фактически это тип <span class="T1">mix</span>)  формально достаточно двух параметров: число потоков <span class="T1">N</span> и число процессов <span class="T1">M</span>.  ( число ядер: с<span class="T1">ount</span>=<span class="T1">NxM</span> )</p><p class="отчет">При этом не учитывается реальная топология распределения используемых ядер по узлам, которую локальный планировщик может задавать произвольным образом, исходя из своих соображений об эффективности загрузки кластера.</p><p class="отчет">Но в реальности у многих задач есть ряд критичных к этому распределению параметров (количество памяти или доступны<span class="T2">й размер жесткого диска под</span> временные файлы), которые недостижимы при наиболее эффективном (плотном) распределении процессов на узлах. Нормальная работа таких задач возможна лишь при избыточном резервировании ресурсов, например, тяжелая <span class="T1">mpi</span>-задача должна запускается в режиме 1 процесс на 1 узел, а не на ядро.</p><p class="отчет">Кроме того, в случае <span class="T1">openmp</span>-задач не всегда можно гарантировать запуск с числом потоков, заданным пользователем, а не равным числу ядер на <span class="T1">smp</span>-узле.  </p><p class="отчет">Для обеспечения универсальности по отношению к таким задачам дополним модель распределенной исполняющей системы двумя условиями на реализацию алгоритма запроса ресурсов. А именно, пусть</p><ul><li><p class="P1" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0cm">‒.</span>для <span class="T1">mix</span>-задач полностью резервируется <span class="T1">M</span> узлов (=числу <span class="T1">mpi</span>-процессов); <span class="odfLiEnd"/> </p></li><li><p class="P1" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0cm">‒.</span>для <span class="T1">mpi</span>-задач с повышенными требованиями к вычислительному элементу, также резервируется <span class="T1">M</span> узлов целиком.  Т. е. такие <span class="T1">mpi</span>-задачи переходят в категорию <span class="T1">mix</span>. <span class="odfLiEnd"/> </p></li></ul><p class="отчет">Несложно видеть, что топология произвольной задачи может быть полностью определена заданием пары парамеров, причем пара может быть выбрана относительно произвольно:</p><ul><li><p class="P6" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0cm">‒.</span>полное_число_ядер  + число узлов<span class="odfLiEnd"/> </p></li><li><p class="P6" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0cm">‒.</span>полное_число_ядер + число_ядер_на_один_узел<span class="odfLiEnd"/> </p></li><li><p class="P6" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0cm">‒.</span>число_узлов + число_ядер_на_один_узел<span class="odfLiEnd"/> </p></li></ul><p class="отчет">(фактически, один параметр фиксирует полное количество ядер, а второй позволяет уточнить их распределение по узлам и способ запуска задачи)</p><p class="P2">Атрибуты описания задачи</p><p class="отчет">В качестве пары параметров можно взять <span class="T1">jobType</span> + <span class="T1">count</span>, которая кажется наиболее удобной и естественной для пользователя, а также исключает возможность неправильной интерпретации ошибочной комбинации других вариантов.</p><p class="отчет">По тем же соображениям  целесообразно оставить для описания задачи все четыре типа <span class="T1">jobType</span>, несмотря на некоторую избыточность (как было показано выше, типы <span class="T1">single</span>, <span class="T1">omp</span> и <span class="T1">mpi</span> являются пересекающимися подмножествами <span class="T1">mix</span>). </p><p class="отчет">Интерпретация с<span class="T1">ount</span> при обработке запроса на ресурс описана в таблице <a href="#refTable2">1</a> </p><p class="отчет"> </p><p class="P9"><span class="T3">Таблица </span><span class="T3"><a id="refTable2"/>1</span> - Интерпретация параметра count при обработке запроса на ресурс</p><table border="0" cellspacing="0" cellpadding="0" class="Table35"><colgroup><col width="138"/><col width="632"/></colgroup><tr><td style="text-align:left;width:1.2396in; " class="Table35_A1"><p class="P4">jobType</p></td><td style="text-align:left;width:5.6903in; " class="Table35_B1"><p class="P4">Count</p></td></tr><tr><td style="text-align:left;width:1.2396in; " class="Table35_A2"><p class="P3">single</p></td><td style="text-align:left;width:5.6903in; " class="Table35_B2"><p class="отчет"><span class="T1">Default</span>=1</p></td></tr><tr><td style="text-align:left;width:1.2396in; " class="Table35_A2"><p class="P3">omp</p></td><td style="text-align:left;width:5.6903in; " class="Table35_B2"><p class="P8">число потоков=число ядер,   если не задано, то <span class="T1">default</span> на ресурсе</p></td></tr><tr><td style="text-align:left;width:1.2396in; " class="Table35_A2"><p class="P3">mpi</p></td><td style="text-align:left;width:5.6903in; " class="Table35_B2"><p class="P8">число <span class="T1">mpi</span>-процессов=число ядер,  произвольное распределение по узлам</p></td></tr><tr><td style="text-align:left;width:1.2396in; " class="Table35_A2"><p class="P3">mix</p></td><td style="text-align:left;width:5.6903in; " class="Table35_B2"><p class="P8">число <span class="T1">mpi</span>-процессов = число узлов, которые полностью резервируются под задачу</p></td></tr></table><p class="P3"> </p><p class="P3"> </p><p class="отчет"><span class="T1">Softenv</span>  - среда окружения, которая должна быть установлена при запуске. Требования: </p><ul><li><p class="P7" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0cm">‒.</span>на каждом ресурсе должен быть задан <span class="T1">default</span>, устанавливаемый по умолчанию;<span class="odfLiEnd"/> </p></li><li><p class="P7" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0cm">‒.</span>пользователь должен имеет описание всех доступных окружений.<span class="odfLiEnd"/> </p></li></ul><p class="отчет"> </p><p class="отчет"><span class="T1">INPUT</span>/<span class="T1">OUTPUT</span> - входные/выходных данных задачи.</p><p class="отчет">Предполагается, что сервисы распределенной среды, средства <span class="T1">LRMS</span> и конфигурация конкретного ресурса могут обеспечить загрузку входных данных в рабочий каталог задачи, а по завершении работы – выгрузку в указанное пользователем место. </p><p class="отчет"><span class="T1">walltime</span> -  время, необходимое для выполнения задачи. Важные параметр, который должен учитываться при выборе ресурса и сравниваться с соответствующим параметром очереди - для успешного завершения программы ее время выполнения не должно превышать временные лимиты очереди. </p><ul><li><p class="P5" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0cm">‒.</span>Количество оперативной памяти, необходимое одному процессу. (Сколько должно быть доступно на ресурсе в расчете на одно ядро).<span class="odfLiEnd"/> </p></li><li><p class="P5" style="margin-left:0cm;"><span class="Bullet_20_Symbols" style="display:block;float:left;min-width:0cm">‒.</span>Количество временного дискового пространства, которое должно быть доступно задаче на время выполнения. В большинстве случаев можно сравнивать со свободным местом на доступном задаче <span class="T1">NFS</span>-разделе.<span class="odfLiEnd"/> </p></li></ul><p class="отчет">Тип архитектуры узлов вычислительного ресурса (<span class="T1">x</span>86_64, <span class="T1">PowerPC</span>,<span class="T1">SPARC</span> <span class="T1">etc</span>…). Может быть критично при компиляции программ, оптимизированных под конкретную архитектуру.</p><p class="отчет">Тип интерконнекта на кластере (<span class="T1">Eth</span>1000, <span class="T1">IB</span>, <span class="T1">Marynet</span> <span class="T1">etc</span>). Параметр может быть критичен в <span class="T1">mpi</span>-задачах с интенсивным обменом.</p><p class="отчет"><span class="T1">MPI</span>_<span class="T1">Type</span> – реализация <span class="T1">MPI</span>.</p><p class="отчет">Как уже было отмечено, различные <span class="T1">MPI</span>-реализации несовместимы на уровне библиотек.</p></body></html>
rfbr/rje/taskschema.txt · Last modified: 09/12/2011 13:12 by 127.0.0.1