<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>MamaY</title>
	<atom:link href="http://mamay.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://mamay.ru</link>
	<description>Vinus Memorius</description>
	<lastBuildDate>Wed, 20 Jul 2011 10:31:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Вечера на Воре близ Москвы</title>
		<link>http://mamay.ru/2011/07/20/vorya/</link>
		<comments>http://mamay.ru/2011/07/20/vorya/#comments</comments>
		<pubDate>Wed, 20 Jul 2011 10:31:34 +0000</pubDate>
		<dc:creator>MamaY</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[фото]]></category>

		<guid isPermaLink="false">http://mamay.ru/?p=993</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div id="attachment_999" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/07/Vorya6.jpg" class="shutterset_17"><img src="http://mamay.ru/wp-content/uploads/2011/07/Vorya6-500x383.jpg" alt="Колхозный панк" title="Колхозный панк" width="500" height="383" class="size-medium wp-image-999" /></a><p class="wp-caption-text">Колхозный панк</p></div><br />
<span id="more-993"></span><br />
<div id="attachment_995" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/07/Vorya2.jpg" class="shutterset_17"><img src="http://mamay.ru/wp-content/uploads/2011/07/Vorya2-500x375.jpg" alt="По воде аки по суху" title="По воде аки по суху" width="500" height="375" class="size-medium wp-image-995" /></a><p class="wp-caption-text">По воде аки по суху</p></div><br />
<div id="attachment_998" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/07/Vorya5.jpg" class="shutterset_17"><img src="http://mamay.ru/wp-content/uploads/2011/07/Vorya5-500x741.jpg" alt="Аня на слэклайне" title="Аня на слэклайне" width="500" height="741" class="size-medium wp-image-998" /></a><p class="wp-caption-text">Аня на слэклайне</p></div><br />
<div id="attachment_996" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/07/Vorya3.jpg" class="shutterset_17"><img src="http://mamay.ru/wp-content/uploads/2011/07/Vorya3-500x374.jpg" alt="Ден крутой" title="Ден крутой" width="500" height="374" class="size-medium wp-image-996" /></a><p class="wp-caption-text">Ден крутой</p></div><br />
<div id="attachment_997" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/07/Vorya4.jpg" class="shutterset_17"><img src="http://mamay.ru/wp-content/uploads/2011/07/Vorya4-500x359.jpg" alt="Домбайский бокс" title="Домбайский бокс" width="500" height="359" class="size-medium wp-image-997" /></a><p class="wp-caption-text">Домбайский бокс</p></div><br />
<div id="attachment_994" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/07/Vorya1.jpg" class="shutterset_17"><img src="http://mamay.ru/wp-content/uploads/2011/07/Vorya1-500x361.jpg" alt="Ден" title="Ден" width="500" height="361" class="size-medium wp-image-994" /></a><p class="wp-caption-text">Ден</p></div>
]]></content:encoded>
			<wfw:commentRss>http://mamay.ru/2011/07/20/vorya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Юбилей, однако</title>
		<link>http://mamay.ru/2011/06/23/dr-2/</link>
		<comments>http://mamay.ru/2011/06/23/dr-2/#comments</comments>
		<pubDate>Thu, 23 Jun 2011 16:47:22 +0000</pubDate>
		<dc:creator>MamaY</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[фото]]></category>

		<guid isPermaLink="false">http://mamay.ru/?p=968</guid>
		<description><![CDATA[Спасибо всем кто приехал! Да и всем остальным тоже спасибо!]]></description>
			<content:encoded><![CDATA[<p>Спасибо всем кто приехал!<br />
Да и всем остальным тоже спасибо! <img src='http://mamay.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<div id="attachment_973" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/06/dr4.jpg" class="shutterset_16"><img src="http://mamay.ru/wp-content/uploads/2011/06/dr4-500x708.jpg" alt="Сочку или ещё чего?" title="Сочку или ещё чего?" width="500" height="708" class="size-medium wp-image-973" /></a><p class="wp-caption-text">Сочку или ещё чего?</p></div><br />
<span id="more-968"></span><br />
<div id="attachment_971" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/06/dr2.jpg" class="shutterset_16"><img src="http://mamay.ru/wp-content/uploads/2011/06/dr2-500x323.jpg" alt="Бензопила - залог хорошего костра" title="Бензопила - залог хорошего костра" width="500" height="323" class="size-medium wp-image-971" /></a><p class="wp-caption-text">Бензопила - залог хорошего костра</p></div><br />
<div id="attachment_970" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/06/dr1.jpg" class="shutterset_16"><img src="http://mamay.ru/wp-content/uploads/2011/06/dr1-500x750.jpg" alt="Юбиляр, победитель дров" title="Юбиляр, победитель дров" width="500" height="750" class="size-medium wp-image-970" /></a><p class="wp-caption-text">Юбиляр, победитель дров</p></div><br />
<div id="attachment_974" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/06/dr5.jpg" class="shutterset_16"><img src="http://mamay.ru/wp-content/uploads/2011/06/dr5-500x419.jpg" alt="Юбиляр, победитель мусора" title="Юбиляр, победитель мусора" width="500" height="419" class="size-medium wp-image-974" /></a><p class="wp-caption-text">Юбиляр, победитель мусора</p></div><br />
<div id="attachment_975" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/06/dr6.jpg" class="shutterset_16"><img src="http://mamay.ru/wp-content/uploads/2011/06/dr6-500x703.jpg" alt="могилка" title="могилка" width="500" height="703" class="size-medium wp-image-975" /></a><p class="wp-caption-text">могилка</p></div><br />
<div id="attachment_972" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/06/dr3.jpg" class="shutterset_16"><img src="http://mamay.ru/wp-content/uploads/2011/06/dr3-500x619.jpg" alt="Комаров было много" title="Комаров было много" width="500" height="619" class="size-medium wp-image-972" /></a><p class="wp-caption-text">Комаров было много</p></div></p>
]]></content:encoded>
			<wfw:commentRss>http://mamay.ru/2011/06/23/dr-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Принимаю поздравления с ДР!</title>
		<link>http://mamay.ru/2011/06/16/dr/</link>
		<comments>http://mamay.ru/2011/06/16/dr/#comments</comments>
		<pubDate>Thu, 16 Jun 2011 05:44:28 +0000</pubDate>
		<dc:creator>MamaY</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[фото]]></category>

		<guid isPermaLink="false">http://mamay.ru/?p=955</guid>
		<description><![CDATA[13 июня я поставил ещё одну галочку в списке вещей, которые надо когда-то сделать. На день рожденья моя любимая Саша подарила мне прыжок с 4 км, конечно же в тандеме но с задержкой раскрытия в 50 секунд. Сашу потом тоже скинули с 4 км]]></description>
			<content:encoded><![CDATA[<p>13 июня я поставил ещё одну галочку в списке вещей, которые надо когда-то сделать.<br />
На день рожденья моя любимая Саша подарила мне прыжок с 4 км, конечно же в тандеме но с задержкой раскрытия в 50 секунд.<br />
<div id="attachment_959" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/06/jump1.jpg" class="shutterset_15"><img src="http://mamay.ru/wp-content/uploads/2011/06/jump1-500x352.jpg" alt="Страшно только в первую секунду" title="Страшно только в первую секунду" width="500" height="352" class="size-medium wp-image-959" /></a><p class="wp-caption-text">Страшно только в первую секунду</p></div><br />
<span id="more-955"></span><br />
<div id="attachment_960" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/06/jump2.jpg" class="shutterset_15"><img src="http://mamay.ru/wp-content/uploads/2011/06/jump2-500x333.jpg" alt="А потом замечательно" title="А потом замечательно" width="500" height="333" class="size-medium wp-image-960" /></a><p class="wp-caption-text">А потом замечательно</p></div><br />
Сашу потом тоже скинули с 4 км <img src='http://mamay.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
<div id="attachment_961" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/06/jump3.jpg" class="shutterset_15"><img src="http://mamay.ru/wp-content/uploads/2011/06/jump3-500x438.jpg" alt="Заход на посадку" title="Заход на посадку" width="500" height="438" class="size-medium wp-image-961" /></a><p class="wp-caption-text">Заход на посадку</p></div><br />
<div id="attachment_958" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/06/jump4.jpg" class="shutterset_15"><img src="http://mamay.ru/wp-content/uploads/2011/06/jump4-500x333.jpg" alt="Парашютисты" title="Парашютисты" width="500" height="333" class="size-medium wp-image-958" /></a><p class="wp-caption-text">Парашютисты</p></div></p>
]]></content:encoded>
			<wfw:commentRss>http://mamay.ru/2011/06/16/dr/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>33 + 33 = 66</title>
		<link>http://mamay.ru/2011/06/09/66/</link>
		<comments>http://mamay.ru/2011/06/09/66/#comments</comments>
		<pubDate>Thu, 09 Jun 2011 14:00:44 +0000</pubDate>
		<dc:creator>MamaY</dc:creator>
				<category><![CDATA[Разное]]></category>

		<guid isPermaLink="false">http://mamay.ru/?p=924</guid>
		<description><![CDATA[Друзья! Прошло немало времени с нашей последней встречи. Воды, и не только, утекло немало&#8230; Кто-то разбогател, кто-то поумнел, а кто-то раздобрел&#8230; Но практически у каждого, (мы уверены!) произошли какие-то изменения, и наверняка к лучшему! Пришло время на людей посмотреть, и себя показать, похвастаться достижениями, посочувствовать неудачникам&#8230;. И время это &#8211; 18 июня. Это особенная дата. [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Друзья!</strong></p>
<p>Прошло немало времени с нашей последней встречи. Воды, и не только, утекло немало&#8230;<br />
Кто-то разбогател, кто-то поумнел, а кто-то раздобрел&#8230;</p>
<p>Но практически у каждого, (мы уверены!) произошли какие-то изменения, и наверняка к лучшему!</p>
<p>Пришло время на людей посмотреть, и себя показать, похвастаться достижениями, посочувствовать неудачникам&#8230;.</p>
<p>И время это &#8211; <strong>18 июня</strong>.</p>
<p>Это особенная дата. Другой такой больше не будет. В этот торжественный день нам исполняется 66 лет.</p>
<p>Число 6 &#8211; число зверя. 66 &#8211; сатанинское вдвойне. Если не отогнать злых духов в этот день, может испортиться карма и неудачи будут преследовать нас всю жизнь&#8230;</p>
<p>Мы приглашаем Вас всех оказать нам небольшую услугу &#8211; отогнать злых духов.<br />
Для этого нужно всего-лишь приехать в означенное место и принять участие в ритуале очищения (другое название &#8211; обмывание)</p>
<p>Помните, от Вас зависит наше будущее!</p>
<p><strong>Игорь и Максим</strong></p>
<p>Празднование будет в районе города Дубна, описание в конце сообщения.<br />
Проживание в палатках.<br />
На машине можно подъехать без затруднений, легковая машина проезжает.</p>
<p>ЗЫ. Культпрограмма стандартная.<br />
Приезжаем, сразу приступаем к первому этапу очищения (уборка мусора с места ритуала).<br />
далее &#8211; водные процедуры, всевозможные игры, футбол, волейбол, бадминтон, слеклайн, ну и тд.<br />
Обмывание в течение всего времени.</p>
<p>ЗЗЫ: Подарки дарят только те, кто не приезжает.<div id="attachment_935" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/06/IMG_2289.jpg"><img src="http://mamay.ru/wp-content/uploads/2011/06/IMG_2289-500x333.jpg" alt="В тот раз было прикольно!" title="В тот раз было прикольно!" width="500" height="333" class="size-medium wp-image-935" /></a><p class="wp-caption-text">В тот раз было прикольно!</p></div></p>
<p><strong>Место проведения:</strong><br />
На вьезде в Дубну пост ДПС, поворачиваем на нем направо и едем по главной дороге, проезжаем :<br />
===== Описание удалено =====<br />
Если последняя стоянка занята, то останавливаемся на предыдущей незанятой. И т.д. по рекурсии.</p>
<p><strong>Обязательно возьмите защиту от комаров!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://mamay.ru/2011/06/09/66/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Греция</title>
		<link>http://mamay.ru/2011/05/18/greece/</link>
		<comments>http://mamay.ru/2011/05/18/greece/#comments</comments>
		<pubDate>Wed, 18 May 2011 06:24:13 +0000</pubDate>
		<dc:creator>MamaY</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[Греция]]></category>
		<category><![CDATA[путешествие]]></category>
		<category><![CDATA[фото]]></category>

		<guid isPermaLink="false">http://mamay.ru/?p=913</guid>
		<description><![CDATA[Ездили в Грецию на Крит с 28 апреля по 9 мая. Отель Europa Beach, всё включено, отель понравился. Погода была разная, от пасмурных дней с сильным холодным ветром до жары с солнцем. Море достаточно тёплое чтобы купаться, в бассейнах в отеле тоже хорошо. Самое начало сезона, людей вначале было совсем мало, что плюс. Из минусов [...]]]></description>
			<content:encoded><![CDATA[<p>Ездили в Грецию на Крит с 28 апреля по 9 мая. Отель Europa Beach, всё включено, отель понравился. Погода была разная, от пасмурных дней с сильным холодным ветром до жары с солнцем. Море достаточно тёплое чтобы купаться, в бассейнах в отеле тоже хорошо. Самое начало сезона, людей вначале было совсем мало, что плюс. Из минусов &#8211; аквапарк Критский ещё не работал.</p>
<div id="attachment_914" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/05/Greece.jpg"><img src="http://mamay.ru/wp-content/uploads/2011/05/Greece-500x333.jpg" alt="Греция" title="Greece" width="500" height="333" class="size-medium wp-image-914" /></a><p class="wp-caption-text">Греция</p></div>
]]></content:encoded>
			<wfw:commentRss>http://mamay.ru/2011/05/18/greece/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Сан-Франциско</title>
		<link>http://mamay.ru/2011/01/24/san-francisco/</link>
		<comments>http://mamay.ru/2011/01/24/san-francisco/#comments</comments>
		<pubDate>Mon, 24 Jan 2011 06:18:59 +0000</pubDate>
		<dc:creator>MamaY</dc:creator>
				<category><![CDATA[Пейзаж]]></category>
		<category><![CDATA[Калифорния]]></category>
		<category><![CDATA[путешествие]]></category>
		<category><![CDATA[фото]]></category>

		<guid isPermaLink="false">http://mamay.ru/?p=908</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div id="attachment_907" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2011/01/br.jpg"><img src="http://mamay.ru/wp-content/uploads/2011/01/br-500x291.jpg" alt="San Francisco" title="Сан-Франциско" width="500" height="291" class="size-medium wp-image-907" /></a><p class="wp-caption-text">San Francisco &#038; Golden Gate</p></div>
]]></content:encoded>
			<wfw:commentRss>http://mamay.ru/2011/01/24/san-francisco/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пещера Сдом</title>
		<link>http://mamay.ru/2011/01/11/sdom-cave/</link>
		<comments>http://mamay.ru/2011/01/11/sdom-cave/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 11:46:50 +0000</pubDate>
		<dc:creator>MamaY</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[Израиль]]></category>
		<category><![CDATA[путешествие]]></category>
		<category><![CDATA[фото]]></category>

		<guid isPermaLink="false">http://mamay.ru/?p=893</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div id="attachment_898" class="wp-caption aligncenter" style="width: 471px"><a href="http://mamay.ru/wp-content/uploads/2011/01/cave.jpg"><img src="http://mamay.ru/wp-content/uploads/2011/01/cave-461x750.jpg" alt="Пещера Сдом" title="Пещера Сдом" width="461" height="750" class="size-medium wp-image-898" /></a><p class="wp-caption-text">Пещера Сдом</p></div>
]]></content:encoded>
			<wfw:commentRss>http://mamay.ru/2011/01/11/sdom-cave/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ладога</title>
		<link>http://mamay.ru/2010/09/06/ladoga/</link>
		<comments>http://mamay.ru/2010/09/06/ladoga/#comments</comments>
		<pubDate>Mon, 06 Sep 2010 17:56:16 +0000</pubDate>
		<dc:creator>MamaY</dc:creator>
				<category><![CDATA[Разное]]></category>
		<category><![CDATA[пейзаж]]></category>
		<category><![CDATA[путешествие]]></category>
		<category><![CDATA[фото]]></category>

		<guid isPermaLink="false">http://mamay.ru/?p=885</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div id="attachment_888" class="wp-caption aligncenter" style="width: 510px"><a href="http://mamay.ru/wp-content/uploads/2010/09/Ladoga.jpg"><img src="http://mamay.ru/wp-content/uploads/2010/09/Ladoga-500x328.jpg" alt="Саша на Ладоге" title="Саша на Ладоге" width="500" height="328" class="size-medium wp-image-888" /></a><p class="wp-caption-text">Саша на Ладоге</p></div>
]]></content:encoded>
			<wfw:commentRss>http://mamay.ru/2010/09/06/ladoga/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenMP и реальность (выпуск 3)</title>
		<link>http://mamay.ru/2010/08/06/openmp-3/</link>
		<comments>http://mamay.ru/2010/08/06/openmp-3/#comments</comments>
		<pubDate>Fri, 06 Aug 2010 02:59:55 +0000</pubDate>
		<dc:creator>MamaY</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[OpenMP]]></category>

		<guid isPermaLink="false">http://mamay.ru/?p=826</guid>
		<description><![CDATA[В продолжение выпуска 2. Чтож, попробуем ускорить нашу функцию ещё больше. Первое, что бросается в глаза при анализе работы функции из выпуска 2 void f3&#40;double * pdArr&#41; так это неполная загрузка ядер в следствии не очень хорошей балансировки циклов. На этот случай у OpenMP так же есть инструменты. Для балансировки циклов используется директива schedule(type[,size]), подробнее [...]]]></description>
			<content:encoded><![CDATA[<p>В продолжение <a href="/2010/08/02/openmp-2/">выпуска 2</a>.</p>
<p>Чтож, попробуем ускорить нашу функцию ещё больше.<br />
Первое, что бросается в глаза при анализе работы функции из <a href="/2010/08/02/openmp-2/">выпуска 2</a> <code class="codecolorer cpp default"><span class="cpp"><span style="color: #0000ff;">void</span> f3<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">double</span> <span style="color: #000040;">*</span> pdArr<span style="color: #008000;">&#41;</span></span></code> так это неполная загрузка ядер в следствии не очень хорошей балансировки циклов. На этот случай у OpenMP так же есть инструменты. Для балансировки циклов используется директива schedule(type[,size]), подробнее можно почитать <a href="http://msdn.microsoft.com/en-us/library/x5aw0hdf(VS.80).aspx">тут</a>.<br />
Не вдаваясь в подробности скажу, что наилучший результат дал вариант <code class="codecolorer cpp default"><span class="cpp"><span style="color: #339900;">#pragma omp parallel for schedule(dynamic, 8192)</span></span></code>. На всякий случай, в качестве параметра, я использую величину, являющейся степенью двойки, на такое число компилятору всяко проще делить (если это ему поможет, а мне уж точно не навредит). Так какой же результат получается с такой директивой? 1.72 секунды, что 2.5 раза быстрее чем однопоточная версия функции. Использование других дериктив и других чисел в размере блока так же может давать прирост в ускорении но не такой значительный. Уменьшение размера блока увеличивает накладные расходы на обслуживание, увеличение &#8211; ухудшает балансировку. Т.е. размер блока надо подбирать индивидуально в зависимости от объёма работы, совершаемой в самом теле цикла. И на последок картина, как выглядит выполнение оптимизированной программы в Intel Thread Profiler:<br />
<img src="http://mamay.ru/wp-content/uploads/2010/08/dynamic.png" alt="" title="dynamic" width="476" height="664" class="aligncenter size-full wp-image-847" /><br />
На картинке представлено (как и в прошлый раз) небольшой участок выполнения программы (примерно 4 запуска параллельного цикла). Видно, что балансировка циклов стала почти идеальной (все потоки заканчивают работу практически одновременно). И даже в случае задержки запуска некоторых потоков (как в третьем цикле на картинке) все они завершают работу в один момент. Мы достигли 2.5 кратного ускорения цикла при распараллеливании его на 8 ядер. Результат достаточно посредственный, но это всё же ускорение по сравнению с однопоточной версией. В следующем выпуске исследуем причины такого не самого яркого результата.</p>
]]></content:encoded>
			<wfw:commentRss>http://mamay.ru/2010/08/06/openmp-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpenMP и реальность (выпуск 2)</title>
		<link>http://mamay.ru/2010/08/02/openmp-2/</link>
		<comments>http://mamay.ru/2010/08/02/openmp-2/#comments</comments>
		<pubDate>Mon, 02 Aug 2010 13:14:58 +0000</pubDate>
		<dc:creator>MamaY</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[OpenMP]]></category>

		<guid isPermaLink="false">http://mamay.ru/?p=790</guid>
		<description><![CDATA[В продолжение выпуска 1. Так вот наблюдательный опытный разработчик конечно же догадался что причиной замедления параллельной версии стала строка #pragma omp critical. Не поставить её было нельзя, т.к. запись происходит в общую, для разных потоков, память. Будет очень показательно взглянуть на картинку, которую нам показывает Intel Thread Profiler в случае цикла с critical: Верхняя гистограмма [...]]]></description>
			<content:encoded><![CDATA[<p>В продолжение <a href="/2010/08/01/openmp-1/">выпуска 1</a>.</p>
<p>Так вот наблюдательный опытный разработчик конечно же догадался что причиной замедления параллельной версии стала строка <code class="codecolorer cpp default"><span class="cpp"><span style="color: #339900;">#pragma omp critical</span></span></code>. Не поставить её было нельзя, т.к. запись происходит в общую, для разных потоков, память. Будет очень показательно взглянуть на картинку, которую нам показывает Intel Thread Profiler в случае цикла с critical:<br />
<img src="http://mamay.ru/wp-content/uploads/2010/08/critical.png" alt="" title="critical" width="476" height="664" class="aligncenter size-full wp-image-808" /><br />
Верхняя гистограмма показывает что бОльшую часть времени наша функция задействовала всего 2 ядра на машине. По нижней части картинки видно что каждый поток работает лишь небольшую часть времени, потом натыкается на critical секцию и останавливается, передавая управление другому потоку (жёлтые линии). И такая постоянная передача управления стоит совсем не дёшево (от того и замедление в 50 раз).<br />
Но стандарт OpenMP позволяет в данном случае использовать более &laquo;мягкую&raquo; директиву <code class="codecolorer cpp default"><span class="cpp"><span style="color: #339900;">#pragma omp atomic</span></span></code>, но при этом никто не гарантирует что компилятор не заменит её на тот же critical. Давайте проверим компилятор от Майкрософт. Проведём эксперимент с немного изменённой функций:</p>
<div class="codecolorer-container cpp blackboard" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:500px;"><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0000ff;">void</span> f3<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">double</span> <span style="color: #000040;">*</span> pdArr<span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
<span style="color: #339900;">#pragma omp parallel for num_threads(iNumThreads)</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">for</span><span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> i<span style="color: #000080;">=</span><span style="color: #0000dd;">0</span><span style="color: #008080;">;</span> i<span style="color: #000080;">&lt;</span>iLoopLen<span style="color: #008080;">;</span> <span style="color: #000040;">++</span>i<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">int</span> index <span style="color: #000080;">=</span> i<span style="color: #000040;">%</span>iArrLen<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">const</span> <span style="color: #0000ff;">double</span> dVal <span style="color: #000080;">=</span> <span style="color: #0000dd;">fabs</span><span style="color: #008000;">&#40;</span>i<span style="color: #000040;">*</span><span style="color:#800080;">.001</span><span style="color: #000040;">-</span><span style="color: #0000dd;">20</span>.<span style="color: #008000;">&#41;</span> <span style="color: #000040;">*</span> <span style="color: #0000dd;">5</span>. <span style="color: #000040;">+</span> <span style="color: #0000dd;">3</span>.<span style="color: #008080;">;</span><br />
<span style="color: #339900;">#pragma omp atomic</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; pdArr<span style="color: #008000;">&#91;</span>index<span style="color: #008000;">&#93;</span> <span style="color: #000040;">+</span><span style="color: #000080;">=</span> dVal<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p>компилируем, запускаем и получаем ~2.6 секунд (в некоторых запусках бывает заметно больше). Much better! Ускорение в 1.7 раза (на 8 ядрах) относительно однопотоковой версии. И давайте взглянем на картину, которую нам даёт тот же Intel Thread Profiler:<br />
<img src="http://mamay.ru/wp-content/uploads/2010/08/atomic.png" alt="" title="atomic" width="476" height="664" class="aligncenter size-full wp-image-809" /><br />
Видим, что теперь функция использует почти всегда все 8 ядер системы, хотя балансировка циклов оставляет желать лучшего, и отдельные потоки заканчивают работу намного раньше других, что приводит к неполной загрузке системы. Жёлтые линии на данной картинке &#8211; это запуски цикла, который у меня в тесте запускается 100 раз подряд для получения более точного результата измерения (на картинке представлен только небольшой кусок процесса выполнения программы).</p>
<p>О дальнейших возможностях улучшения работы параллельной версии программы в <a href="/2010/08/06/openmp-3/">следующем выпуске</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://mamay.ru/2010/08/02/openmp-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

