<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/2.3.3" -->
<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/"
	>

<channel>
	<title>Блоги Intel® Software Network &#187; Многоядерность</title>
	<link>http://softwareblogs-rus.intel.com</link>
	<description></description>
	<pubDate>Thu, 24 Apr 2008 15:40:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.3</generator>
	<language>en</language>
			<item>
		<title>КРИ - часть 2</title>
		<link>http://softwareblogs-rus.intel.com/2008/04/19/60/</link>
		<comments>http://softwareblogs-rus.intel.com/2008/04/19/60/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 11:21:10 +0000</pubDate>
		<dc:creator>Dmitry Oganezov (Intel)</dc:creator>
		
		<category><![CDATA[Графика]]></category>

		<category><![CDATA[Игры]]></category>

		<category><![CDATA[Конкурсы и мероприятия]]></category>

		<category><![CDATA[Многоядерность]]></category>

		<category><![CDATA[Мобильность]]></category>

		<category><![CDATA[доклад]]></category>

		<category><![CDATA[конференция]]></category>

		<category><![CDATA[КРИ]]></category>

		<guid isPermaLink="false">http://softwareblogs-rus.intel.com/2008/04/19/60/</guid>
		<description><![CDATA[Всем привет!
Я по-прежнему на той же широте, то есть на КРИ. Сегодня у наших ребят нет докладов, поэтому мне удалось пробежаться по залам конференции и посмотреть, где что показывают интересного. Но об этом позже, а пока я выкроил пару минут и напишу о том, что было вчера.
Саша Лазарев рассказывал о новом поколении мобильных чипсетов и [...]]]></description>
			<content:encoded><![CDATA[<p>Всем привет!</p>
<p>Я по-прежнему на той же широте, то есть на <a href="http://www.kriconf.ru/">КРИ</a>. Сегодня у наших ребят нет докладов, поэтому мне удалось пробежаться по залам конференции и посмотреть, где что показывают интересного. Но об этом позже, а пока я выкроил пару минут и напишу о том, что было вчера.</p>
<p><a href="http://softwareblogs-rus.intel.com/author/alexander-lazarev-2/">Саша Лазарев</a> рассказывал о новом поколении мобильных чипсетов и об адаптации игр для мобильных компьютеров. Подробности о чипсете опущу по двум причинам: во-первых, Саша вчера скинул мне вместо самой презентации ярлык на нее (видать, переволновался <img src='http://softwareblogs-rus.intel.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ), и теперь я боюсь что-нибудь наврать. А во-вторых, мы постараемся в ближайшее время выложить материалы докладов на сайт ISN. По крайней мере, публично доступную информацию.</p>
<p><img border="1" vspace="4" align="baseline" width="480" src="http://softwarecommunity-rus.intel.com/isn/home/siteimages/4blogs/Sasha_l1.jpg" hspace="4" alt="Fktrcfylh Kfpfhtd" height="343" /></p>
<p>Что я услышал интересного и нового? Новый адаптер беспроводной связи Wi-Fi позволит держать соединение с двумя сетями или устройствами одновременно. Что это дает? Простейший пример - вы сможете находиться в интернете и при этом играть в peer-to-peer игры. Кстати, о peer-to-peer – у нашего стенда стоят два мощных лаптопа, на которых можно поиграть в World of Conflict друг с другом по Wi-FI. Правда именно сейчас у них батарейки сели, но мы их скоро зарядим <img src='http://softwareblogs-rus.intel.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> !</p>
<p>И еще о батарейках. Оказывается, правильно распараллеленная игра дает выигрыш не только в скорости,  но и в энергопотреблении - одно ядро, нагруженное на 100%, потребляет примерно на четверть меньше, чем два по 50. (Надо будет на досуге подумать, почему так получается <img src='http://softwareblogs-rus.intel.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).</p>
<p> <a href="http://softwareblogs-rus.intel.com/2008/04/19/60/#more-60" class="more-link">(more...)</a></p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs-rus.intel.com/2008/04/19/60/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Почему компиляторы не любят параллельный код?</title>
		<link>http://softwareblogs-rus.intel.com/2008/03/03/43/</link>
		<comments>http://softwareblogs-rus.intel.com/2008/03/03/43/#comments</comments>
		<pubDate>Mon, 03 Mar 2008 16:55:35 +0000</pubDate>
		<dc:creator>Alexey Kukanov (Intel)</dc:creator>
		
		<category><![CDATA[Многоядерность]]></category>

		<category><![CDATA[Разработка софта]]></category>

		<category><![CDATA[TBB]]></category>

		<category><![CDATA[Threading Building Blocks]]></category>

		<category><![CDATA[производительность]]></category>

		<guid isPermaLink="false">http://softwareblogs-rus.intel.com/2008/03/03/43/</guid>
		<description><![CDATA[С распространением многоядерных процессоров стали множиться попытки написать простую параллельную программу и посмотреть, каков будет выигрыш в производительности. И это, несомненно, радует, но... К удивлению экспериментаторов, их простые параллельные программы порой не только не показывают ускорения по сравнению с обычной, последовательной версией, но даже и проигрывают в скорости! И далеко не всегда автор может (или хочет) разобраться, что к чему.]]></description>
			<content:encoded><![CDATA[<p>С распространением многоядерных процессоров параллельное программирование перестаёт быть экзотикой и превращается постепенно в необходимый навык разработчика ПО. Как косвенное свидетельство тому, стали множиться попытки написать простую параллельную программу и посмотреть, каков будет выигрыш в производительности. И это, несомненно, радует, но...</p>
<p>За последнее время мне довелось наблюдать несколько таких попыток, в которых параллельный код был написан при помощи библиотеки <a href="http://threadingbuildingblocks.org/">Threading Building Blocks</a> (TBB). К удивлению экспериментаторов, их простые параллельные программы порой не только не показывают ускорения по сравнению с обычной, последовательной версией, но даже и проигрывают в скорости! И далеко не всегда автор может (или хочет) разобраться, что к чему.</p>
<p>Разбираться приходилось мне, как одному из разработчиков TBB. А поскольку мне уже не раз предлагали вести сетевой журнал-блог на Intel Software Network, я в конце концов решил попытаться, и начать с анализа таких вот примеров. Они, с одной стороны, просты и понятны: не каждый готов начать параллельные эксперименты со сколь-нибудь сложной программы, а написать цикл, суммирующий элементы вектора – дело недолгое. С другой стороны, они весьма познавательны, причём порой именно в силу простоты.</p>
<p>Начну как раз с суммы элементов вектора. Вопрос о том, почему столь простая программа медленнее в параллельной TBB версии, чем в не-параллельной, возник на <a href="http://softwarecommunity.intel.com/isn/Community/en-US/forums/2471/ShowForum.aspx">форуме TBB</a> (см. тему “<a href="http://softwarecommunity.intel.com/isn/Community/en-US/forums/permalink/30250043/30249884/ShowThread.aspx">performance of parallel_for</a>”). Я приведу здесь лишь часть кода:</p>
<blockquote>
<pre>#define REAL double
#define MAX 10000000
class SumFoo {
    REAL *a;
    REAL sum;
    ...
    void operator()(const blocked_range&lt;size_t&gt;&amp; r) {
        REAL *arr = a;
        for(size_t i=r.begin(); i!=r.end(); i++) sum+=arr[i];
    }
};
void ParallelSumFoo(REAL a[], size_t n, size_t gs) {
    SumFoo sf(a,n);
    parallel_reduce(blocked_range&lt;size_t&gt;(0,n,gs), sf);
    ...
}
class SerialApplyFoo {
    REAL *a;
    size_t len;
    double sum;
public :
    SerialApplyFoo(REAL *array, size_t length) : a(array), len(length){
        sum = 0.0;
        for(size_t i=0; i&lt;len; i++)
            sum += a[i];
    }
    …
};
int main() {
    task_scheduler_init init;
    REAL *array = new REAL[MAX];
    ...
    SerialApplyFoo sf(array, MAX);
    ParallelSumFoo(array, MAX, GRAINSIZE);
    ...
}</pre>
</blockquote>
<p>На двухъядерном процессоре Intel® Core® 2 Duo, <em>вместо ожидаемого двукратного ускорения, параллельный код работал почти вдвое медленнее, чем последовательный</em>; на моём ноутбуке, к примеру, 0.08 сек против 0.044. В чём дело?</p>
<p>Прежде всего, давайте посмотрим, а что произойдёт, если параллельный код запустить последовательно, в одном потоке. С TBB это можно сделать двумя способами: либо явно указав количество потоков (в нашем случае, один) конструктору объекта инициализации библиотеки task_scheduler_init, либо установив параллельному алгоритму так называемый «размер зерна» (grain size) равным количеству итераций цикла. Я воспользуюсь первым способом:</p>
<pre>    task_scheduler_init init(1);</pre>
<pre> </pre>
<p>Результат может показаться неожиданным: 0.21 сек, почти впятеро медленнее, чем исходный последовательный код! Такое замедление явно не из-за использования TBB. Неудивительно, что и на двух ядрах нет выигрыша.</p>
<p>Всё дело в оптимизации, проводимой компилятором. Цикл суммирования в последовательной версии очень прост для оптимизации; компилятор знает о нём всё, начиная от константной длины (передача через аргумент для компилятора не помеха), заканчивая тем, что результат sum должен быть виден только по выходу из конструктора. Поэтому он может сгенерировать очень эффективный машинный код, к примеру, вот такой (я использовал Visual Studio* 2005):</p>
<blockquote>
<pre>            fldz
            lea      eax, DWORD PTR [edi+010h]
            mov      ecx, 0x2625A0h
main+0x105: fadd     QWORD PTR [eax-16]
            add      eax, 0x20h
            sub      ecx, 0x1h
            fadd     QWORD PTR [eax-40]
            fadd     QWORD PTR [eax-32]
            fadd     QWORD PTR [eax-24]
            jnz      main+0x105</pre>
</blockquote>
<p>0x2625A0 – это 2500000, четверть длины массива. Компилятор развернул четыре итерации цикла в одну, снизив расходы на обслуживание цикла. Промежуточные результаты вычислений накапливаются в регистре процессора, и только конечный результат будет записан в память. На каждую итерацию исходного цикла ровно одна операция чтения данных из памяти.</p>
<p>В случае использования TBB для компилятора всё не так просто. Начало и конец цикла определяются полями объекта, переданного по ссылке, длина цикла во время компиляции неизвестна, результат накапливается в поле данных “живого” объекта. Компилятор вынужденно более консервативен, и результат не замедлил сказаться:</p>
<blockquote>
<pre>execute+0x57: fld      QWORD PTR [edi]
              add      ecx, 0x1h
              fadd     QWORD PTR [edx+08h]
              add      edi, 0x8h
              fstp     QWORD PTR [edx+08h]
              cmp      ecx, DWORD PTR [esi+08h]
              jnz      execute+0x57</pre>
</blockquote>
<p>Здесь одна итерация цикла обрабатывает один элемент, но при этом задействует 3 операции чтения (!) и одну – записи. Помимо элемента данных, каждый раз подгружаются из памяти значение конца цикла для сравнения и промежуточная сумма, которая затем сохраняется и на следующей итерации подгружается снова.</p>
<p>Изложив всё это в форуме, я добавил, что тест «отдаёт предпочтение» последовательному коду, и этим, боюсь, направил автора не в ту сторону. В попытке улучшить тест, автор ввёл чтение размера массива с клавиатуры и заменил в не-параллельном коде объект на функцию:</p>
<blockquote>
<pre>REAL SerialSum(REAL *a_, unsigned long int start, unsigned long int end) {
    REAL sum = 0.0;
    for(unsigned long int i=start; i&lt;end; i++)
        sum += a_[i];
    return sum;
}</pre>
</blockquote>
<p>Первое изменение делает тест более реалистичным и несколько усложняет развёртывание цикла; второе никак вообще не влияет, потому что в новой функции промежуточная сумма накапливается в локальной переменной, которая точно так же может храниться в регистре процессора. А чтобы решить проблему, надо в <em>параллельный код</em> внести изменения, которые помогут компилятору применить оптимизацию, а именно – использовать в operator() локальные переменные:</p>
<blockquote>
<pre>    void operator()(blocked_range&lt;size_t&gt; &amp;r) {
        REAL local_sum = 0;
        const size_t end = r.end();
        for(size_t i=r.begin(); i!=end; i++)
            local_sum+=a[i];
        sum += local_sum;
    }</pre>
</blockquote>
<p>И вот какой получен машинный код:</p>
<blockquote>
<pre>              fldz
execute+0x58: fadd        qword ptr [edx]
              add         edx,8
              sub         ecx,1
              jne         execute+58h
              fadd        qword ptr [edi+8]
              fstp        qword ptr [edi+8]</pre>
</blockquote>
<p>Последние две инструкции – добавление локального результата к полю sum. Как и в последовательном коде, мы получили одно обращение к памяти на итерацию, и это сразу сказалось на скорости: теперь параллельный код выполняется 0.033 сек на двухъядерном процессоре. Ускорение достигнуто, но с коэффициентом 1.33, а не 2. Почему? В этом попробуем разобраться в следующий раз.</p>
<p><strong>Вывод:</strong> при разработке тестов на производительность, да и просто программ, необходимо учитывать, что использование классов и функций TBB усложняет компилятору работу по оптимизации, что особенно негативно сказывается на простых алгоритмах. Грамотное использование локальных переменных способствует лучшей оптимизации и быстродействию параллельного кода.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs-rus.intel.com/2008/03/03/43/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Рейтинг “популярности” языков программирования TIOBE</title>
		<link>http://softwareblogs-rus.intel.com/2008/01/23/tiobe/</link>
		<comments>http://softwareblogs-rus.intel.com/2008/01/23/tiobe/#comments</comments>
		<pubDate>Wed, 23 Jan 2008 08:57:40 +0000</pubDate>
		<dc:creator>Dmitry Oganezov (Intel)</dc:creator>
		
		<category><![CDATA[Многоядерность]]></category>

		<category><![CDATA[Разработка софта]]></category>

		<category><![CDATA[PERL]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[программирование]]></category>

		<category><![CDATA[рейтинг]]></category>

		<category><![CDATA[треды]]></category>

		<guid isPermaLink="false">http://softwareblogs-rus.intel.com/2008/01/23/tiobe/</guid>
		<description><![CDATA[В продолжение разговора о языковой дискриминации…
Вчера мне прислали ссылку на сайт некой компании TIOBE Software, которая занимается консалтингом, и в том числе – анализом кода на предмет его соответствия неким стандартам качества… Впрочем, не это меня заинтересовало.
На их сайте есть рейтинг “популярности” языков программирования, который называется просто и с достоинством – “TIOBE Programming Community Index”. [...]]]></description>
			<content:encoded><![CDATA[<p>В продолжение разговора о <a href="http://softwareblogs-rus.intel.com/2007/12/12/36/">языковой дискриминации</a>…</p>
<p>Вчера мне прислали ссылку на сайт некой компании TIOBE Software, которая занимается консалтингом, и в том числе – анализом кода на предмет его соответствия неким стандартам качества… Впрочем, не это меня заинтересовало.</p>
<p>На их сайте есть рейтинг “популярности” языков программирования, который называется просто и с достоинством – “<a href="http://www.tiobe.com/tiobe_index/tpci_definition.htm">TIOBE Programming Community Index</a>”. Насколько я понял из описания, данный индекс составляется исходя из статистики поисковых машин, и основывается на “доступности опытных программистов, курсов и поставщиков решений” (конец цитаты).</p>
<p><a href="http://www.tiobe.com/index.htm?tiobe_index?2007"><img src="http://softwarecommunity-rus.intel.com/isn/home/siteimages/4blogs/tiobe_rating.png" align="middle" border="0" height="310" hspace="4" vspace="4" width="585" /></a><br />
<small><em>Первые 10 строк, под картинкой ссылка на полную таблицу.</em></small></p>
<p>Не берусь судить о объективности и показательности такого рода данных. Тем не менее, рейтинг исправно и регулярно обновляется, и он заставил меня задуматься…</p>
<p>Во-первых, из 20 “наиболее популярных” языков я когда-либо использовал только 9. Думаю, это нормально :). О четырех языках - SAS, D, Lua и Logo - я вообще не имею никакого представления, что немного меня беспокоит. Причем два из этих четырех языков (Lua и Logo) демонстрируют какой-то невероятный рост популярности. Видимо, я что-то важное в последнее время упустил :).</p>
<p>Что еще интересно – большинство из языков, упомянутых в таблице, имеют средства распараллеливания. Те, где это в принципе возможно :). Используются ли эти средства в реальной жизни? Ситуация с C++, Java и .NET вроде ясна, а вот что с PERL и Python? Вопрос тем, кто пишет на подобных языках - насколько критичны для ваших типовых задач механизмы распараллеливания? И насколько они удобны для вас?</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs-rus.intel.com/2008/01/23/tiobe/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Первое место в третьем туре Threading Challenge занял  участник из России</title>
		<link>http://softwareblogs-rus.intel.com/2008/01/16/threading-challenge/</link>
		<comments>http://softwareblogs-rus.intel.com/2008/01/16/threading-challenge/#comments</comments>
		<pubDate>Wed, 16 Jan 2008 13:28:01 +0000</pubDate>
		<dc:creator>Dmitry Oganezov (Intel)</dc:creator>
		
		<category><![CDATA[Многоядерность]]></category>

		<category><![CDATA[Разработка софта]]></category>

		<category><![CDATA[конкурс]]></category>

		<category><![CDATA[Параллельное программирование]]></category>

		<category><![CDATA[Россия]]></category>

		<guid isPermaLink="false">http://softwareblogs-rus.intel.com/2008/01/16/threading-challenge/</guid>
		<description><![CDATA[И еще одна приятная новость: первое место в третьем туре конкурса Threading Challenge (задача оптимального расселения) получил наш соотечественник, выступающий под ником «bugman». Поздравляем! Решение победителя можно загрузить тут.
По сумме баллов в трех турах bugman занимает сейчас пятое место, а в целом Россия удерживает пять мест в двадцатке: 5-е, 9-е, 11-е, 13-е и 15-е. Очень [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal"><span lang="RU">И еще одна приятная новость: первое место в третьем туре конкурса </span><a href="http://softwarecommunity-rus.intel.com/articles/rus/61032.htm">Threading<span> </span>Challenge</a><span> <span lang="RU">(задача оптимального расселения) получил наш соотечественник, выступающий под ником «</span></span>bugman<span lang="RU">». Поздравляем! Решение победителя можно загрузить <a href="http://softwarecommunity.intel.com/isn/Community/en-US/forums/thread/30246898.aspx">тут</a>.</span></p>
<p class="MsoNormal"><span lang="RU">По сумме баллов в трех турах </span>bugman<span> <span lang="RU">занимает сейчас <a href="http://softwarecontests.intel.com/threadingchallenge/allusers.php#">пятое место</a>, а в целом Россия удерживает пять мест в двадцатке: 5-е, 9-е, 11-е, 13-е и 15-е. Очень неплохо, ведь в конкурсе участвуют программисты из множества стран. Желаю нашим программистам дальнейших успехов: впереди еще 9 этапов и главный <a href="http://softwarecommunity-rus.intel.com/articles/rus/1527.htm">приз</a>, который, я надеюсь, приедет в Россию :).</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs-rus.intel.com/2008/01/16/threading-challenge/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Языковая дискриминация как зеркало многопоточных технологий?</title>
		<link>http://softwareblogs-rus.intel.com/2007/12/12/36/</link>
		<comments>http://softwareblogs-rus.intel.com/2007/12/12/36/#comments</comments>
		<pubDate>Wed, 12 Dec 2007 14:02:01 +0000</pubDate>
		<dc:creator>Dmitry Oganezov (Intel)</dc:creator>
		
		<category><![CDATA[Многоядерность]]></category>

		<category><![CDATA[TBB]]></category>

		<category><![CDATA[threading]]></category>

		<category><![CDATA[конкурс]]></category>

		<guid isPermaLink="false">http://softwareblogs-rus.intel.com/2007/12/12/36/</guid>
		<description><![CDATA[Интересная дискуссия развернулась тут у нас на форуме. В двух словах: сейчас проходит конкурс Threading Challenge, который заключается в поиске удачных параллельных имплементаций классических алгоритмов (например - поиск простых чисел). В соответствии с правилами, участники, использующие библиотеку Intel® TBB, получают дополнительные баллы, и как следствие - серьезное преимущество в конкурсе. С другой стороны, использование TBB [...]]]></description>
			<content:encoded><![CDATA[<p>Интересная дискуссия развернулась тут <a href="http://softwarecommunity-rus.intel.com/isn/Community/ru-RU/forums/thread/30220903.aspx">у нас на форуме</a>. В двух словах: сейчас проходит конкурс <a href="http://softwarecommunity-rus.intel.com/articles/rus/61032.htm">Threading Challenge</a>, который заключается в поиске удачных параллельных имплементаций классических алгоритмов (например - поиск простых чисел). В соответствии с <a href="http://softwarecommunity-rus.intel.com/articles/rus/1526.htm">правилами</a>, участники, использующие библиотеку <a href="http://osstbb.intel.com/">Intel® TBB</a>, получают дополнительные баллы, и как следствие - серьезное преимущество в конкурсе. С другой стороны, использование TBB ограничивает участников в выборе языка, так как в данный момент TBB существует только для C++.Посетители форума задают резонный вопрос: а не проводит ли компания Intel политику «языковой дискриминации», начисляя дополнительные баллы участникам, использующим TBB и как следствие - C++?</p>
<p>Что тут скажешь, в любом состязании организаторы преследуют какие-то определенные цели (говорят, даже олимпиады устраивают нынче не за «просто так» :)). Надеюсь, я никого не удивлю, если раскрою главный «буржуинский» секрет данного конкурса – мы хотим узнать, насколько востребованы многопоточные технологии, какие именно инструменты используются разработчиками в данный момент, и каких инструментов на рынке не хватает.</p>
<p>Существуют категории программного обеспечения, где производительность оправдывает любые средства, например какая-нибудь сложная математика, [де]кодирование медиа данных и т.п. В данном случае выбор С++ почти очевиден.  Интел прилагает серьезные усилия, чтобы помочь разработчикам такого рода софта. В том числе, выпускает компиляторы и библиотеки вроде TBB.</p>
<p>В то же время есть приложения, ориентированные на бизнес – сервера приложений, веб-сервера и прикладные задачи «офисного» класса. И я совершенно согласен с мнением, что таких приложений намного больше. В то же время, намного больше и поставщиков инструментов для задач такого рода. Если взять, к примеру, тот же .Net, то можно упомянуть <a href="http://msdn.microsoft.com/msdnmag/issues/07/10/Futures/default.aspx?loc=ru">Parallel FX</a> с TPL, или упомянутый на нашем форуме <a href="http://softwarecommunity-rus.intel.com/isn/Community/ru-RU/forums/thread/30220887.aspx">MC#</a>.</p>
<p>Что делает Интел для разработчиков бизнес-приложений на новых языках, в том числе MRTE? Во-первых, устоявшиеся продукты, такие как библиотеки IPP и профилировщик VTune поддерживают все основные языки. Я сейчас специально проверил, в IPP есть примеры для C# а VTune по-прежнему профилирует .NET и Java приложения. Вероятно, придет время и для относительно новых продуктов, таких как TBB.</p>
<p>С другой стороны, TBB – проект с исходным кодом, и я не вижу никаких проблем использовать все преимущества TBB (включая структуру библиотеки) в любом другом проекте. Например, можно создать сборки для .NET на основе TBB и получится библиотека для нужной вам платформы. Я даже слышал мнение, что многое в том же Parallel FX позаимствовано из TBB.</p>
<p>Однако, вернемся к конкурсу. Если статистика конкурса покажет, что большинство участников предпочитают решения на том же .NET и считает их более элегантными, вопреки дополнительным баллам – думаю, это будет серьезным поводом для ребят из команды TBB задуматься о создании .NET клона. Хотя на этом рынке уже Parallel FX… Короче, тут есть над чем голову поломать…</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs-rus.intel.com/2007/12/12/36/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Фотографии с церемонии награждения победителей студенческого кубка Intel</title>
		<link>http://softwareblogs-rus.intel.com/2007/12/06/intel/</link>
		<comments>http://softwareblogs-rus.intel.com/2007/12/06/intel/#comments</comments>
		<pubDate>Thu, 06 Dec 2007 17:58:05 +0000</pubDate>
		<dc:creator>Dmitry Oganezov (Intel)</dc:creator>
		
		<category><![CDATA[Intel Software Network]]></category>

		<category><![CDATA[Конкурсы и мероприятия]]></category>

		<category><![CDATA[Многоядерность]]></category>

		<category><![CDATA[Разработка софта]]></category>

		<category><![CDATA[contest]]></category>

		<category><![CDATA[prizes]]></category>

		<category><![CDATA[students]]></category>

		<category><![CDATA[конкурс]]></category>

		<category><![CDATA[призы]]></category>

		<category><![CDATA[студенты]]></category>

		<guid isPermaLink="false">http://softwareblogs-rus.intel.com/2007/12/06/intel/</guid>
		<description><![CDATA[И снова о студенческом кубке Intel. Вернувшаяся из дальних странствий Юля Телль поделилась фотографиями с симпозиума по высокопроизводительным вычислениям, на котором мы награждали победителей конкурса.
На мероприятие приехали все 11 наших победителей - из Питера, Киева, Вятки и Нижнего... Лично я был этому приятно удивлен, ведь большинство студентов в наше время успешно совмещает учебу с работой [...]]]></description>
			<content:encoded><![CDATA[<p>И снова о студенческом кубке Intel. Вернувшаяся из дальних странствий Юля Телль поделилась фотографиями с симпозиума по высокопроизводительным вычислениям, на котором мы награждали победителей конкурса.</p>
<p>На мероприятие приехали все 11 наших победителей - из Питера, Киева, Вятки и Нижнего... Лично я был этому приятно удивлен, ведь большинство студентов в наше время успешно совмещает учебу с работой и потратить пару дней на поездки, наверное, было не так уж и просто. Тем приятнее было всех увидеть и со всеми познакомиться!</p>
<p><img src="http://softwarecommunity-rus.intel.com/isn/home/siteimages/4blogs/StudentsCup_14.jpg" alt="Марианна Светлосанова награждает победителей" align="middle" height="300" hspace="4" vspace="4" width="400" /><br />
<small><em>Марианна Светлосанова награждает победителей</em></small></p>
<p><img src="http://softwarecommunity-rus.intel.com/isn/home/siteimages/4blogs/StudentsCup_18.jpg" alt="Стив Чейз поздравляет участников конкурса" align="middle" height="300" hspace="4" vspace="4" width="400" /><br />
<small><em>Стив Чейз поздравляет участников конкурса</em></small></p>
<p><img src="http://softwarecommunity-rus.intel.com/isn/home/siteimages/4blogs/StudentsCup_23.jpg" alt="Андрей Нарайкин с незапланированной официальной речью" align="middle" height="300" hspace="4" vspace="4" width="400" /><br />
<small><em>Андрей Нарайкин с незапланированной официальной речью</em></small></p>
<p><img src="http://softwarecommunity-rus.intel.com/isn/home/siteimages/4blogs/StudentsCup_07.jpg" alt="Андрей Нарайкин делится секретами оптимизации" align="middle" height="300" hspace="4" vspace="4" width="400" /><br />
<small><em>Андрей Нарайкин делится секретами оптимизации</em></small></p>
<p>А теперь ссылки на архивы с файлами большого размера:</p>
<p><a href="http://softwarecommunity-rus.intel.com/isn/home/siteimages/4blogs/StudentsCup_01-10.zip">Часть 1</a> (~3.3Mb)<br />
<a href="http://softwarecommunity-rus.intel.com/isn/home/siteimages/4blogs/StudentsCup_11-20.zip">Часть 2</a> (~3.6Mb)<br />
<a href="http://softwarecommunity-rus.intel.com/isn/home/siteimages/4blogs/StudentsCup_21-27.zip">Часть 3</a> (~2.6Mb)</p>
<p>И еще раз спасибо Юле за фотографии!</p>
<p>PS: Если кому-то понадобится еще больший размер - не стесняйтесь, пишите!</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs-rus.intel.com/2007/12/06/intel/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Наутро они проснулись знаменитыми...</title>
		<link>http://softwareblogs-rus.intel.com/2007/11/30/34/</link>
		<comments>http://softwareblogs-rus.intel.com/2007/11/30/34/#comments</comments>
		<pubDate>Fri, 30 Nov 2007 09:04:50 +0000</pubDate>
		<dc:creator>Dmitry Oganezov (Intel)</dc:creator>
		
		<category><![CDATA[Intel Software Network]]></category>

		<category><![CDATA[Конкурсы и мероприятия]]></category>

		<category><![CDATA[Многоядерность]]></category>

		<category><![CDATA[Разработка софта]]></category>

		<category><![CDATA[contest]]></category>

		<category><![CDATA[students]]></category>

		<category><![CDATA[sunset]]></category>

		<guid isPermaLink="false">http://softwareblogs-rus.intel.com/2007/11/30/34/</guid>
		<description><![CDATA[Русский Tom's Hardware Guide, PC News и другие сетевые ресурсы разместили информацию о результатах Intel Students Cup. Как говорится - теперь будет что внукам рассказать 
]]></description>
			<content:encoded><![CDATA[<p>Русский Tom's Hardware Guide, PC News и другие сетевые ресурсы <a href="http://www.pcnews.ru/news/intel-11-600-72-sunset-core-extreme-software-network-quad-q6700-duo-e6750-10-high-performance-203224.html">разместили</a> <a href="http://www.thg.ru/technews/20071128_211216.html">информацию</a> о результатах <a href="http://softwarecommunity-rus.intel.com/articles/rus/61041.htm">Intel Students Cup</a>. Как говорится - теперь будет что внукам рассказать <img src='http://softwareblogs-rus.intel.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs-rus.intel.com/2007/11/30/34/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Дополнительный рейтинг и SunSet</title>
		<link>http://softwareblogs-rus.intel.com/2007/11/20/sunset/</link>
		<comments>http://softwareblogs-rus.intel.com/2007/11/20/sunset/#comments</comments>
		<pubDate>Tue, 20 Nov 2007 15:06:49 +0000</pubDate>
		<dc:creator>Dmitry Oganezov (Intel)</dc:creator>
		
		<category><![CDATA[Intel Software Network]]></category>

		<category><![CDATA[Конкурсы и мероприятия]]></category>

		<category><![CDATA[Многоядерность]]></category>

		<category><![CDATA[Разработка софта]]></category>

		<category><![CDATA[sunset]]></category>

		<category><![CDATA[конкурс]]></category>

		<category><![CDATA[студент]]></category>

		<guid isPermaLink="false">http://softwareblogs-rus.intel.com/2007/11/20/sunset/</guid>
		<description><![CDATA[Всем привет,
Я обещал опубликовать комментарии наших экспертов к дополнительному рейтингу конкурса «Студенческий кубок Intel: оптимизация многопоточных приложений».
Перед тем как перейти к собственно комментариям, мне хотелось бы сказать вот что: мы с жюри конкурса собирались несколько раз, анализировали результаты, думали, спорили и сомневались… И принять окончательное решение было очень непросто, поверьте! Наш специалист по оптимизации Максим [...]]]></description>
			<content:encoded><![CDATA[<p>Всем привет,</p>
<p>Я обещал опубликовать комментарии наших экспертов к дополнительному рейтингу конкурса <a href="http://softwarecommunity-rus.intel.com/articles/rus/61022.htm">«Студенческий кубок Intel: оптимизация многопоточных приложений»</a>.</p>
<p>Перед тем как перейти к собственно комментариям, мне хотелось бы сказать вот что: мы с жюри конкурса собирались несколько раз, анализировали результаты, думали, спорили и сомневались… И принять окончательное решение было очень непросто, поверьте! Наш специалист по оптимизации Максим Локтюхин компилировал ваши приложения и перепроверял результаты до 2-х ночи, потом мы строили разные рейтинги и читали пояснительные записки, снова собирались, спорили и снова сомневались…</p>
<p>Мы старались быть объективными, насколько это возможно. И наше общее объективное мнение (то, что совпало :), – каждый из участников вложил труд, время и частичку души в эту работу. За это и объявляем вам наш огромный, торжественный, трудовой респект!</p>
<p>Итак, к нашим экспертам. Андрей Нарайкин, Валерий Федорович Курякин и Игорь Ермолаев анализировали работы участников, а я попробовал «скомпилировать» их мнения в данном посте. Подробнее об официальных результатах конкурса я писал в <a href="http://softwarecommunity-rus.intel.com/articles/rus/61041.htm">этой статье</a>.</p>
<p><strong>Юрий Мальков</strong> продемонстрировал отличное знание микро-архитектуры, понимание  и навыки параллельного программирования, видно очень хорошее знание инструментария, умение прилично его использовать и структурированный подход: последовательная оптимизация, параллельная оптимизация, общая.<br />
Юрий сделал анализ алгоритма и предложил улучшения, аргументировав свои предложения. Наконец, нам понравилось описание проекта Юрия – оно очень неплохого качества. Лучшее из всех приведенных.</p>
<p><strong>Александр Романов</strong> также показал отличное знание микро-архитектуры и навыки параллельного программирования. Грамотно воспользовался инструментами оптимизации. Проявил дисциплинированность в описании параметров системы. Наконец, из комментариев в коде видно, насколько Александр вложился в анализ производительности и оптимизацию. С технической точки зрения – отлично сработано.</p>
<p>Сравнивая работы Юрия и Александра, эксперты отметили два разных подхода к оптимизации: «университетский» и «политеховский». Александр много экспериментировал. Это, несомненно, плюс, но некоторые решения приняты просто на основе экспериментов («так оказалось быстрее»), хотя выбор был далеко не очевиден. Юрий работал «по системе», структурно. Плюс - составил великолепное описание своей работы. По оценке экспертов Юрий получает высшую оценку, хотя по результатам измерений Александр, несомненно, – лидер. Он же сохраняет и лидерство в общем зачете.</p>
<p><strong>Евгений Калишенко</strong> выступил «экономично» (большой +): минимизировал изменения, «бил» в главные проблемные точки. Технически – сделал все на хорошем уровне. Отмечаем хорошее знание инструментария и умение его использовать<br />
Из минусов - экономично выступил и в описании. Краткость она, конечно, сестра таланта, но нам хотелось бы увидеть пояснения, почему сделаны те или иные изменения.</p>
<p><strong>Илья К</strong>. Налицо понимание и навыки параллельного программирования, видно очень хорошее знание инструментария. Структурированный подход к работе: последовательная оптимизация, параллельная оптимизация, общая. Неплохое общее описание (сразу видно - литературу хорошую читал ). К сожалению, «что-то пошло не так» - лишь седьмое место по таймингам.</p>
<p><strong>Павел Зубарев </strong>и <strong>Вера Кононова</strong>. Описания – краткие. Изменения кода – логичны, но можно было сделать больше (что собственно лидеры и доказали).</p>
<p><strong>Алексей Щербаков</strong>. Описание – достаточно подробное. Привел много данных по анализу, сравнительные характеристики (например, компиляторов). Но у нас сложилось ощущение, что Алексей остановился на самом интересном месте: собрал много данных, сделал некоторые изменения, но отнюдь не все, которые можно было бы, основываясь на этих данных. Какие-то вещи не сработали, в результате – отстал от лидеров.</p>
<p><strong>Руслан Увашев</strong>. Нам понравился подробно прокомментированный код, который прислал Руслан. Из комментариев понятно, что сделано и почему. Руслан всячески старался соблюсти условия корректного выполнения программы… И это, видимо отчасти его подвело – лидеры подошли к проблеме более агрессивно и аргументировали свою позицию, привели разные варианты. Тем не менее, стремление блюсти букву закона мы отмечаем плюсом.</p>
<p><strong>Петр Процик</strong> показал отличный результат по таймингам, но, к сожалению, не потрудился описать, как именно он этого добился.</p>
<p><strong>Юрий Демин, Евгений Гришуль</strong>. Сделанные ребятами изменения очень логичны, но можно было сделать и больше.</p>
<p><strong>Владимир Червяков</strong>. Видны приложенные усилия… Но… Конкурс есть конкурс, многие показали лучший результат.</p>
<p>Общий итог дополнительного рейтинга:<br />
Лидер – Юрий Мальков<br />
Второе место – Александр Романов<br />
Третье место - Илья К.<br />
Евгений Калишенко, Павел Зубарев и Вера Кононова – близкие результаты, соответственно 4-е - 6-е места.<br />
И замыкают дополнительный рейтинг Алексей Щербаков, Руслан Увашев, Петр Процик, Юрий Демин – 7-10 места.</p>
<p>Буду рад ответить на вопросы о конкурсе. Вы можете задавать их тут или на <a href="http://softwarecommunity-rus.intel.com/isn/Community/ru-RU/forums/2439/ShowForum.aspx">форуме</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs-rus.intel.com/2007/11/20/sunset/feed/</wfw:commentRss>
		</item>
		<item>
		<title>За пределами четырех ядер – отчет по семинару</title>
		<link>http://softwareblogs-rus.intel.com/2007/11/12/29/</link>
		<comments>http://softwareblogs-rus.intel.com/2007/11/12/29/#comments</comments>
		<pubDate>Mon, 12 Nov 2007 12:59:55 +0000</pubDate>
		<dc:creator>Marianna Svetlosanova (Intel)</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Многоядерность]]></category>

		<guid isPermaLink="false">http://softwareblogs-rus.intel.com/2007/11/12/29/</guid>
		<description><![CDATA[Доброго всем времени суток!
Командировки и праздники не позволили мне написать краткий отчет о семинаре сразу после его окончания, но тем не менее я считаю, что лучше поздно, чем никогда.
Прежде всего, я хотела бы поблагодарить всех, кто пришел на семинар. Высокие оценки сессий дают основания думать, что и ваше и наше время было потрачено не зря. [...]]]></description>
			<content:encoded><![CDATA[<p>Доброго всем времени суток!</p>
<p>Командировки и праздники не позволили мне написать краткий отчет о <a href="http://softwarecommunity-rus.intel.com/articles/rus/61040.htm">семинаре</a> сразу после его окончания, но тем не менее я считаю, что лучше поздно, чем никогда.</p>
<p>Прежде всего, я хотела бы поблагодарить всех, кто пришел на семинар. Высокие оценки сессий дают основания думать, что и ваше и наше время было потрачено не зря. Спасибо также, за оставленные комментарии и пожелания - все это мы учтем в будущем.</p>
<p>Не буду повторять Викторию, которая уже написала в своем посте о неоднородности аудитории и сложности создания одинаково интересного и поездного материала для всех. Хотя этот материал показал очень высокий уровень слушателей! Скажу только, что на будущий год мы подумываем над организации двух дневного семинара для разработчиков, некого мини-аналога IDF. <img src='http://softwareblogs-rus.intel.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Такой формат позволит нам дифференцировать материал, а также ввести долгожданные «лабораторные работы», т.е. больше времени уделить реальным примерам.</p>
<p>А Вы бы пришли на двухдневный семинар?</p>
<p>Нам важно знать Ваше мнение. Если есть что-то, что вы побоялись оставить в анонимной анкете – напишите нам об этом здесь.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs-rus.intel.com/2007/11/12/29/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Способы параллелизации</title>
		<link>http://softwareblogs-rus.intel.com/2007/10/26/25/</link>
		<comments>http://softwareblogs-rus.intel.com/2007/10/26/25/#comments</comments>
		<pubDate>Fri, 26 Oct 2007 10:02:14 +0000</pubDate>
		<dc:creator>Alexander Komarov (Intel)</dc:creator>
		
		<category><![CDATA[Многоядерность]]></category>

		<category><![CDATA[Разработка софта]]></category>

		<guid isPermaLink="false">http://softwareblogs-rus.intel.com/2007/10/26/25/</guid>
		<description><![CDATA[Как и обещал, напишу о различных подходах, помогающих параллелизации. Странно, но я не видел обзора всех доступных программисту возможностей в одном месте. (Кто видел, киньте ссылку в комментах, пожалуйста!)
Win threads, PThreads
Программист управляет всем, чем можно. Умелый программист, потратив много сил, получит корректную программу. Потратив еще много сил, получит корректную масштабирующуюся программу. И т.д.
OpenMP
Если вам повезло [...]]]></description>
			<content:encoded><![CDATA[<p>Как и обещал, напишу о различных подходах, помогающих параллелизации. Странно, но я не видел обзора всех доступных программисту возможностей в одном месте. (Кто видел, киньте ссылку в комментах, пожалуйста!)</p>
<p>Win threads, PThreads</p>
<p>Программист управляет всем, чем можно. Умелый программист, потратив много сил, получит корректную программу. Потратив еще много сил, получит корректную масштабирующуюся программу. И т.д.</p>
<p><a href="http://www.openmp.org/drupal/">OpenMP</a></p>
<p>Если вам повезло с задачей (или просто вы пишите курсовую по методом мат. вычислений), то это идеальный способ посчитать все быстро на вашем домашнем Quad Core Extreme Edition CPU <img src='http://softwareblogs-rus.intel.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Если серьезно, я относился к OpenMP всегда очень скептически, но все чаще начинаю использовать ее для прототипов в самых неожиданных задачах.</p>
<p><a href="http://www.boost.org/">Boost </a>Threads</p>
<p>Единственный потенциально 100% портируемый С++ вариант. Больше преимуществ на первый взгляд не заметно.</p>
<p><a href="http://www.cs.wustl.edu/~schmidt/ACE.html">Ace </a>Threads</p>
<p>Я бы не стал включать в список, но некоторые мои клиенты его успешно используют...</p>
<p><a href="http://www.intel.com/software/products/tbb">Intel TBB</a></p>
<p>Здесь должна быть неприкрытая, наглая и лживая реклама <img src='http://softwareblogs-rus.intel.com/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> Правда, я очень люблю TBB, и считаю ее дизайн просто великолепным. К сожалению, я опасаюсь, что у нас может не получится должным образом ее продвинуть на рынок. (Что хорошо получается с процессорами, не всегда происходит с остальными продуктами). Пожалуйста, обратите внимание на этот продукт - он может существенно облегчить распараллеливание в тех задачах, в которых применим.</p>
<p>Ct</p>
<p>Даже линка нет, настолько секретная. Но Гугл вам в помощь. Может оказаться очень полезной года через 2, а может и нет...</p>
<p>MPI.</p>
<p>Несмотря на то, что MPI используется обычно для HPC задач в кластерах, в последнее время есть тенденция использовать message passing параллелизацию и в многоядерных решениях, в том числе, например, создавая кластера из виртуальных машин.</p>
<p>(pre-MPI)</p>
<p>Экзотические. Я имею в виду не C/C++/Fortran, а Erlang, параллельный Хаскель, и тому подобные. Могут быть страшно эффективны, но как найти команду программистов, с ними справляющихся?</p>
<p>Transactional memory.</p>
<p>Жутко модная вещь, многие считают, что за ней - будущее. Мое личное мнение (просто сугубое ИМХО), 80% коллег со мной не согласятся: Будущее очень отдаленное, и то вряд ли.</p>
<p>Кстати, это мой последний пост, к сожалению. Всем удачи, мой личный блог - <a href="http://izard.livejournal.com">вот</a>, я уезжаю в Новую Зеландию работать в <a href="http://www.endace.com">стартапе</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://softwareblogs-rus.intel.com/2007/10/26/25/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
