<?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>Блоги &#187; Конкурсы и мероприятия</title>
	<atom:link href="http://software.intel.com/ru-ru/blogs/category/events/feed/" rel="self" type="application/rss+xml" />
	<link>http://software.intel.com/ru-ru/blogs</link>
	<description></description>
	<lastBuildDate>Tue, 07 Feb 2012 14:18:00 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Конкурс футболок для участников ISN</title>
		<link>http://software.intel.com/ru-ru/blogs/2012/02/07/isn-8/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2012/02/07/isn-8/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 14:15:42 +0000</pubDate>
		<dc:creator>Boris Rozenshteyn (Intel)</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>
		<category><![CDATA[Конкурсы и мероприятия]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2012/02/07/isn-8/</guid>
		<description><![CDATA[На ISN объявляется конкурс на дизайн футболок для блогеров ISN.]]></description>
			<content:encoded><![CDATA[<p>Всем привет!</p>
<p><img align=right src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/tShirt2012_logo.png"/></p>
<p>В эти холодные дни, когда студенты спокойно отдыхают от сессии, а не-студенты два раза в день мерзнут по дороге на работу и с работы, мы опять решаем, как оформить новые блог(г)ерские футболки для участников Intel Software Network.<br/><br />
В далеком 2008 году мои коллеги <a href="http://software.intel.com/ru-ru/blogs/2008/08/22/2000112/">уже обращались</a> к авторам сообщества с призывом придумать надпись для футболок, но чем закончилось дело я не знаю.</p>
<p>Итак, в этот раз всё серьезно и более свободно.</p>
<p>Наверняка, у вас есть <strong>идея для клёвой футболки блогера/участника ISN</strong>. Мы можем воплотить ее в жизнь!</p>
<p>Каждый, кому не безразлична ISN-мода этого сезона, может перейти в <a href="http://software.intel.com/ru-ru/forums/showthread.php?t=102890">специальную тему на форуме</a> и опубликовать там картинку или текстовое описание «футболки мечты». </p>
<p>Если же вы не готовы проявить креативность, можете комментировать уже опубликованные идеи и голосовать за них.</p>
<p>Самую лучшую идею мы воплотим в жизнь (а это значит, что более 50 человек будут носить на себе ваше творение), а автору идеи, а также самому активному на наш взгляд участнику, отправим свежеиспеченные футболки, как только они приедут к нам из типографии.</p>
<p><strong>Таймлайн</strong>: обсуждение лучшей футболки не закончится никогда, но выбирать лучший вариант мы будем 9 марта, сразу после праздников (чтобы веселее было <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  )</p>
<p>До встречи <a href="http://software.intel.com/ru-ru/forums/showthread.php?t=102890">в форуме</a>!</p>
<p><strong>P.S.</strong>: Тому, кто догадается, почему мы не предлагаем публиковать картинку в комментариях к этой записи, плюс в карму <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>P.P.S.</strong>: Не воспринимайте последний вопрос серьезно, ответ лежит на поверхности и не отличается уникальностью <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2012/02/07/isn-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Знакомство с Numa</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/11/25/numa/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/11/25/numa/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 13:16:12 +0000</pubDate>
		<dc:creator>pawnbot</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>
		<category><![CDATA[Конкурсы и мероприятия]]></category>
		<category><![CDATA[Параллельное программирование]]></category>
		<category><![CDATA[Разработка софта]]></category>
		<category><![CDATA[Acceler8]]></category>
		<category><![CDATA[Numa]]></category>
		<category><![CDATA[pthreads]]></category>
		<category><![CDATA[RAM]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/11/25/numa/</guid>
		<description><![CDATA[Во время конкурса <a href="http://software.intel.com/ru-ru/articles/contest-acceler8-2011-main/">Acceler8</a> были обсуждения векторизации, разворотов циклов, и различных микрооптимизаций. Но, наверное, многие, как и я, сталкивались с проблемой, что какие бы оптимизации они не делали, программа на компьютере с небольшим числом ядер разгонялась, а на MTL скорость лишь неумолимо падала. Тогда стало ясно, что нужно каким-то образом разгружать RAM, иначе какой-либо прогресс невозможен. Я добавил в программу только 2 оптимизации работы с RAM, но благодаря ним становятся возможными и следующие улучшения программы, такие как векторизация.]]></description>
			<content:encoded><![CDATA[<p>Во время конкурса <a href="http://software.intel.com/ru-ru/articles/contest-acceler8-2011-main/">Acceler8</a> были обсуждения векторизации, разворотов циклов, и различных микрооптимизаций. Но, наверное, многие, как и я, сталкивались с проблемой, что какие бы оптимизации они не делали, программа на компьютере с небольшим числом ядер разгонялась, а на MTL скорость лишь неумолимо падала. Тогда стало ясно, что нужно каким-то образом разгружать RAM, иначе какой-либо прогресс невозможен. Я добавил в программу только 2 оптимизации работы с RAM, но благодаря ним становятся возможными и следующие улучшения программы, такие как векторизация.</p>
<h2>Numa система на MTL.</h2>
<p>На MTL стоит 256 ГБ оперативной памяти, но в системе 4 процессора Xeon, каждый из них имеет прямой доступ только к своим 64 гб оперативной памяти, а доступ к остальным 192 гб занимает вдвое больше времени.</p>
<blockquote><p>node 0 size: 64485 MB<br />
node 1 size: 64640 MB<br />
node 2 size: 64640 MB<br />
node 3 size: 64640 MB</p>
<p>node distances:<br />
node   0   1   2   3<br />
  0:  10  21  21  21<br />
  1:  21  10  21  21<br />
  2:  21  21  10  21<br />
  3:  21  21  21  10</p></blockquote>
<p>Распределение процессоров по узлам(40 - 79 есть только на логин сервере, где включен HT):</p>
<blockquote><p>node 0: 0-9, 40-49<br />
node 1: 10-19, 50-59<br />
node 2: 20-29, 60-69<br />
node 3: 30-39, 70-79
</p></blockquote>
<p>Естественно хочется избегать ситуаций, когда процессор лезет в чужую память. Возможно, <strong>OpenMP</strong> разбирается с такими проблемами автоматически, но своё решение я писал с помощью pthreads и для них решение проблемы оказалось следующим:</p>
<ol>
<li>При вызове malloc отображение виртуальной памяти на физическую ещё не строится.</li>
<li>Когда какой-то процессор обращается к куску памяти, для которого отображения ещё нет, это отображение строится на память в Numa узле этого процессора.</li>
<li>Поэтому выгодно генерировать в каждом потоке ту часть матрицы, которая будет им чаще всего использоваться, осуществить эту параллельную генерацию нам позволяет наличие периода в матрице. В общем случае пришлось бы делать memset своего куска матрицы в каждом потоке, и только потом генерировать всю матрицу в каком-то одном потоке.</li>
<li>Для того, чтобы потоки не бродили по процессорам и тем более по numa узлам, нужно их привязать к конкретным процессорам. Например, можно привязать поток номер k к процессору номер k, это даст ещё одно преимущество - мы будем знать у каких потоков есть разделяемый кэш и можем более эффективно распределять операции. В случае pthreads привязка потока к процессору осуществляется при помощи библиотеки sched.h:</li>
</ol>
<pre name="code" class="cpp">
CPU_ZERO(&amp;affinity);
CPU_SET(args-&gt;thread_number, &amp;affinity);
sched_setaffinity(0, sizeof(cpu_set_t), &amp;affinity);
</pre>
<h2>Блочный метод.</h2>
<p>Даже разобравшись с Numa системой, векторизация не даст никакого ощутимого выигрыша, пока мы не начнём по максимуму использовать кэш. Если написать стандартный метод Кадана в 3 цикла, то по сути никакие уровни кэша, кроме L3, программа использовать не будет. Естественно эта ситуация нас не устраивает, хочется изменить порядок, в котором мы обрабатываем элементы матрицы, чтобы каждый элемент, который мы положим в кэш, оставался там как можно дольше. Например, можно сделать метод Кадана блочным, т.е. выбрать некоторые размеры блока A и B, и работать с блоком, как с неделимой операцией, алгоритм в таком виде примет сложность 0.5 * (N/A)^2 * (M / B) * (A^2 * B). Естественно, сложность осталась прежней, но (A^2 B) - операции, в которых процессор не будет лезть дальше собственного кэша, и естественно эти операции будут работать эффективнее, чем если бы процессор всегда лез в оперативную память или L3 кэш. Осталось заметить только то, что блоки нужно заводить не одной операцией malloc(), а каждый поток должен сделать malloc() своих блоков. В Linux malloc() автоматически округляет выделенную память до ближайшей степени двойки, что позволит нам избежать эффекта false sharing.</p>
<h2>Что же это дало?</h2>
<p>По сути описанные выше 2 оптимизации не дают огромного прироста в скорости, но после них становится возможной эффективная векторизация, которая и даст желаемый прирост в скорости, в моём случае - в 3 раза. Так же стоит отметить, что при небольших периодах есть гораздо более эффективные методы, например за O(m^3), которые используют гораздо меньше памяти. Данные оптимизации рассчитаны скорее на задачу в общем случае, нежели на конкретную постановку.</p>
<h2>Источники:</h2>
<p>1. <a href="http://num-meth.srcc.msu.ru/zhurnal/tom_2010/pdf/v11r123.pdf"> Об оптимизации вычислительных приложений для многопроцессорных систем с общей неоднородной памятью</a><br />
2. <a href="ftp://82.96.64.7/pub/linux/kernel/people/christoph/pmig/numamemory.pdf"> Memory in a Linux/NUMA System </a></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/11/25/numa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Пару слов о тайлинге</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/11/25/2005946/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/11/25/2005946/#comments</comments>
		<pubDate>Fri, 25 Nov 2011 08:50:13 +0000</pubDate>
		<dc:creator>ixanezis</dc:creator>
				<category><![CDATA[Конкурсы и мероприятия]]></category>
		<category><![CDATA[Параллельное программирование]]></category>
		<category><![CDATA[Разработка софта]]></category>
		<category><![CDATA[Acceler8]]></category>
		<category><![CDATA[Tailings]]></category>
		<category><![CDATA[тайлинг]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/11/25/2005946/</guid>
		<description><![CDATA[Для тех, кто только начинает осваивать мир параллельных технологий, хотелось бы поведать начальные сведения о том, что такое тайлинг и с чем его едят.

Тайлинг представляет собой метод написания параллельных программ (распараллеливания существующих), когда циклы программы разбиваются на куски (тайлы) не очень большого размера. В случае системы с распределённой памятью все необходимые данные для выполнения одного тайла целиком отправляются на какой-то процессор/машину, где происходит непрерывное выполнение требуемой части кода (непрерывное = без остановок на получение/отсылку данных), после чего посчитанный результат отсылается обратно главному процессору. В случае же системы с общей памятью (имеется в виду общая сверхбыстрая память - кэш одного процессора) разбиение на тайлы подразумевает собой логическое разбиение цикла на куски, при котором все потоки совместно работают над одним не очень большим куском памяти, что приводит к лучшему использованию кэша процессора, в котором они все работают.]]></description>
			<content:encoded><![CDATA[<p>Для тех, кто только начинает осваивать мир параллельных технологий, хотелось бы поведать начальные сведения о том, что такое тайлинг и с чем его едят.</p>
<p>Тайлинг представляет собой метод написания параллельных программ (распараллеливания существующих), когда циклы программы разбиваются на куски (тайлы) не очень большого размера. В случае системы с распределённой памятью все необходимые данные для выполнения одного тайла целиком отправляются на какой-то процессор/машину, где происходит непрерывное выполнение требуемой части кода (непрерывное = без остановок на получение/отсылку данных), после чего посчитанный результат отсылается обратно главному процессору. В случае же системы с общей памятью (имеется в виду общая сверхбыстрая память - кэш одного процессора) разбиение на тайлы подразумевает собой логическое разбиение цикла на куски, при котором все потоки совместно работают над одним не очень большим куском памяти, что приводит к лучшему использованию кэша процессора, в котором они все работают.</p>
<p>В качестве примера рассмотрим массив А размера N и некоторый алгоритм на ней:</p>
<pre name="code" class="cpp">for (int i=0; i&lt;N; ++i)
     // Do something with A[i]</pre>
<p>Казалось бы, что всё отлично. Но, допустим, мы решили распараллелить этот алгоритм на n-ядерном процессоре с помощью любой технологии типа OpenMP, TBB. Тогда при достаточно больших N получится, что первый поток работает над куском массива от 0 до 100000, второй - от 100000 до 200000, и т.д. На самом деле мы можем не получить никакого прироста в скорости, потому при таком подходе в кэш процессора будут поочерёдно загружаться/выгружаться данные, локальные для первого потока, потом для второго, потом снова для первого и т.д. Гораздо лучшим подходом будет переписать код следующим образом:</p>
<pre name="code" class="cpp">for(int t=0; t&lt;N/tileSize; ++t)
    for(int i=tileSize * t; i &lt; tileSize * (t+1); ++i)
        // Do somethin with A[i]</pre>
<p>Здесь также будем параллелить цикл по i. Визуально вместо одного простого цикла получили 2 вложенных, однако, очевидно, что они выполняют одинаковое число операций, с той лишь разницей, что теперь все данные, необходимые в цикле по i, находятся "недалеко" друг от друга. Понятие "недалеко" регулируется параметром tileSize. Теперь, удачно подобрав этот параметр, можно добиться того, что все элементы массива А, нужные в цикле по i, сразу попадут в кэш процессора и таким образом все потоки будут работать с одним и тем же куском памяти, который не нужно будет постоянно загружать или выгружать из памяти.</p>
<p>Понятно, что разбивать на тайлы можно циклы любой размерности, всё зависит лишь от конкретных условий задачи и системы, на которой это будет работать.</p>
<p>Более приближенные к практике примеры можно найти на вики <a href="http://en.wikipedia.org/wiki/Loop_tiling">http://en.wikipedia.org/wiki/Loop_tiling</a><br />
Вот и всё на сегодня, всем удачи в параллельных алгоритмах!</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/11/25/2005946/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Организация конкурсов - проблемы входных данных.</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/11/23/2005915/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/11/23/2005915/#comments</comments>
		<pubDate>Wed, 23 Nov 2011 16:21:13 +0000</pubDate>
		<dc:creator>kenny_horror</dc:creator>
				<category><![CDATA[Конкурсы и мероприятия]]></category>
		<category><![CDATA[Acceler8]]></category>
		<category><![CDATA[конкурс]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/11/23/2005915/</guid>
		<description><![CDATA[<p>Нередко для решения какой-то прикладной задачи может оказаться выгодным провести конкурс. Данный подход за счет привлечения достаточно большого числа участников позволяет получить неплохие решения для задачи. Особенно выгодным этот подход может оказаться для получения решения НП-полных или же плохо исследованных задач.</p>
<p>Однако, для определения лучшего решения необходимо их каким-то образом тестировать, и хорошо если имеется достаточно большой набор тестов с известными решениям, или же какой-то чекер, проверяющий качество решения.</p>]]></description>
			<content:encoded><![CDATA[<p>Нередко для решения какой-то прикладной задачи может оказаться выгодным провести конкурс. Данный подход за счет привлечения достаточно большого числа участников позволяет получить неплохие решения для задачи. Особенно выгодным этот подход может оказаться для получения решения НП-полных или же плохо исследованных задач.</p>
<p>Однако, для определения лучшего решения необходимо их каким-то образом тестировать, и хорошо если имеется достаточно большой набор тестов с известными решениям, или же какой-то чекер, проверяющий качество решения.</p>
<p>Но что делать, если не имеется необходимого набора данных и чекера или же задача является выдуманной специально для данного конкурса? В данном случае возникает необходимость как-то генерировать наборы исходных данных, на которых можно не сложно проверить удовлетворение решения нашим требованиям. И вот тут появляется краеугольный камень данного вида задач: что делать с генерацией тестов, чтобы все участники были в равном положении (т.е. тесты для всех должны быть одинаковыми)?</p>
<p>В данном направлении я вижу 3 подхода:</p>
<ol>
<li> Сгенерировать некоторый набор данных и отдать программам в качестве входных. Но тут возникает следующая проблема: если данные для обработки являются достаточно большими по объему, то время работы программы может упереться в считывание данных для обработки (не будем забывать, что операции с жестким диском являются достаточно медленными и парсинг данных тоже занимает время). И в таком случаем победителем может оказаться не тот, кто сделал лучшее решение задачи, а тот, кто смог лучше распарсить данные.</ br></li>
<li> Предоставить алгоритм некоторого псевдослучайного генератора входных данных, который на основе пары параметров генерирует все необходимые данные. При этом использовать особенности генерации запретить сложно, в силу того что полученный код может быть очень запутанным и проверить его достаточно затруднительно. Данный метод лишён недостатка предыдущего, однако, тоже не идеален. При выборе псевдослучайного алгоритма генерации у него могут оказаться особенности, о которых организаторы даже не подозревали. И в итоге можно получить от конкурса не совсем ожидаемый результат.</ br> В частности лучшие решения вообще не будут применимыми на исходной задаче. При этом изменение алгоритма генерации может достаточно сильно рассторить участников, которые использовали его недостатки. Например в конкурсе <a href="http://software.intel.com/ru-ru/articles/contest-acceler8-2011-main/">Acceler8 2011</a> такой неожиданностью оказались проблемы с генерацией матрицы линейным конгруэнтным методом. В результате чего при больших размерностях задачи, матрицы в большинстве случаев получалась вырожденной и решалась в разы проще. Кстати данная проблема, в той или иной мере, осталась и после изменения способа генерации.</ br></li>
<li> Попросить участников написать функцию/класс принимающую входные данные и возвращающая результат. Данный подход позволяет организаторам засекать время непосредственное время исполнения программы и использовать различные алгоритмы генерации данных, или же даже ввод из файла не влияя на решения участника. Но у него есть другие недостатки, а именно - если данные достаточно большие, то участник лишён возможности расположить их удобным для его алгоритма образом (т.к. 2 копии данных могут просто не влезть в память), а также данный метод не подходит для случаев когда данные просто не влазят в память и их необходимо обрабатывать по частям. В частности это может лишить участника некоторых полезных оптимизаций.</ br></li>
</ol>
<p>Теперь немного о возможных применениях данных методов и потенциальным решениях их проблем:</p>
<ol>
<li> Отлично подходит для сложных задач с малым входом.</li>
<li> Можно решить часть потенциальных проблем увеличив число алгоритмов генерации данных. Действительно подходит для задач с огромными данными.</li>
<li> Отлично подходит для большого класса потенциальных задач.</li>
</ol>
<p><strong>Удачного проведения конкурсов!</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/11/23/2005915/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Генератор псевдослучайных чисел (a * seed + b) % m: можно ли распараллелить?</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/11/22/a-seed-b-m/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/11/22/a-seed-b-m/#comments</comments>
		<pubDate>Tue, 22 Nov 2011 11:14:44 +0000</pubDate>
		<dc:creator>viktor.fti</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>
		<category><![CDATA[Конкурсы и мероприятия]]></category>
		<category><![CDATA[Параллельное программирование]]></category>
		<category><![CDATA[Acceler8]]></category>
		<category><![CDATA[алгоритмы]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/11/22/a-seed-b-m/</guid>
		<description><![CDATA[Данный очерк затрагивает проблему генерации последовательности псевдослучайных чисел вида <strong>x[n+1] = (a * x[n] + b) % m</strong>. "a % b" используется для обозначения остатка от целочисленного деления a на b. Этот способ генерирования предложен в <a href="http://software.intel.com/ru-ru/articles/contest-acceler8-2011-problem/">конкурсе параллельного программирования Acceler8 2011</a> для заполнения исходной матрицы. На первый взгляд, такая генерация не может быть распараллелена, что вызывает опасения при масштабировании решения на случай нескольких ядер. Не затрагивая вопрос о целесообразности распараллеливания генерации матрицы в контексте задачи конкурса, здесь будет описан способ ускорения и распараллеливания выполнения этой задачи.]]></description>
			<content:encoded><![CDATA[<p>Данный очерк затрагивает проблему генерации последовательности псевдослучайных чисел вида <strong>x[n+1] = (a * x[n] + b) % m</strong>. "a % b" используется для обозначения остатка от целочисленного деления a на b. Этот способ генерирования предложен в <a href="http://software.intel.com/ru-ru/articles/contest-acceler8-2011-problem/">конкурсе параллельного программирования Acceler8 2011</a> для заполнения исходной матрицы. На первый взгляд, такая генерация не может быть распараллелена, что вызывает опасения при масштабировании решения на случай нескольких ядер. Не затрагивая вопрос о целесообразности распараллеливания генерации матрицы в контексте задачи конкурса, здесь будет описан способ ускорения и распараллеливания выполнения этой задачи.</p>
<h2>Описание проблемы</h2>
<p>Итак, необходимо сгенерировать последовательность </p>
<blockquote><p>x[n+1] = (a * x[n] + b) % m, где x[0] = (a * seed0 + b) % m.</p></blockquote>
<p>Тут <strong>a, b, seed0</strong> и <strong>m </strong>- параметры генерации. Рассмотрим здесь лишь случай <strong>НОД(a-1, m) = 1</strong>. Случай, когда <strong>НОД(a-1, m)</strong> делит b, может быть сведён к предыдущему, а все остальные дают вырожденную длину цикла. Последний случай тоже интересен, но его анализ будет предложен к самостоятельному анализу читателя, дабы не загромождать пост. Более подробно о различных параметрах генерации и аспектах практической реализации можно прочесть в работе [1]. Далее обсуждаемый алгоритм генерации будем называть алгоритмом Лемера (согласно [1] впервые он был предложен Д. Х. Лемером).</p>
<p>Цель данного поста - показать возможность параллелизации генерации, а также указать практические аспекты реализации.</p>
<h2>Параллельная генерация</h2>
<p>Дальнейшие соображения верны в случае <strong>НОД(a-1, m) = 1</strong>. Более того, все выкладки приведены для простого m. В случае составного m, m-1 необходимо заменить значением функции Эйлера от m - это также сделано для простоты.</p>
<p><em><strong>Модификация задачи</strong></em><br />
Здесь будут использованы результаты из прикладной алгебры без формулировок и доказательств, однако источника [1] вполне достаточно, чтобы разобраться. Впрочем, автор надеется, что читатель сможет ограничиться нижеприведенными короткими рассуждениями.</p>
<p>Рассмотрим следующее элементарное алгебраическое преобразование: </p>
<blockquote><p>y(n) = (x(n) + c) % m</p></blockquote>
<p>При этом выберем такое c, чтобы выполнялось </p>
<blockquote><p>y[n+1] = (a * y[n]) % m</p></blockquote>
<p>Из алгоритма Лемера получим </p>
<blockquote><p>(x[n+1] + c) % m = (a * x[n] + a * c) % m</p></blockquote>
<p>откуда сразу получим выражение для с: </p>
<blockquote><p>c = (inv(a - 1) * b) % m</p></blockquote>
<p>Здесь<strong> inv(a - 1)</strong> - означает обратный элемент к <strong>a - 1</strong> по модулю <strong>m</strong>: <strong>((a - 1) * inv(a - 1)) % m = 1</strong>. Несложно показать, что </p>
<blockquote><p>inv(a - 1) = ((a - 1)^(m - 1)) % m</p></blockquote>
<p>Таким образом, c может быть найдено за<strong> log(m)</strong>, поскольку <strong>inv(a - 1)</strong> может быть найден за <strong>log(m)</strong>. Эти очевидные размышления приведены для того, чтобы показать, что подготовительные вычисления не сводят на нет предложенную вычислительную схему.</p>
<p>Наконец, окончательная формула для вычислений <strong>x[n]</strong> следующая: </p>
<blockquote><p>y[n+1] = (y[n] * a) % m = (y[1] * a^n) % m</p></blockquote>
<p>и </p>
<blockquote><p>x[n] = (y[n] + (-c)) % m = (y[n] + m - c) % m</p></blockquote>
<p>Тут <strong>(-c) = m - c</strong>. А <strong>c = ((a - 1)^(m - 1) * b) % m</strong>, как показано выше.</p>
<p><em><strong>Параллелизация</strong></em><br />
Пусть мы хотим распараллелить вычисления на <strong>k</strong> процессоров. Вычислим  <strong>m - c</strong>, а также <strong>y[1], y[2], ..., y[k]</strong> и <strong>ak = (a^k) % m</strong>.</p>
<p>Разделим всю задачу на k задач: i-тая задача заключается в вычислении <strong>x[i+k], x[i+2*k], ... </strong>. Для подсчёта каждого следующего элемента необходимо единственное умножение по модулю m: <strong>y[i+k] = (y[i] * ak) % m</strong>, и сложение <strong>x[i+k] = (y[i+k] + (m - c)) % m</strong>.</p>
<p><em><strong>Сложность</strong></em><br />
Сложность каждой задачи порядка <strong>m/k</strong>. Заметьте, что длина цикла не более <strong>m</strong>, поэтому достаточно сгенерировать <strong>m</strong> первых элементов, а затем скопировать повторения до конца массива. При этом, среднее значение элементов массива может быть посчитано для всего массива через сумму элементов цикла (и тех, разумеется, что, возможно, идут перед его первым вхождением в массиве), и отнято от элементов цикла перед копированием (см. детали генерации в <a href="http://software.intel.com/ru-ru/articles/contest-acceler8-2011-problem/">условиях конкурса</a>). Такой подход позволяет ускорить процесс генерации даже без распараллеливания.</p>
<h2>Практические аспекты</h2>
<p>В предложенной параллельной вычислительной схеме тонким местом является обращение процессов к общей памяти для записи.  Для решения этой проблемы можно писать каждым процессом в отдельную строку исходной матрицы. Такой порядок записи позволяет при использовании определённого количества задач не только быстро генерировать данные, но и расположить их в удобном для дальнейшей обработки порядке. Однако, эти размышления выходят за рамки обсуждения параллельного алгоритма генерации.</p>
<p>Целесообразность реализации описанной выше параллельной вычислительной схемы в контексте задачи конкурса оставляю на суд читателя.</p>
<h2>Используемая литература</h2>
<p>1. Кнут Д. Искусство программирования для ЭВМ: пер. с англ.– М.: Мир, 1977.– Т.2.</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/11/22/a-seed-b-m/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Иногда стоит остановиться</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/11/21/2005828/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/11/21/2005828/#comments</comments>
		<pubDate>Mon, 21 Nov 2011 12:41:40 +0000</pubDate>
		<dc:creator>Mikhail Goncharov</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>
		<category><![CDATA[Конкурсы и мероприятия]]></category>
		<category><![CDATA[Acceler8]]></category>
		<category><![CDATA[compiler]]></category>
		<category><![CDATA[профайлер]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/11/21/2005828/</guid>
		<description><![CDATA[Может ли "очевидная" оптимизация кода привести к не столь очевидному падению производительности? Как я убедился на собственном опыте - да! Разбираемся с примером.]]></description>
			<content:encoded><![CDATA[<p>Привет всем и прежде всего участникам конкурса <a href="http://software.intel.com/ru-ru/articles/contest-acceler8-2011-main/">Acceler8</a>!</p>
<p>Может ли "очевидная" оптимизация кода привести к падению производительности? Как я убедился на собственном опыте - да!</p>
<p>Вот фрагмент программы которая ищет максимальную подматрицу методом Кадане:</p>
<pre name="code" class="cpp">for (int x = 1; x &lt; w; x++) {
  int v = row_y2[x] - row_y[x];
  if (local_sum &gt; 0) local_sum += v;
  else local_sum = v;
  if (local_sum &lt;= best_sum) continue;
  best_sum = local_sum;
  best_x2 = x;
  best_y1 = y;
  best_y2 = y + span;
}</pre>
<p>"В коде обновления лучшей суммы явно есть лишние действия" подумал я. И переписал так:</p>
<pre name="code" class="cpp">int _x = -1;
for (int x = 1; x &lt; w; x++) {
  int v = row_y2[x] - row_y[x];
  if (local_sum &gt; 0) local_sum += v;
  else local_sum = v;
  if (local_sum &lt;= best_sum) continue;
  best_sum = local_sum;
  _x = x;
}

if (_x != -1) {
  best_x2 = _x;
  best_y1 = y;
  best_y2 = y + span;
}</pre>
<p>Однако скорость работы внезапно упала на 30%. В чем дело? Смотрим на профиль исходного кода:</p>
<p><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/11-18-2011-3-52-24-PM1.png" alt="" width="501" height="259" class="alignnone size-full wp-image-2005854" /></p>
<p>И на профиль полученного:</p>
<p><img src="http://software.intel.com/ru-ru/blogs/wordpress/wp-content/uploads/11-18-2011-3-54-19-PM.png" alt="" width="514" height="221" class="alignnone size-full wp-image-2005853" /></p>
<p>Вот оно в чем дело! Компилятор решает, что ветка кода обновления лучшей суммы стала насколько дешевой, что ее можно рассчитывать на каждой итерации цикла.</p>
<p>С этого момента я стал делать только одну оптимизацию за раз и постоянно проверять, что она реально приносит пользу.</p>
<p>Удачи!</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/11/21/2005828/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2-ой вебинар серии «Оптимизация графических приложений». Уже завтра!</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/10/20/2005464/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/10/20/2005464/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 13:22:50 +0000</pubDate>
		<dc:creator>Svetlana Emelyanova (Intel)</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>
		<category><![CDATA[ISN календарь]]></category>
		<category><![CDATA[Графика]]></category>
		<category><![CDATA[Конкурсы и мероприятия]]></category>
		<category><![CDATA[21.10.2011]]></category>
		<category><![CDATA[Intel VTune Amplifier XE]]></category>
		<category><![CDATA[вебинар]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/10/20/2005464/</guid>
		<description><![CDATA[Завтра, 21 октября, не пропустите <a href="http://intelcorp.regsvc.com/E6129">очередной вебинар</a>, на котором мы продолжим обсуждение вопросов производительности графических приложений и расскажем об Intel® VTune™ Amplifier XE 2011. Регистрируйтесь на сайте <a href="http://intelcorp.regsvc.com/E6129">intelcorp.regsvc.com/E6129</a>, чтобы изучить основные возможности и функциональность инструмента.]]></description>
			<content:encoded><![CDATA[<p>Завтра, 21 октября, не пропустите <a href="http://intelcorp.regsvc.com/E6129">второй вебинар</a> по оптимизации графических приложений.</p>
<p>На очередной виртуальной сессии Игорь Воробцов расскажет об Intel® VTune™ Amplifier XE 2011. Этот инструмент входит в состав пакета Intel® Parallel Studio XE 2011 и является новейшим профилировщиком производительности. Вы узнаете как о новых возможностях инструмента, так и о дополнительном функционале, специально предназначенном для разработчиков игр. Вы узнаете о такой интересной функциональной возможности, как анализ кадров для фильтрации результатов профилировки производительности с целью получения информации, на основании которой могут быть предприняты конкретные действия. Эта функция основана на потребностях видеоприложений (таких как игры) и должна соответствовать критериям задержки для каждого видеокадра. Она реализована с использованием общей методики и может быть полезна и в других приложениях, например, в симуляторах циклов.</p>
<p>Регистрируйтесь на сайте <a href="http://intelcorp.regsvc.com/E6129">intelcorp.regsvc.com/E6129</a>, чтобы изучить основные возможности и функциональность инструмента.</p>
<p>Если вы не смогли посетить 1-ый вебинар <a href="http://software.intel.com/ru-ru/articles/trainings-webinars/">серии</a>, видео-запись можно <a href="http://software.intel.com/ru-ru/videos/webinar-intel-tbb/">посмотреть и скачать</a> в нашем Take 5 видео-репозитории. </p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/10/20/2005464/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Серия вебинаров по оптимизации графических приложений</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/10/12/2005393/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/10/12/2005393/#comments</comments>
		<pubDate>Wed, 12 Oct 2011 09:01:21 +0000</pubDate>
		<dc:creator>Svetlana Emelyanova (Intel)</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>
		<category><![CDATA[ISN календарь]]></category>
		<category><![CDATA[Графика]]></category>
		<category><![CDATA[Конкурсы и мероприятия]]></category>
		<category><![CDATA[14.10.2011]]></category>
		<category><![CDATA[Intel VTune Amplifier XE]]></category>
		<category><![CDATA[Intel® TBB]]></category>
		<category><![CDATA[вебинар]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/10/12/2005393/</guid>
		<description><![CDATA[Летом в нашем сообществе прошел <a href="http://software.intel.com/ru-ru/blogs/2011/06/27/2004696/">вебинар</a>, посвященный графическим инструментам Intel. Уровень технической экспертизы участников мероприятия нас приятно порадовал. Было много хороших технических вопросов. В общем, как мы и ожидали, тема оптимизации игровой графики оказалась очень востребованной.

Мы решили продолжить работу в этом направлении. И вот с 14 октября на ISN стартует <a href="http://software.intel.com/ru-ru/articles/trainings-webinars/">серия из четырех вебинаров</a>, посвященных вопросам производительности графических приложений. ]]></description>
			<content:encoded><![CDATA[<p>Летом в нашем сообществе прошел <a href="http://software.intel.com/ru-ru/blogs/2011/06/27/2004696/">вебинар</a>, посвященный графическим инструментам Intel. Уровень технической экспертизы участников мероприятия нас приятно порадовал. Было много хороших технических вопросов. В общем, как мы и ожидали, тема оптимизации игровой графики оказалась очень востребованной.</p>
<p>Мы решили продолжить работу в этом направлении. И вот с 14 октября на ISN стартует <a href="http://software.intel.com/ru-ru/articles/trainings-webinars/">серия из четырех вебинаров</a>, посвященных вопросам производительности графических приложений. Презенторы – наши инженеры, которые ежегодно на Конференции Разработчиков Игр делятся экспертными знаниями и практическим опытом в сфере оптимизации приложений.</p>
<p>В эту пятницу Кирилл Рогожин <a href="http://intelcorp.regsvc.com/E6077">расскажет</a> о том, как эффективно использовать библиотеку Intel® Threading Building Blocks для распараллеливания кода. Эта библиотека призвана облегчить работу программистам и позволяет сфокусироваться на особенностях своего приложения, а не "изобретать велосипед". С TBB вы сможете сосредоточиться на основных функциях приложения, а не на организации и отладке многопоточной работы.</p>
<p>Через неделю, 21 октября, вас ждет <a href="http://intelcorp.regsvc.com/E6129">виртуальная сессия</a>, посвященная инструменту Intel® VTune™ Amplifier XE 2011, который является новейшим профилировщиком производительности. Игорь Воробцов представит новые возможности и функциональность VTune™ Amplifier, такие как временная линия потоков, статистическое дерево вызовов, мультиплексирование событий, а также ряд дополнительных функциональных возможностей, специально предназначенных для разработчиков игр, которым нужен более комплексный подход. Использование инструмента Intel® VTune™ Amplifier XE 2011 будет продемонстрировано на примере работы с игрой «Total War: Empire».</p>
<p>На двух последних вебинарах <a href="http://software.intel.com/ru-ru/blogs/author/victoria-zhislina/">Виктория Жислина</a> расскажет о том, как учитывать особенности CPU (устройство кэш-памяти, предсказание ветвлений, out-of-order исполнение, SIMD инструкции, включая Advanced Vector Extensions) для создания максимально оптимизированных приложений, а также о схеме построения игрового движка на основе задач (tasks).</p>
<p>Ознакомиться с расписанием и зарегистрироваться на вебинары можно на <a href="http://software.intel.com/ru-ru/articles/trainings-webinars/">этой</a> странице. Регистрация на последние два вебинара серии откроется в самое ближайшее время.</p>
<p>Регистрируйтесь, следите за обновлениями и приходите на наши виртуальные сесии. Увидимся в эту пятницу!</p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/10/12/2005393/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Немного об Intel Software Conference 2011</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/10/03/intel-software-conference-2011/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/10/03/intel-software-conference-2011/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 07:10:06 +0000</pubDate>
		<dc:creator>vilianov</dc:creator>
				<category><![CDATA[Intel Software Network]]></category>
		<category><![CDATA[ISN календарь]]></category>
		<category><![CDATA[Конкурсы и мероприятия]]></category>
		<category><![CDATA[Открытый код]]></category>
		<category><![CDATA[Параллельное программирование]]></category>
		<category><![CDATA[Партнерская программа Intel]]></category>
		<category><![CDATA[Разработка софта]]></category>
		<category><![CDATA[Сертификация и обучение]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/10/03/intel-software-conference-2011/</guid>
		<description><![CDATA[22 сентября в Москве и 27-го в Петербурге прошла конференция Intel Software 2011. Строго говоря, конференции было две, но, во-первых, программа их была очень похожей, а, во-вторых, живьем я побывал только на одной, московской, и, наверное, честнее будет рассказывать именно о ней.]]></description>
			<content:encoded><![CDATA[<p>22 сентября в Москве и 27-го в Петербурге прошла конференция Intel Software 2011. Строго говоря, конференции было две, но, во-первых, программа их была очень похожей, а, во-вторых, живьем я побывал только на одной, московской, и, наверное, честнее будет рассказывать именно о ней.</p>
<p>Мероприятие получилось одновременно и уникальным, и знаковым. Понимаю, насколько заезжены эти определения, но все же употреблю их, потому что точнее-то не скажешь. Еще ни разу на моей памяти Intel не собирала в России больших конференций для разработчиков, где бы говорилось только программных продуктах. О них обычно было вскользь, после «железа». Теперь же главной героиней стал набор программных средств Intel® Parallel Studio XE с пакетом обновления SP1, а о «железе» вспоминали только если приходилось к слову.</p>
<p>Открывавший конференцию Камиль Исаев, генеральный директор по исследованиям и разработкам Intel в России и СНГ, начал, конечно же, с более глобальных вещей, о чем можно было предположить еще по первому слайду презентации с названием доклада – «Вычислительный континуум и роль программного обеспечения». Камиль говорил о роли программного обеспечения в приближающуюся эру экзафлопных вычислений и о весьма ощутимом вкладе российского подразделения SSG в создание удобных и добротных инструментов для разработчиков. </p>
<p>Специально приглашенной звездой ISC2011 стал Роберт Гева, старший  ведущий инженер Intel SSG (вот такие бывают должности). Именно он был изображен на всех баннерах конференции, которая, к слову, рекламировалась, словно рок-концерт. Если, конечно, бывают рок-концерты для программистов. С Робертом у меня связана небольшая история. Во всех материалах конференции его представляли, как американца. Однако по его английскому было очень заметно, скажем так, иностранное происхождение, а мягкое «л» заставляло вспомнить о Ближнем Востоке. Я набрался наглости, подошел к Роберту поинтересовался – откуда он родом? Ну и потом мы отлично поговорили на иврите. Некоторые участники нашего сообщества потом подшучивали – мол, откуда еще быть человеку с фамилией Гева? Так-то оно так, коллеги, но Робертов я среди израильтян-сабр прежде как-то не встречал.</p>
<p>В своем докладе Роберт Гева говорил о средах разработки программного обеспечения, которые поддерживают инструменты Intel, и об их будущем. Затронул общие вопросы развития программного обеспечения, особенности инструментов для высокопроизводительных вычислений и интегрированных решений. Кроме того, Гева рассказал об операционных системах Linux, Windows, Mac OS X и MeeGo и представил прогнозы Intel по каждой из них.</p>
<p>О других докладах я писать, пожалуй, не рискну, боясь исказить пересказом серьезный смысл, и приглашаю <a href="http://intelsoftwareconference.ru/city_moscow">посетить страничку</a> с названием каждого из них и краткой аннотацией.  Знаете, что на меня произвело самое большое впечатление? Неослабевающее внимание участников. Часто ведь как бывает? Собрался народ с утра, получил раздаточные материалы и сувениры, кое-как досидел до обеда, перекусил, и ищи ветра в поле. А на ISC2011 в Москве большинство участников слушало до последнего, да и в Питере, говорят, была похожая картина.</p>
<p>Значит действительно интересные вопросы подняли, и рассказывали хорошо. Не комом первый блин. И если в будущем конференция распространится на Новосибирск или, скажем, Екатеринбург, я бы с удовольствием последовал за ней <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/10/03/intel-software-conference-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Между IFA и Media Markt</title>
		<link>http://software.intel.com/ru-ru/blogs/2011/09/06/ifa-media-markt/</link>
		<comments>http://software.intel.com/ru-ru/blogs/2011/09/06/ifa-media-markt/#comments</comments>
		<pubDate>Tue, 06 Sep 2011 13:10:04 +0000</pubDate>
		<dc:creator>vilianov</dc:creator>
				<category><![CDATA[Конкурсы и мероприятия]]></category>
		<category><![CDATA[Мобильность]]></category>
		<category><![CDATA[Acer Aspire S3]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[Creative Recon 3D]]></category>
		<category><![CDATA[Media Markt]]></category>
		<category><![CDATA[Saturn]]></category>

		<guid isPermaLink="false">http://software.intel.com/ru-ru/blogs/2011/09/06/ifa-media-markt/</guid>
		<description><![CDATA[Вылетая на выставку IFA в Берлин, я надеялся искупаться там если не в водопаде, то, как минимум, солидном фонтане новинок. Увы, увиденное в Германии тянет максимум на ручеек, потому что абсолютное большинство экспонатов уже давно обосновалось на магазинных полках, а немногочисленные анонсы на их фоне смотрелись довольно бледно. Поэтому, сделав два почетных круга по IFA, я отправился по магазинам. И вот там-то было действительно здорово!]]></description>
			<content:encoded><![CDATA[<p>Вылетая на выставку IFA в Берлин, я надеялся искупаться там если не в водопаде, то, как минимум, солидном фонтане новинок. Увы, увиденное в Германии тянет максимум на ручеек, потому что абсолютное большинство экспонатов уже давно обосновалось на магазинных полках, а немногочисленные анонсы на их фоне смотрелись довольно бледно. Поэтому, сделав два почетных круга по IFA, я отправился по магазинам. И вот там-то было действительно здорово!</p>
<p>Курсируя по трем десяткам павильонов IFA чувствуешь себя старателем, тщетно пытающимся отделить собственно цифровую технику от кухонных комбайнов, пылесосов, стиральных машин и электрических чайников. Нет, я понимаю, что домашние приборы тоже стали очень-очень умными, но все же, как ни крути, компьютеры их опережают в развитии побольше, чем иной человек обезьяну. Пожалуй, из тех устройств, что показывались впервые, здесь стоит упомянуть «ультрабук» Acer Aspire S3 и «четырехъядерную» звуковую карту Creative.</p>
<p><img src="http://helpix.ru/pic/vilianov/ifa/ifa.jpg" alt="Acer Aspire S3" /></p>
<p><img src="http://helpix.ru/pic/vilianov/ifa/ifa2.jpg" alt="Acer Aspire S3" /></p>
<p>Первый – это вариация на тему MacBook Air, только изначально заточенная под более солидные тиражи. Магний-алюминиевый сплав, интегрированный твердотельный накопитель небольшой емкости, улучшающий пользовательские впечатления от обычного HDD и, наконец, Core i3/i5/i7 второго поколения. Выглядит – ух! Единственное, что пока немного смущает – цена в России, которая поначалу составит не менее 30 000 рублей. Дороговато, чего уж говорить. Но, с другой стороны, нельзя не радоваться, что у Acer появляется действительно легкий и при этом прочный ноутбук, а то в декабре прошлого года мне пришлось изменить сложившимся издавна симпатиям и купить для командировочных нужд Lenovo ThinkPad. Впрочем, сказать о последнем хоть что-то недоброе у меня язык не повернется, машина - огонь.</p>
<p><img src="http://helpix.ru/pic/vilianov/ifa/ifa3.jpg" alt="Creative Recon 3D" /></p>
<p>Вторая новинка – Creative SoundBlaster Recon 3D. Пока ничего конкретного об этой звуковой карте сказать нельзя: в магазинах ее не продают, технические детали не обнародованы, а на выставке в нюансы звука особенно не погрузишься. Важно другое: впервые на моей памяти главным преимуществом и отличием звуковой карты маркетологи назвали… многоядерность! Так и пишут: первый в мире четырехъядерный звук, полученный на первом в мире четырехъядерном DSP. И хотя я уже давно пользуюсь интегрированными решениями, эту карту куплю непременно – уж очень интересно послушать и сравнить с предшественницей X-Fi. Да и цену на базовую модель выставили довольно гуманную, всего 90 евро. Помнится, раньше аппетиты Creative были посерьезнее.</p>
<p>Погуляв полдня по IFA, я садился в такси и отправлялся в крупнейшие берлинские магазины, торгующие техникой, а именно Saturn и Media Markt. Цены там, надо сказать, не самые гуманные – примерно, как у нас, а то и повыше. Но ассортимент и, главное, его расположение на прилавках, существенно отличаются. Так, у нас обычно планшеты кладут рядом с мобильными телефонами и в гомеопатических дозах. В берлинском Media Markt я насчитал аж 28 моделей, и лежали они по соседству с нетбуками. Длинный-длинный ряд, и как только планшеты кончаются – начинаются нетбуки. Различий в том, на какой платформе сделан планшет, не делается – сортировка исключительно по цене, от маленького к большому. «Атомные», понятное дело, начинаются с середины, но отличить их от собратьев на ARM почти невозможно, потому что модели на платформе Intel постоянно худеют, а конкурирующий лагерь того… поправляется. Так и лежат, все удивительно похожие друг на друга. Раньше можно было вслепую определить «атомный» планшет по температуре корпуса, но с тех пор, как ARMовцы перешли на два ядра с высокими частотами, это преимущество исчезло. Им бы, по идее, активное охлаждение ставить, да гордость не велит. </p>
<p>Очень забавно наблюдать за маркетинговыми опытами: например, когда планшеты одной и той же фирмы продаются под разными марками, одна из которых как бы престижнее другой. При этом все отличия исключительно на уровне логотипа и цвета корпуса. Так вот в России «престижной» выбрали одну марку, а в Германии – вторую. И в результате наша «престижная» в Германии стоит на 100 евро дешевле. </p>
<p>Еще в Германии очень модно «покупать немецкое», поэтому местные марки чувствуют себя довольно уверенно. Причем не только в IT – даже в продуктовых супермаркетах товар с лейблом вроде «настоящая немецкая картошечка» уходит особенно хорошо. Правда, незадолго до IFA разразился небольшой скандал: оказывается, львиная доля таких «немецких» продуктов родом из других стран и даже континентов, и в Германии их просто украсили правильной наклейкой. С компьютерами, телефонами и – особенно – жесткими дисками (их в Германии «производит» больше сотни компаний) ровно такая же история. Но «свое» берут отлично.</p>
<p>Вообще, по хорошему бы, провести IFA в начале октября, когда уже можно будет показывать все новинки на интеловском железе, представляемом на IDF в Сан-Франциско (13-15 сентября). Но, наверное, производители электрочайников и кофеварок не одобрили бы.</p>
<p>Интересно, что в дни IDF будет проходить похожее мероприятие злейших друзей Intel, на котором, скорее всего, объявят об ответе на новые «Атомы». Вот только я не слышал, чтобы те кого-то о чем-то спрашивали <img src='http://software.intel.com/ru-ru/blogs/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://software.intel.com/ru-ru/blogs/2011/09/06/ifa-media-markt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

