<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Nikolay Asmolovskiy</title>
	
	<link>http://anick.ru</link>
	<description>Описание вашего блога</description>
	<lastBuildDate>Sat, 26 Sep 2009 22:24:05 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/asmolovsky" /><feedburner:info uri="asmolovsky" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Настройка nginx для работы с Perl в режиме FastCGI</title>
		<link>http://feedproxy.google.com/~r/asmolovsky/~3/7A_XVKx9JuY/</link>
		<comments>http://anick.ru/blog/perl-fastcgi/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 15:09:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[perl]]></category>

		<guid isPermaLink="false">http://anick.ru/?p=93</guid>
		<description><![CDATA[Запуск Perl в режиме fastcgi оказался нетривиальной задачей. Главные причины того, что я использую такую настройку, состоят в том, что мне необходимо было использовать nginx в качестве сервера и сократить количество процессов perl. 
Настройка nginx для отработки скриптов через fastcgi проблем не составляет:
Nginx.conf

location ~ ^/cgi-bin/.*\.cgi$
 {
   fastcgi_pass    unix:/var/run/nginx-fcgi.sock;
   [...]]]></description>
			<content:encoded><![CDATA[<p>Запуск Perl в режиме fastcgi оказался нетривиальной задачей. Главные причины того, что я использую такую настройку, состоят в том, что мне необходимо было использовать nginx в качестве сервера и сократить количество процессов perl. <span id="more-93"></span><br />
Настройка nginx для отработки скриптов через fastcgi проблем не составляет:</p>
<p>Nginx.conf</p>
<blockquote><p>
location ~ ^/cgi-bin/.*\.cgi$<br />
 {<br />
   fastcgi_pass    unix:/var/run/nginx-fcgi.sock;<br />
   fastcgi_read_timeout    5m;<br />
   fastcgi_index    index.cgi;<br />
   #<br />
   #  You may copy and paste the lines under or use include directive<br />
   #  include  /etc/nginx/nginx-fcgi.conf;<br />
   #  In this example all is in one file<br />
   #<br />
   fastcgi_param    SCRIPT_FILENAME  $document_root$fastcgi_script_name;<br />
   fastcgi_param    QUERY_STRING  $query_string;<br />
   fastcgi_param    REQUEST_METHOD  $request_method;<br />
   fastcgi_param    CONTENT_TYPE  $content_type;<br />
   fastcgi_param    CONTENT_LENGTH  $content_length;<br />
   fastcgi_param    GATEWAY_INTERFACE  CGI/1.1;<br />
   fastcgi_param    SERVER_SOFTWARE  nginx;<br />
   fastcgi_param    SCRIPT_NAME  $fastcgi_script_name;<br />
   fastcgi_param    REQUEST_URI  $request_uri;<br />
   fastcgi_param    DOCUMENT_URI  $document_uri;<br />
   fastcgi_param    DOCUMENT_ROOT  $document_root;<br />
   fastcgi_param    SERVER_PROTOCOL  $server_protocol;<br />
   fastcgi_param    REMOTE_ADDR  $remote_addr;<br />
   fastcgi_param    REMOTE_PORT  $remote_port;<br />
   fastcgi_param    SERVER_ADDR  $server_addr;<br />
   fastcgi_param    SERVER_PORT  $server_port;<br />
   fastcgi_param    SERVER_NAME  $server_name;<br />
 }
</p></blockquote>
<p>(http://www.nginx.eu/nginx-fcgi.html)</p>
<p>Самым узким местом является запуск perl-wrapper в режиме fastcgi. Скрипт для запуска nginx-fcgi.pl, представленный в документации, неверно отрабатывает POST запросы. </p>
<blockquote><p>
# processing any STDIN input from WebServer (for CGI-POST actions)<br />
$stdin_passthrough = &#8221;;<br />
$req_len = 0 + $req_params{&#8216;CONTENT_LENGTH&#8217;};<br />
if (($req_params{&#8216;REQUEST_METHOD&#8217;} eq &#8216;POST&#8217;) &#038;&#038; ($req_len != 0) ){<br />
&nbsp;&nbsp;while ($req_len) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;$stdin_passthrough .= getc(STDIN);<br />
&nbsp;&nbsp;&nbsp;&nbsp;$req_len&#8211;;<br />
&nbsp;&nbsp;}<br />
}
</p></blockquote>
<p>Я встречал несколько модификаций скрипта, одна из которых предлагала такое решение:</p>
<blockquote><p>
#processing any STDIN input from WebServer (for CGI-POST actions)<br />
$stdin_passthrough =&#8221;;<br />
$req_len = 0 + $req_params{&#8216;CONTENT_LENGTH&#8217;};<br />
if (($req_params{&#8216;REQUEST_METHOD&#8217;} eq &#8216;POST&#8217;) &#038;&#038; ($req_len != 0) ){<br />
&nbsp;&nbsp;my $bytes_read = 0;<br />
&nbsp;&nbsp;while ($bytes_read < $req_len) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;my $data = '';<br />
&nbsp;&nbsp;&nbsp;&nbsp;my $bytes = read(STDIN, $data, ($req_len - $bytes_read));<br />
last if ($bytes == 0 || !defined($bytes));<br />
&nbsp;&nbsp;&nbsp;&nbsp;$stdin_passthrough .= $data;<br />
&nbsp;&nbsp;&nbsp;&nbsp;$bytes_read += $bytes;<br />
&nbsp;&nbsp;}<br />
}
</p></blockquote>
<p>(http://www.ruby-forum.com/topic/145858)</p>
<p>В качестве хостинга у меня был nichost.ru, поэтому накладывалось множество ограничений, связанных с отсутствием syscall и ограничениями cpan. Поэтому я решил пойти иным путем и вручную конвертировать POST-запрос в GET путем добавления к QUERY_STRING тела POST-запроса. Также нужно не забыть присвоить REQUEST_METHOD значение GET.</p>
<blockquote><p>
# little hack translate all POST data to GET data:<br />
$input_get  = $ENV{&#8216;QUERY_STRING&#8217;};<br />
$input_post = $stdin_passthrough;<br />
if (($input_get ne &#8221;) and ($input_post ne &#8221;)){<br />
&nbsp;&nbsp;$input = $input_get.&#8217;&#038;&#8217;.$input_post;<br />
} else {<br />
&nbsp;&nbsp;$input = $input_get.$input_post;<br />
}<br />
$ENV{&#8216;QUERY_STRING&#8217;}   = $input;<br />
$ENV{&#8216;REQUEST_METHOD&#8217;} = &#8216;GET&#8217;;
</p></blockquote>
<p>Также исходные скрипт при любом исходе пишет в заголовки информацию об ошибке. Это связано с неверной обработкой и исправить это можно следующим образом:</p>
<blockquote><p>
open $cgi_app, &#8216;-|&#8217;, $req_params{SCRIPT_FILENAME}, $stdin_passthrough or scripterror($log_file, $req_params);
</p></blockquote>
<blockquote><p>
sub script_error {<br />
&nbsp;&nbsp;my ($log_file, $req_params) = @_;<br />
&nbsp;&nbsp;print(&#8220;Content-type: text/plain\r\n\r\n&#8221;);<br />
&nbsp;&nbsp;print &#8220;Error: CGI app returned no output &#8211; Executing $req_params{SCRIPT_FILENAME} failed !\n&#8221;;<br />
&nbsp;&nbsp;addlog($logfile, &#8220;Error: CGI app returned no output &#8211; Executing $req_params{SCRIPT_FILENAME} failed !&#8221;);<br />
}
</p></blockquote>
<p>Конечно же это не самое лучшее решение, но работать будет. Стоит отметить, что multipart/form-data при таком подходе работать не будет.</p>
]]></content:encoded>
			<wfw:commentRss>http://anick.ru/blog/perl-fastcgi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anick.ru/blog/perl-fastcgi/</feedburner:origLink></item>
		<item>
		<title>Эксперименты с сетевым кластером</title>
		<link>http://feedproxy.google.com/~r/asmolovsky/~3/uhu1apV3z0U/</link>
		<comments>http://anick.ru/blog/network-cluster/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 09:22:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[autodyn]]></category>

		<guid isPermaLink="false">http://anick.ru/?p=75</guid>
		<description><![CDATA[Постановку и анализ тестовых задач для сетевого кластера, настройка которого описана в прошлой статье, я решил осветить отдельно, т.к. при этом затрагиваются такие сложные элементы как декомпозиция модели, настройка кластера. Содержание статьи будет состоять в основном из скрин-шотов.

Задача
Рассчитать проникание КС в стену (пример из пакета поставки AUTODYN, wallimpact) при нескольких различных конфигурациях кластера и составить [...]]]></description>
			<content:encoded><![CDATA[<p>Постановку и анализ тестовых задач для сетевого кластера, настройка которого описана в прошлой статье, я решил осветить отдельно, т.к. при этом затрагиваются такие сложные элементы как декомпозиция модели, настройка кластера. Содержание статьи будет состоять в основном из скрин-шотов.<br />
<span id="more-75"></span></p>
<h3>Задача</h3>
<p>Рассчитать проникание КС в стену (пример из пакета поставки AUTODYN, wallimpact) при нескольких различных конфигурациях кластера и составить таблицу, показывающую влияние количества узлов на время расчета.</p>
<h3>Оборудование и программное обеспечение</h3>
<p>У меня в распоряжении находились 6 компьютеров с двуядерными процессорами AMD с конфигурацией, представленной на рис.<br />
<img src="http://anick.ru/wp-content/uploads/2009/07/windows-params.png" alt="Параметры компьютера" title="Параметры компьютера" width="419" height="497" /><br />
ПО: MS Windows XP SP2, AUTODYN 6.1, WMPI II 2.4.1.</p>
<h3>Пример расчета на кластере из 6-ти узлов</h3>
<p>Настройка кластера (фактически редактирование файла группы процессов).</p>
<p><img src="http://anick.ru/wp-content/uploads/2009/07/cluster-conf1.png" alt="Настройка кластера" title="Настройка кластера" width="320" height="500"  /></p>
<p>В данном случае рассматриваются двуядерные системы, поэтому в поле «Number of CPU» указывается число 2. Чисто задач (tasks) на узел назначается исходя из того, чтобы на каждое ядро приходилась минимум одна задача. </p>
<p>Число задач (tasks) является входным параметром для декомпозиции расчетной области на участки. При этом области можно задавать как вручную, так и назначать автоматически (делением на равное число отрезков по осям). </p>
<p><img src="http://anick.ru/wp-content/uploads/2009/07/pic-2-set-decomposition-300x233.png" alt="Настройка декомпозии" title="Настройка декомпозии" width="300" height="233" class="alignnone size-medium wp-image-79" /></p>
<p><img src="http://anick.ru/wp-content/uploads/2009/07/pic-3-subdomains.png" alt="Параметры декомпозиции" title="Параметры декомпозиции" width="400" height="500" class="alignnone size-full wp-image-80" /></p>
<p>Далее производят балансировку участков, также исходя из количества задач.</p>
<p><img src="http://anick.ru/wp-content/uploads/2009/07/pic-4-balance.png" alt="Балансировка" title="Балансировка" width="400" height="500" class="alignnone size-full wp-image-81" /></p>
<p><img src="http://anick.ru/wp-content/uploads/2009/07/pic-5-result-300x233.png" alt="Настройка задачи в AUTODYN для параллельного вычисления завершена" title="Настройка задачи в AUTODYN для параллельного вычисления завершена" width="300" height="233" class="alignnone size-medium wp-image-82" /></p>
<p>Настройка параллелизма завершена. Во время расчета можно наблюдать характерные протоколы нагрузки процессоров.</p>
<p><img src="http://anick.ru/wp-content/uploads/2009/07/loading-300x233.png" alt="Загрузка процессоров" title="Загрузка процессоров" width="300" height="233" class="alignnone size-medium wp-image-87" /></p>
<h3>Результаты экспериментов</h3>
<p>Тесты практически всегда можно оспорить, этот эксперимент не исключение. Целью эксперимента являлось получение расчетного времени стандартной задачи в serial-режиме, в параллельном режиме на 2-х ядрах, на 4-х ядрах 2-х компьютеров и тд до 5-ти компьютеров одинаковой конфигурации. Оценивалось время инициализации slaves (с момента старта до 5-ого цикла расчета), время счета (с 5-ого цикла расчета, до 205-ого, а также 205-405). Время фиксировалось по созданию файлов результатов с точностью до секунды.<br />
<small></p>
<table border="1" cellspacing="0" cellpadding="5">
<tr>
<td></td>
<td>Initialization time, s</td>
<td>Calc time<br />
      (cycl. 5-105), s</td>
<td>Calc time<br />
      (cycl. 105-205), s</td>
</tr>
<tr>
<td align="center">Serial</td>
<td>80</td>
<td>1308 </td>
<td>1475 </td>
</tr>
<tr>
<td align="center">2 cores / 1 computer</td>
<td>456 </td>
<td>1323 </td>
<td>1435 </td>
</tr>
<tr>
<td align="center">4 cores / 2 computers</td>
<td>256 </td>
<td>475 </td>
<td>538 </td>
</tr>
<tr>
<td align="center">6 cores / 3 computers</td>
<td>129 </td>
<td>537 </td>
<td>609</td>
</tr>
<tr>
<td align="center">8 cores / 4 computers </td>
<td>117</td>
<td>474</td>
<td>535</td>
</tr>
<tr>
<td align="center">10 cores / 5 computers </td>
<td>131</td>
<td>438</td>
<td>497</td>
</tr>
</table>
<p></small><br />
Комментировать результаты не берусь, т.к. все напрямую зависит от параметров декомпозиции, от количества задач и других факторов. Поэтому я привожу только «голые» числа. </p>
]]></content:encoded>
			<wfw:commentRss>http://anick.ru/blog/network-cluster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anick.ru/blog/network-cluster/</feedburner:origLink></item>
		<item>
		<title>Синхронизация результатов расчета между несколькими компьютерами при помощи DropBox</title>
		<link>http://feedproxy.google.com/~r/asmolovsky/~3/306N34kxzBM/</link>
		<comments>http://anick.ru/blog/sync/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 23:10:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[autodyn]]></category>

		<guid isPermaLink="false">http://anick.ru/?p=64</guid>
		<description><![CDATA[Часто случается, что расчет производится на отдаленном компьютере и получить результаты расчета затруднительно. Ко мне в голову часто приходила мысль написать небольшой сервис, который бы пересылал текущие результаты в какое-либо хранилище, доступное извне.


В качестве такого приложения может послужить DropBox (http://www.getdropbox.com/). Достаточно лишь положить файл с нулевым шагом в папку совместного доступа dropbox и начать расчет. [...]]]></description>
			<content:encoded><![CDATA[<p>Часто случается, что расчет производится на отдаленном компьютере и получить результаты расчета затруднительно. Ко мне в голову часто приходила мысль написать небольшой сервис, который бы пересылал текущие результаты в какое-либо хранилище, доступное извне.<br />
<span id="more-64"></span><br />
<a href="https://www.getdropbox.com/referrals/NTQwODMwNzk"><img src="http://anick.ru/wp-content/uploads/2009/07/logo.png" alt="dropbox" title="dropbox" width="236" height="62" /></a></p>
<p>В качестве такого приложения может послужить DropBox (<a href="https://www.getdropbox.com/referrals/NTQwODMwNzk">http://www.getdropbox.com/</a>). Достаточно лишь положить файл с нулевым шагом в папку совместного доступа dropbox и начать расчет. Программа автоматически будет синхронизировать результаты с сервером и добавлять новые файлы, таким образом, данные будут доступны вне вычислительного центра. </p>
<p>Конечно у подхода множество минусов (безопасность, ограничение на объем, низкая скорость синхронизации), но при всем при этом, такой способ вполне оправдан.</p>
]]></content:encoded>
			<wfw:commentRss>http://anick.ru/blog/sync/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anick.ru/blog/sync/</feedburner:origLink></item>
		<item>
		<title>Настройка AUTODYN и WMPI для параллельных вычислений по сети</title>
		<link>http://feedproxy.google.com/~r/asmolovsky/~3/PSsgLaIacME/</link>
		<comments>http://anick.ru/blog/autodyn-network-cluster/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 21:55:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[autodyn]]></category>

		<guid isPermaLink="false">http://anick.ru/?p=54</guid>
		<description><![CDATA[Ранее я уже писал о параллельных вычислениях в AUTODYN. Сейчас же передо мной стояла задача объединения нескольких компьютеров в единый вычислительный кластер по средствам ЛВС. К счастью такая возможность предусмотрена в WMPI.
Замечания об AUTODYN 6.1
Эксперименты по параллельному вычислению в ЛВС проводились в AUTODYN версии 6.1. Выбор версии был обусловлен тем, что 6.1 отличалась по сравнению [...]]]></description>
			<content:encoded><![CDATA[<p>Ранее я уже писал о <a href="/blog/autodyn-parallel/">параллельных вычислениях в AUTODYN</a>. Сейчас же передо мной стояла задача объединения нескольких компьютеров в единый вычислительный кластер по средствам ЛВС. К счастью такая возможность предусмотрена в WMPI.<span id="more-54"></span></p>
<h3>Замечания об AUTODYN 6.1</h3>
<p>Эксперименты по параллельному вычислению в ЛВС проводились в AUTODYN версии 6.1. Выбор версии был обусловлен тем, что 6.1 отличалась по сравнению с другими версиями, которые я тестировал, более простой настройкой взаимодействия WMPI, сервера лицензий и AUTODYN. </p>
<p><em>Это ни в коем случае не означает, что «свежие» версии хуже ( я считаю, что совсем наоборот) просто у меня нет возможности испытать лицензионные промышленные версии. </em></p>
<h3>Подготовка к установке окружения</h3>
<p>Рассмотрим пример файла конфигурации группы процессов (<a href="http://www.criticalhpc.com/files/onlinedocs/WMPI_2_4_1/doc/User_Guide_Configuring_WMPI.html#Process%20Group">User Guide</a>) для WMPI:</p>
<blockquote><p>
mountain 2 &#8220;c:\mpi apps\weathersim&#8221; 10 256<br />
squirrel 1 &#8220;c:\mpi apps\weathersim&#8221; 10 512<br />
pacific 1 /home/wmpi-user/apps/weathersim 20 256
</p></blockquote>
<p>Формат файла:</p>
<blockquote><p>
&lt;Machine Name&gt; &lt;number of procs&gt; &lt;executable path> [arguments]
</p></blockquote>
<p>Аналогичные файлы создает AUTODYN при конфигурации параллельного вычисления. Интерфейс настройки имеет следующий вид:<br />
<img src="http://anick.ru/wp-content/uploads/2009/07/cluster-conf.png" alt="Интерфейс конфигурации кластера" title="Интерфейс конфигурации кластера" width="320" height="500" /></p>
<p>Из анализа описания настройки WMPI можно сформулировать следующие рекомендации:</p>
<ul>
<li>архитектура сети должна быть продумана таким образом, чтобы компьютер было легко опознать по имени хоста; </li>
<li>выделить «главный» узел (main node) ЛВС – компьютер, с которого будут запускаться задачи на расчет, обычно играющий роль сервера лицензий WMPI;</li>
<li>каждый из узлов сети должен иметь учетную запись администратора, с одинаковыми именем и паролями, содержащую в имени только латинские буквы и цифры;</li>
<li>AUTODYN должен быть установлен на всех компьютерах идентично, в одну и ту же папку, таким образом, чтобы в пути до файла adslave6.exe не встречались проблемы.</li>
</ul>
<p><em>Этот список далеко неполный и необязательный, воспринимать его как единственно верный не следует. По большому счету разницы в том, как будут названы компьютеры или насколько одинаковой будет установка AUTODYN на каждом из узлов, нет, но эти советы помогут избежать некоторых проблем, устранение которых будет проблематично в дальнейшем.</em></p>
<h3>Установка окружения</h3>
<p>После того, как установка AUTODYN и настройка учетных записей будет завершена, следует приступить к установке WMPI. Это приложение позволяет задавать конфигурацию кластера в процессе установки и в автоматическом режиме устанавливать библиотеку для параллельных вычислений на каждом из требуемых узлов ЛВС. В случае если какие-либо узлы окажутся недоступными в процессе установки приложения на главный узел ЛВС, установщик создаст ряд bat-файлов в папке installation (C:\Program Files\WMPI II\installation) с инструкциями по установке в ручном режиме на «проблемные» узлы. </p>
<p><img src="http://anick.ru/wp-content/uploads/2009/07/wmpi-conf.png" alt="Настройка кластера при установке WMPI" title="Настройка кластера при установке WMPI" width="504" height="379"  /></p>
<p><em>С установкой WMPI на узлы обычно возникает довольно много весьма неприятных проблем. Например, требуется специфическая настройка firewalls, отключение блокировки процессов WMPI антивирусами и тд.</em></p>
<p>После того, как установка WMPI на все узлы завершена, необходимо зарегистрировать учетную запись администратора в WMPI при помощи утилиты User Register (wmpi2reguser.exe) и проверить конфигурацию на главном узле ЛВС. Проверка конфигурации осуществляется при помощи утилиты wmpi2testconf. В случае если кластер сконфигурирован правильно, то результат команды wmpi2testconf wmpi.clusterconf будет иметь следующий вид:</p>
<blockquote><p>wmpi2testconf for WMPI II (2.4.1) &#8211; Copyright 2004 by Critical Software (www.criticalsoftware.com)</p>
<p>License Server Check</p>
<p>+ License Server: NODE-MAIN</p>
<p>+ License:        Valid.<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>Cluster configuration Interpretation</p>
<p>The cluster has 6 machines</p>
<p> * Machine node-1 *</p>
<p>+ Available devices:<br />
	Device: shmem  	Machine id: node-1<br />
	Device: tcp  	Machine id: node-1<br />
&#8211;<br />
+ Connections:<br />
Connect with machine node-1 using shmem device.<br />
Connect with machine node-2 using tcp device.<br />
Connect with machine node-3 using tcp device.<br />
Connect with machine node-4 using tcp device.<br />
Connect with machine node-5 using tcp device.<br />
Connect with machine node-main using tcp device.<br />
&#8211;<br />
+ Security:<br />
Domain: node-main<br />
User: admin<br />
&#8211;<br />
+ Verification contact with remote machine:<br />
All libraries and security context verification succeeded in the remote machine.</p>
<p> * Machine node-2 *</p>
<p>+ Available devices:<br />
	Device: shmem  	Machine id: node-2<br />
	Device: tcp  	Machine id: node-2<br />
&#8211;<br />
+ Connections:<br />
Connect with machine node-1 using tcp device.<br />
Connect with machine node-2 using shmem device.<br />
Connect with machine node-3 using tcp device.<br />
Connect with machine node-4 using tcp device.<br />
Connect with machine node-5 using tcp device.<br />
Connect with machine node-main using tcp device.<br />
&#8211;<br />
+ Security:<br />
Domain: node-main<br />
User: admin<br />
&#8211;<br />
+ Verification contact with remote machine:<br />
All libraries and security context verification succeeded in the remote machine.</p>
<p> * Machine node-3 *</p>
<p>+ Available devices:<br />
	Device: shmem  	Machine id: node-3<br />
	Device: tcp  	Machine id: node-3<br />
&#8211;<br />
+ Connections:<br />
Connect with machine node-1 using tcp device.<br />
Connect with machine node-2 using tcp device.<br />
Connect with machine node-3 using shmem device.<br />
Connect with machine node-4 using tcp device.<br />
Connect with machine node-5 using tcp device.<br />
Connect with machine node-main using tcp device.<br />
&#8211;<br />
+ Security:<br />
Domain: node-main<br />
User: admin<br />
&#8211;<br />
+ Verification contact with remote machine:<br />
All libraries and security context verification succeeded in the remote machine.</p>
<p> * Machine node-4 *</p>
<p>+ Available devices:<br />
	Device: shmem  	Machine id: node-4<br />
	Device: tcp  	Machine id: node-4<br />
&#8211;<br />
+ Connections:<br />
Connect with machine node-1 using tcp device.<br />
Connect with machine node-2 using tcp device.<br />
Connect with machine node-3 using tcp device.<br />
Connect with machine node-4 using shmem device.<br />
Connect with machine node-5 using tcp device.<br />
Connect with machine node-main using tcp device.<br />
&#8211;<br />
+ Security:<br />
Domain: node-main<br />
User: admin<br />
&#8211;<br />
+ Verification contact with remote machine:<br />
All libraries and security context verification succeeded in the remote machine.</p>
<p> * Machine node-5 *</p>
<p>+ Available devices:<br />
	Device: shmem  	Machine id: node-5<br />
	Device: tcp  	Machine id: node-5<br />
&#8211;<br />
+ Connections:<br />
Connect with machine node-1 using tcp device.<br />
Connect with machine node-2 using tcp device.<br />
Connect with machine node-3 using tcp device.<br />
Connect with machine node-4 using tcp device.<br />
Connect with machine node-5 using shmem device.<br />
Connect with machine node-main using tcp device.<br />
&#8211;<br />
+ Security:<br />
Domain: node-main<br />
User: admin<br />
&#8211;<br />
+ Verification contact with remote machine:<br />
All libraries and security context verification succeeded in the remote machine.</p>
<p> * Machine node-main *</p>
<p>+ Available devices:<br />
	Device: shmem  	Machine id: node-main<br />
	Device: tcp  	Machine id: node-main<br />
&#8211;<br />
+ Connections:<br />
Connect with machine node-1 using tcp device.<br />
Connect with machine node-2 using tcp device.<br />
Connect with machine node-3 using tcp device.<br />
Connect with machine node-4 using tcp device.<br />
Connect with machine node-5 using tcp device.<br />
Connect with machine node-main using shmem device.<br />
&#8211;<br />
+ Security:<br />
Domain: node-main<br />
User: admin<br />
&#8211;<br />
+ Verification contact with remote machine:<br />
All libraries and security context verification succeeded in the remote machine.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p>WMPI II configuration is correct
</p></blockquote>
<h3>Настройка AUTODYN</h3>
<p>Следующий этап – настройка AUTODYN на каждом из узлов. Для этого необходимо скопировать библиотеку wmpi2.dll (C:\Program Files\WMPI II\bin) в папку с исполняемыми файлами AUTODYN и заменить им файл wmpi.dll. На главном узле в эту папку необходимо также скопировать файл wmpi.clusterconf (C:\Program Files\WMPI II\bin) с настройками кластера.</p>
<p>На этом настройка AUTODYN и окружения для работы в параллельном режиме завершена. </p>
]]></content:encoded>
			<wfw:commentRss>http://anick.ru/blog/autodyn-network-cluster/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anick.ru/blog/autodyn-network-cluster/</feedburner:origLink></item>
		<item>
		<title>Соответствие некоторых материалов в AUTODYN российским аналогам</title>
		<link>http://feedproxy.google.com/~r/asmolovsky/~3/fInctdGK2rE/</link>
		<comments>http://anick.ru/blog/materials/#comments</comments>
		<pubDate>Sun, 29 Mar 2009 22:34:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[autodyn]]></category>

		<guid isPermaLink="false">http://anick.ru/?p=36</guid>
		<description><![CDATA[В данной таблице всего лишь несколько материалов. Планируется, что со временем таблица будет расти.



AUTODYN
РФ
Описание



AISI 1006
Ст1кп
Сталь конструкционная углеродистая обыкновенного качества


Steel 4340
45ХН2МФА
Сталь конструкционная легированная


Steel S-7
4Х2НМФ
Сталь инструментальная штамповая


Al 2024
Д16
Алюминиевый деформируемый сплав (470МПа)


Al 7075
В95
Алюминиевый деформируемый сплав (520МПа)



Если есть что добавить (а надеюсь, что есть), или же я где-то наврал, пожалуйста, напишите.
]]></description>
			<content:encoded><![CDATA[<p>В данной таблице всего лишь несколько материалов. Планируется, что со временем таблица будет расти.<br />
<span id="more-36"></span></p>
<table cellspacing="15" cellpadding="10" border="0">
<thead>
<th align="left">AUTODYN</th>
<th align="left">РФ</th>
<th align="left">Описание</th>
</thead>
<tbody>
<tr>
<td valign="top" width="80"><a href="http://tinyurl.com/dbrbze" target="_blank">AISI 1006</a></td>
<td valign="top"><a href="http://tinyurl.com/dbgdfq" target="_blank">Ст1кп</a></td>
<td valign="top">Сталь конструкционная углеродистая обыкновенного качества</td>
</tr>
<tr>
<td valign="top"><a href="http://tinyurl.com/dhtvbp" target="_blank">Steel 4340</a></td>
<td valign="top"><a href="http://tinyurl.com/d9ogp7" target="_blank">45ХН2МФА</a></td>
<td valign="top">Сталь конструкционная легированная</td>
</tr>
<tr>
<td valign="top"><a href="http://tinyurl.com/d8256s" target="_blank">Steel S-7</a></td>
<td valign="top"><a href="http://www.splav.kharkov.com/mat_start.php?name_id=297" target="_blank">4Х2НМФ</a></td>
<td valign="top">Сталь инструментальная штамповая</td>
</tr>
<tr>
<td valign="top"><a href="http://tinyurl.com/d2fgwg" target="_blank">Al 2024</a></td>
<td valign="top"><a href="http://tinyurl.com/dy5t95" target="_blank">Д16</a></td>
<td valign="top">Алюминиевый деформируемый сплав (470МПа)</td>
</tr>
<tr>
<td valign="top"><a href="http://tinyurl.com/c4mw8g" target="_blank">Al 7075</a></td>
<td valign="top"><a href="http://tinyurl.com/c8fapo" target="_blank">В95</a></td>
<td valign="top">Алюминиевый деформируемый сплав (520МПа)</td>
</tr>
</tbody>
</table>
<p>Если есть что добавить (а надеюсь, что есть), или же я где-то наврал, пожалуйста, напишите.</p>
]]></content:encoded>
			<wfw:commentRss>http://anick.ru/blog/materials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://anick.ru/blog/materials/</feedburner:origLink></item>
		<item>
		<title>Параллельные вычисления в autodyn</title>
		<link>http://feedproxy.google.com/~r/asmolovsky/~3/M4xFx0QWN4g/</link>
		<comments>http://anick.ru/blog/autodyn-parallel/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 18:17:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[autodyn]]></category>

		<guid isPermaLink="false">http://anick.ru/?p=1</guid>
		<description><![CDATA[В данной статье я рассмотрю метод распараллеливания на ядра нескольких версий autodyn:  autodyn 6.1 и ansys autodyn 11 в MS Windows XP.

Краткая справка
Ни&#160;для кого не&#160;секрет, что задачи численного интегрирования являются сверх ресурсоемкими. Особенно это ощутимо, когда речь идет о&#160;3-х мерных задачах, на&#160;вычисление которых уходят недели. Для решения таких задач в&#160;промышленных масштабах используются специальные высокопроизводительные [...]]]></description>
			<content:encoded><![CDATA[<p>В данной статье я рассмотрю метод распараллеливания на ядра нескольких версий autodyn:  autodyn 6.1 и ansys autodyn 11 в MS Windows XP.<br />
<span id="more-1"></span></p>
<h3>Краткая справка</h3>
<p>Ни&nbsp;для кого не&nbsp;секрет, что задачи численного интегрирования являются сверх ресурсоемкими. Особенно это ощутимо, когда речь идет о&nbsp;3-х мерных задачах, на&nbsp;вычисление которых уходят недели. Для решения таких задач в&nbsp;промышленных масштабах используются специальные высокопроизводительные системы. Но&nbsp;такие системы далеко не&nbsp;всегда доступны, поэтому часто приходится использовать обычные персональные компьютеры для решения такого рода задач. Многоядерные процессоры сегодня широко распространены на&nbsp;рынке компьютерной техники и&nbsp;являются достаточно доступными. Применение такого рода процессоров позволяет значительно сократить время расчета. Но&nbsp;для этого требуется правильная настройка численных пакетов. Так, если запустить решение задачи в&nbsp;autodyn можно заметить, что будет загружено всего одно ядро. В&nbsp;случае если у&nbsp;вас дома, например, 4-х ядерный Intel Core 2&nbsp;Quad, то&nbsp;процессор будет загружен примерно на&nbsp;25%. В&nbsp;данном обзоре я&nbsp;не&nbsp;буду вдаваться в&nbsp;подробности о&nbsp;различиях кластеров, устройстве памяти, конфигурации сети или типов процессоров. Я&nbsp;приведу лишь инструкции по&nbsp;запуску autodyn в&nbsp;параллельном режиме.</p>
<h3>Особенности autodyn</h3>
<p>Для реализации параллелизма на&nbsp;ОС&nbsp;MS&nbsp;Windows Autodyn использует стороннее приложение WMPI (Critical Software), требующее отдельной лицензии. Некоторые ранние версии Autodyn 11&nbsp;имеют проблемы с&nbsp;реализацией функционала параллелизма, поэтому обладателям нелицензионных копий скорее всего не&nbsp;повезет.</p>
<h3>Общий процесс установки и&nbsp;запуска.</h3>
<p>Процесс установки состоит из&nbsp;нескольких частей:</p>
<ol>
<li>установка и&nbsp;настройка WMPI 1.6&nbsp;под Windows;</li>
<li>настройка файлов конфигурации кластера для autodyn;</li>
<li>тестовые задачи.</li>
</ol>
<p>Стоит отметить, что в&nbsp;WMPI и&nbsp;autodyn старших версий имеют проблемы с&nbsp;локализированными версиями Windows. Если вы&nbsp;используете стандартную для русской версии windows учетную запись с&nbsp;именем &laquo;Администратор&raquo;, то&nbsp;я&nbsp;рекомендую создать новую запись администратора с&nbsp;английским названием, например, root. Для корректной работы WMPI требуется также задать пароль для учетной записи.</p>
<h3>Установка и&nbsp;настройка WMPI</h3>
<p>В&nbsp;системные требования Autodyn входит WMPI 1.5.8. На&nbsp;текущий день самым последним релизом первой ветки WMPI является версия 1.6.1.</p>
<p>Скачать ее&nbsp;можно на&nbsp;сайте производителя:<br />
<a href="http://www.criticalhpc.com/downloadswmpi.php?download_os=win">http://www.criticalhpc.com/downloadswmpi.php?download_os=win</a></p>
<p>Теперь немного о&nbsp;лицензиях. Для проверки работоспособности я&nbsp;рекомендую зарегистрироваться и&nbsp;получить временную лицензию, хоть она и&nbsp;имеет ряд ограничений: 40&nbsp;суток использования, максимальное кол-во процессоров&nbsp;&#8212; 4.&nbsp;Собственно, для задач на&nbsp;ПК&nbsp;этого как раз достаточно. Файл с&nbsp;временной лицензией высылается в&nbsp;приложении к&nbsp;письму сразу после скачивания. При установке следуйте рекомендациям мастера. Сразу после установки необходимо указать от&nbsp;какого пользователя должен запускаться WMPI. Для этого нужно провести следующие операции:</p>
<blockquote><p>Start&nbsp;&#8212; programs&nbsp;&#8212; WMPI&nbsp;&#8212; User Register</p></blockquote>
<p><img src="http://anick.ru/wp-content/uploads/2009/03/parallel-1.png" alt="Настройка пользователей" title="Настройка пользователей" width="354" height="243" class="alignnone size-full wp-image-12" /><br />
Username&nbsp;&#8212; имя учетной записи;<br />
Domain name&nbsp;&#8212; сетевое имя компьютера или домена;<br />
User password&nbsp;&#8212; пароль учетной записи;<br />
Verify password&nbsp;&#8212; подтверждение пароля;<br />
После заполнения нажать &laquo;Register&raquo;.</p>
<p>После чего попробуйте запустить тесты WMPI:</p>
<blockquote><p>
Start&nbsp;&#8212; run<br />
Cmd<br />
C:\Program Files\WMPI\examples\VisualCPP\Hello_World_cpp\Release\<br />
Hello_World_cpp.exe
</p></blockquote>
<p>В&nbsp;результате на&nbsp;экране вы&nbsp;должны получить следующее:<br />
<img src="http://anick.ru/wp-content/uploads/2009/03/parallel-2.png" alt="Тест WMPI" title="Тест WMPI" width="500" height="248" /></p>
<p><em>В&nbsp;моем случае WMPI установлен в&nbsp;папку C:\Program Files\WMPI\, имя компьютера anick.</em></p>
<p>В&nbsp;случае если возникают какие-либо ошибки, воспользуйтесь утилитой отладки конфигурации wmpitestconf.exe, которая устанавливается вместе с&nbsp;WMPI.<br />
<img src="http://anick.ru/wp-content/uploads/2009/03/parallel-3.png" alt="Тест конфигурации WMPI" title="Тест конфигурации WMPI" width="500" height="454" /></p>
<h3>Настройка конфигурации autodyn 11.</h3>
<p>Для того чтобы настроить autodyn необходимо скопировать файлы wmpi.clusterconf и&nbsp;wmpi.dll (из&nbsp;папки C:\Program Files\WMPI\bin) в&nbsp;папку с&nbsp;установленным autodyn (в&nbsp;моем случае, C:\ansys\v110\AISOL\AUTODYN\intel\ , при стандартной установке: C:\Program Files\ANSYS Inc\v110\ ).</p>
<p>В&nbsp;папке запускаемых файлов autodyn нужно создать файл wmpi.pg</p>
<blockquote><p>ANICK 2&nbsp;C:\ansys\v110\AISOL\AUTODYN\intel\adslave.exe</p></blockquote>
<h3>Настройка конфигурации autodyn 6.</h3>
<p>Настройка выполняется несколько проще. Нужно скопировать файл конфигурации wmpi.clusterconf (C:\Program Files\WMPI\bin) в&nbsp;папки с&nbsp;autodyn 6&nbsp;(в&nbsp;моем случае E:\autodyn\adv61 и&nbsp;E:\autodyn\adv61dp).</p>
<h3>Запуск тестовой задачи.</h3>
<p>В&nbsp;качестве тестовой задачи я&nbsp;использую пример sph_birdstrike из&nbsp;поставки autodyn. Операции аналогичны на&nbsp;11-ой и&nbsp;на&nbsp;6-ой версии autodyn.</p>
<p>Технические характеристики испытуемого компьютера:</p>
<p><img src="http://anick.ru/wp-content/uploads/2009/03/parallel-4.png" alt="Параметры компьютера" title="Параметры компьютера" width="419" height="497" /></p>
<p>Сначала для примера запустим вычисления в&nbsp;обычном serial-режиме. Нагрузка на&nbsp;процессор в&nbsp;данном случае:</p>
<p><img src="http://anick.ru/wp-content/uploads/2009/03/parallel-5.png" alt="Нагрузка на процессор в обычном режиме" title="Нагрузка на процессор в обычном режиме" width="413" height="446" /></p>
<h4>Шаг 1.&nbsp;Активирование параллельного вычисления</h4>
<p><img src="http://anick.ru/wp-content/uploads/2009/03/parallel-6.png" alt="Активирование параллельного вычисления" title="Активирование параллельного вычисления" width="500" height="485" /></p>
<h4>Шаг 2.&nbsp;Активация параллельного режима</h4>
<p><img src="http://anick.ru/wp-content/uploads/2009/03/parallel-7.png" alt="Активация параллельного режима" title="Активация параллельного режима" width="500" height="485" /></p>
<h4>Шаг 3.&nbsp;Создание декомпозиции</h4>
<blockquote><p>Decomposition set&nbsp;&#8212; add</p></blockquote>
<p><img src="http://anick.ru/wp-content/uploads/2009/03/parallel-8.png" alt="Автоматическая декомпозиция" title="Автоматическая декомпозиция" width="400" height="500" /></p>
<h4>Шаг 4.&nbsp;Просмотр результата декомпозиции</h4>
<p><img src="http://anick.ru/wp-content/uploads/2009/03/parallel-9.png" alt="Результат декомпозиции" title="Результат декомпозиции" width="500" height="485" /></p>
<h4>Шаг 5.&nbsp;Добавление хоста</h4>
<blockquote><p>Host configuration sets&nbsp;&#8212; add</p></blockquote>
<p><img src="http://anick.ru/wp-content/uploads/2009/03/parallel-10.png" alt="Добавление хоста" title="Добавление хоста" width="320" height="500" /></p>
<h4>Настройка задачи для параллельного вычисления завершена</h4>
<p><img src="http://anick.ru/wp-content/uploads/2009/03/parallel-11.png" alt="Настройка задачи для параллельного вычисления завершена" title="Настройка задачи для параллельного вычисления завершена" width="500" height="485" /></p>
<p>Т.к. параметры для параллельного вычисления заданы, то&nbsp;можно запустить расчет и&nbsp;посмотреть нагрузку процессора в&nbsp;данном случае.</p>
<p><img src="http://anick.ru/wp-content/uploads/2009/03/parallel-12.png" alt="Загрузка процессора при параллельном режиме" title="Загрузка процессора при параллельном режиме" width="413" height="446" /></p>
<p>Возникает резонный вопрос, а&nbsp;почему загрузка не&nbsp;100%? Это связано с&nbsp;особенностями декомпозиции. Существуют такие задачи, в&nbsp;которых 100% загрузки ядер удается получить даже автоматической декомпозицией без каких-либо трудностей. При ручном задании декомпозиции приростом производительности (speedup) можно управлять. Существуют много методов увеличения производительности систем, например, создание очереди на&nbsp;ядро или&nbsp;же специфические сетевые конфигурации для сетей компьютеров. Но&nbsp;как я&nbsp;говорил выше, анализ производительности в&nbsp;данной статье я&nbsp;производить не&nbsp;буду. Хотя&nbsp;бы даже по&nbsp;тому что &laquo;все тесты врут&raquo;, да&nbsp;и&nbsp;компетентным, в&nbsp;такого рода вопросах, меня можно назвать лишь с&nbsp;большой натяжкой.</p>
<p>Некоторый анализ прироста производительности был опубликован на конференции «Решения ANSYS для ВПК и электроники». Скачать презентацию «<a href="http://anick.ru/wp-content/uploads/2009/03/ansys_hpc.pdf">Распараллеливание решателей программных продуктов ANSYS. Применение решений HPC (высокопроизводительных вычислений) для решения задач больших размерностей.</a>»</p>
<p>Если есть какие-либо вопросы или просто есть что сказать, то&nbsp;не&nbsp;стесняйтесь использовать форму под этой статьей по&nbsp;ее&nbsp;прямому назначению.</p>
]]></content:encoded>
			<wfw:commentRss>http://anick.ru/blog/autodyn-parallel/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://anick.ru/blog/autodyn-parallel/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 2.037 seconds. --><!-- Cached page generated by WP-Super-Cache on 2010-03-13 07:25:49 -->
