<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF160%3A%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0_OpenCL</id>
		<title>LXF160:Что за штука OpenCL - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF160%3A%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0_OpenCL"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF160:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0_OpenCL&amp;action=history"/>
		<updated>2026-05-13T08:18:15Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF160:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0_OpenCL&amp;diff=18262&amp;oldid=prev</id>
		<title>Olkol в 12:35, 29 сентября 2018</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF160:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0_OpenCL&amp;diff=18262&amp;oldid=prev"/>
				<updated>2018-09-29T12:35:37Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class='diff diff-contentalign-left'&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
				&lt;col class='diff-marker' /&gt;
				&lt;col class='diff-content' /&gt;
			&lt;tr valign='top'&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;← Предыдущая&lt;/td&gt;
			&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Версия 12:35, 29 сентября 2018&lt;/td&gt;
			&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 35:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 35:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Так, с пер­вой ча­стью бо­лее-менее по­нят­но, те­перь про GPU, по­жа­луй­ста.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Так, с пер­вой ча­стью бо­лее-менее по­нят­но, те­перь про GPU, по­жа­луй­ста.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;О&lt;/del&gt;&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;GPU [Graphic Processor Units] – это спе­циа­ли­зи­ро­ван­ные чи­пы, вы­пол­няю­щие всю тя­же­лую ра­бо­ту по об­ра­бот­ке гра­фи­ки, от циф­ро­во­го ТВ до 3D-анима­ции и су­пер-реа­ли­стич­ных ви­део­игр. Обыч­ные про­цес­со­ры, на ко­то­рых вы­пол­ня­ют­ся опе­ра­ци­он­ные сис­те­мы, не оп­ти­ми­зи­ро­ва­ны для по­доб­ных су­ще­ст­вен­но па­рал­лель­ных за­дач. А GPU, на­обо­рот, пред­на­зна­че­ны имен­но для это­го.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;GPU [Graphic Processor Units] – это спе­циа­ли­зи­ро­ван­ные чи­пы, вы­пол­няю­щие всю тя­же­лую ра­бо­ту по об­ра­бот­ке гра­фи­ки, от циф­ро­во­го ТВ до 3D-анима­ции и су­пер-реа­ли­стич­ных ви­део­игр. Обыч­ные про­цес­со­ры, на ко­то­рых вы­пол­ня­ют­ся опе­ра­ци­он­ные сис­те­мы, не оп­ти­ми­зи­ро­ва­ны для по­доб­ных су­ще­ст­вен­но па­рал­лель­ных за­дач. А GPU, на­обо­рот, пред­на­зна­че­ны имен­но для это­го.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Olkol</name></author>	</entry>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF160:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0_OpenCL&amp;diff=18261&amp;oldid=prev</id>
		<title>Olkol: Новая страница: «Категория:Постоянные рубрики   Категория:Что за штука?   ==Что за штука… OpenCL==  ''Мар­ко…»</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF160:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0_OpenCL&amp;diff=18261&amp;oldid=prev"/>
				<updated>2018-09-29T12:34:08Z</updated>
		
		<summary type="html">&lt;p&gt;Новая страница: «&lt;a href=&quot;/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%9F%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D1%8B%D0%B5_%D1%80%D1%83%D0%B1%D1%80%D0%B8%D0%BA%D0%B8&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Категория:Постоянные рубрики (страница не существует)&quot;&gt;Категория:Постоянные рубрики&lt;/a&gt;   &lt;a href=&quot;/wiki/index.php?title=%D0%9A%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D1%8F:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0%3F&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Категория:Что за штука? (страница не существует)&quot;&gt;Категория:Что за штука?&lt;/a&gt;   ==Что за штука… OpenCL==  &amp;#039;&amp;#039;Мар­ко…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Категория:Постоянные рубрики]]  &lt;br /&gt;
[[Категория:Что за штука?]] &lt;br /&gt;
&lt;br /&gt;
==Что за штука… OpenCL==&lt;br /&gt;
&lt;br /&gt;
''Мар­ко Фио­рет­ти пред­став­ля­ет от­кры­тый стан­дарт для процессоров по обработке графики, с ко­то­рым мно­гие при­ло­жения су­ще­ст­вен­но уско­рят­ся.''''Курсивное начертание''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Начнем с основного вопроса: &lt;br /&gt;
так что же та­кое OpenCL?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
До­слов­но: Open Computing Language (www.khronos.org/opencl) – от­кры­тый стан­дарт для па­рал­лель­но­го про­грам­ми­ро­вания на GPU.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А нель­зя ли для на­ча­ла по­про­ще? Что та­кое па­рал­лель­ное про­грам­ми­ро­вание?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
На са­мом де­ле, это про­ще, чем ка­жет­ся (ес­ли, конеч­но, не вам этим занимать­ся). Па­рал­лель­ное про­грам­ми­ро­вание – та­кой спо­соб на­пи­сания про­грамм, при ко­то­ром мно­го схо­жих опе­ра­ций вы­пол­ня­ют­ся па­рал­лель­но (ес­ли это под­дер­жи­ва­ет­ся обо­ру­до­ванием) – то есть од­но­вре­мен­но, а не по­сле­до­ва­тель­но, когда од­на опе­ра­ция долж­на за­кон­чить­ся, что­бы на­ча­лась дру­гая.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
То есть па­рал­лель­ное про­грам­ми­ро­вание за­став­ля­ет ПО ра­бо­тать бы­ст­рее. И на­сколь­ко?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Мно­гие слож­ные про­грам­мы бу­дут ра­бо­тать бы­ст­рее. На­сколь­ко? Од­но­знач­но не ска­жешь. Час­ти обыч­ной про­грам­мы, ис­поль­зую­щей для об­ра­бот­ки дан­ных вло­жен­ные цик­лы, мо­гут уско­рить­ся вдвое. Про­грам­мы, со­стоя­щие пре­иму­ще­ст­вен­но из ма­те­ма­ти­че­­ских вы­чис­лений – зна­чи­тель­но бы­ст­рее.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так, с пер­вой ча­стью бо­лее-менее по­нят­но, те­перь про GPU, по­жа­луй­ста.&lt;br /&gt;
&lt;br /&gt;
О&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
GPU [Graphic Processor Units] – это спе­циа­ли­зи­ро­ван­ные чи­пы, вы­пол­няю­щие всю тя­же­лую ра­бо­ту по об­ра­бот­ке гра­фи­ки, от циф­ро­во­го ТВ до 3D-анима­ции и су­пер-реа­ли­стич­ных ви­део­игр. Обыч­ные про­цес­со­ры, на ко­то­рых вы­пол­ня­ют­ся опе­ра­ци­он­ные сис­те­мы, не оп­ти­ми­зи­ро­ва­ны для по­доб­ных су­ще­ст­вен­но па­рал­лель­ных за­дач. А GPU, на­обо­рот, пред­на­зна­че­ны имен­но для это­го.&lt;br /&gt;
&lt;br /&gt;
В ка­ком-то смыс­ле, OpenCL – это от­кры­тый ана­лог Compute Unified Device Architecture (Cuda) от Nvidia, ко­то­рая то­же ори­ен­ти­ро­ва­на на бо­лее эф­фек­тив­ное ис­полнение ко­да с ис­поль­зо­ванием гра­фи­че­­ских про­цес­со­ров. Уди­ви­тель­но ум­ная шту­ко­ви­на.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Так или ина­че, OpenCL был соз­дан для уско­рения об­ра­бот­ки 3D-гра­фи­ки на на­столь­ных ком­пь­ю­те­рах, так?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Во­все нет! Де­ло в кра­со­те OpenCL и его зна­чи­мо­сти (на­ря­ду с от­кры­то­стью, конеч­но). Су­дя по по­следним тен­ден­ци­ям, на­ли­чие та­ко­го стан­дар­та про­сто необ­хо­ди­мо.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
О ка­ких, собственно, тен­ден­ци­ях &lt;br /&gt;
идет речь?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Их несколь­ко. Пер­вая – рост про­из­во­ди­тель­но­сти GPU для обыч­ных на­столь­ных ком­пь­ю­те­ров. Они ста­ли на­столь­ко мощ­ны­ми, что ис­поль­зо­вать их толь­ко для 3D-игр и ви­део про­сто стыд­но.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Да, в этом смыс­ле у па­рал­лель­но­го про­грам­ми­ро­вания дей­ст­ви­тель­но непло­хие пер­спек­ти­вы. А что еще?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По­все­ме­ст­ность GPU. Се­го­дня спе­ци­аль­ные чи­пы для па­рал­лель­но­го про­грам­ми­ро­вания вши­ты в ка­ж­дый смарт­фон или план­шет.&lt;br /&gt;
&lt;br /&gt;
Но, как пра­ви­ло, они не за­дей­ст­во­ва­ны для ра­бо­ты с тек­ста­ми, элек­трон­ны­ми таб­ли­ца­ми или се­те­вым обо­зре­ва­те­лем. Уп­ро­стив для слож­но­го ин­те­рак­тив­но­го ПО доступ к этой вы­чис­ли­тель­ной мощ­но­сти в ре­аль­ном вре­мени, мы по про­из­во­ди­тель­но­сти при­бли­зим мо­биль­ные уст­рой­ст­ва к пол­но­цен­ным на­столь­ным сис­те­мам.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
И мно­го ли нын­че ПО, ра­бо­таю­ще­го та­ким об­ра­зом?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По­ка что уско­рение GPU ис­поль­зу­ет­ся лишь в неко­то­рых про­грам­мах. Да­же Photoshop, Camtasia и Matlab толь­ко на­чи­на­ют внедрять эти функ­ции.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Но ес­ли па­рал­лель­ное про­грам­ми­ро­вание так за­ме­ча­тель­но, по­че­му же его так ма­ло где ис­поль­зу­ют?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
От­час­ти по­то­му, что са­ма идея при­менения уско­рения GPU для не-гра­фи­че­­ско­­го ПО вы­шла из на­уч­ной ком­пь­ю­тер­ной сре­ды сравнитель­но недав­но. Дру­гая при­чи­на в том, что про­цес­со­ры GPU на пор­та­тив­ных уст­рой­ст­вах то­же не так дав­но ста­ли на­столь­ко мощ­ны­ми и рас­про­стра­нен­ны­ми, что­бы оп­рав­дать вве­дение спе­ци­аль­но­го стан­дар­та. То же ка­са­ет­ся об­лач­ных вы­чис­лений.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Об­лач­ных вы­чис­лений? &lt;br /&gt;
А  вы что имеете в виду?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Об­лач­ные вы­чис­ления – это сред­ст­ва уда­лен­но­го досту­па к ва­шим фай­лам и про­грам­мам, с лю­бо­го ком­пь­ю­те­ра, план­ше­та или смарт­фо­на. Вы же слы­ша­ли об этом, прав­да?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Еще бы. И уже поль­зу­юсь этим с Gmail, Google Docs и Dropbox. И что?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Па­рал­лель­ное про­грам­ми­ро­вание на осно­ве GPU до­бав­ля­ет ко все­му это­му ап­па­рат­ное уско­рение. Бла­го­да­ря вир­туа­ли­за­ции, уда­лен­ный сер­вер, обо­ру­до­ван­ный са­мы­ми со­вре­мен­ны­ми GPU, спо­со­бен, на­при­мер, об­ра­ба­ты­вать ви­део­по­то­ки па­рал­лель­но для несколь­ких поль­зо­ва­те­лей.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Здо­ро­во! Те­перь вы ме­ня убе­ди­ли, что от­кры­тый стан­дарт для кросс-плат­фор­мен­но­го па­рал­лель­но­го про­грам­ми­ро­вания на осно­ве GPU необ­хо­дим. На­сколь­ко с этим справ­ля­ет­ся OpenCL?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenCL дол­жен су­ще­ст­вен­но уп­ро­стить на­пи­сание эф­фек­тив­но­го, пор­ти­руе­мо­го ко­да, ра­бо­таю­ще­го на мно­гих ком­би­на­ци­ях мно­го­ядерных CPU, GPU и дру­гих па­рал­лель­ных про­цес­со­ров.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А по­че­му вы употребили выражение &lt;br /&gt;
«на ком­би­на­ци­ях»?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
По­то­му что имен­но это от OpenCL и тре­бу­ет­ся. Обыч­ные про­грам­мы не мо­гут вы­пол­нять мно­го па­рал­лель­ных за­дач про­сто по­то­му, что ра­бо­та­ют на тра­ди­ци­он­ных (то есть по­сле­до­ва­тель­ных) CPU. А за­да­ча OpenCL в том, что­бы мак­си­маль­но пе­ренести эту на­груз­ку на GPU, что­бы все вы­пол­ня­лось па­рал­лель­но.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ес­ли я пра­виль­но понимаю, это зна­чит, что про­грам­мы, ис­поль­зую­щие OpenCL, то­же обя­за­ны иметь сме­шан­ную струк­ту­ру. Так?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Имен­но! OpenCL вы­зы­ва­ет цен­траль­ный про­цес­сор, где за­пуска­ет­ся яд­ро обыч­но­го при­ло­жения. GPU на­зы­ва­ют­ся вы­чис­ли­тель­ны­ми уст­рой­ст­ва­ми. Ка­ж­дое та­кое уст­рой­ст­во вклю­ча­ет од­ну или бо­лее вы­чис­ли­тель­ных единиц, ко­то­рые, в свою оче­редь, со­дер­жат один или бо­лее эле­мен­тов об­ра­бот­ки.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ка­кая роль в этой ситуации отведена &lt;br /&gt;
хосту?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ис­пол­няе­мый им код кон­тро­ли­ру­ет взаи­мо­дей­ст­вие с поль­зо­ва­те­лем, управ­ление па­мя­тью и все за­да­чи OpenCL, вклю­чая пе­ре­да­чу дан­ных на GPU и его за­пуск. Когда все уст­рой­ст­ва за­кан­чи­ва­ют ра­бо­ту, хост по­лу­ча­ет дан­ные-ре­зуль­та­ты и пе­ре­хо­дит к сле­дую­ще­му ша­гу. OpenCL пре­достав­ля­ет стан­дарт­ные API для рас­по­зна­вания уст­ройств и об­ра­бот­ки дан­ных и команд.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А ка­ко­ва роль про­грам­ми­ста в данном про­цес­се?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Раз­ра­бот­чи­ки долж­ны яв­но ука­зать в ко­де, ка­кая его часть ис­пол­ня­ет­ся на глав­ном про­цес­со­ре, а ка­кая – на уст­рой­ст­вах, поль­зу­ясь спе­ци­фи­ка­ци­ей OpenGL.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
То есть па­рал­лель­ный код ис­пол­ня­ет­ся толь­ко на уст­рой­ст­вах?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Да, это так. Иногда го­во­рят, что вол­шеб­ст­во OpenCL вер­шит­ся на уст­рой­ст­вах. Имен­но там ис­пол­ня­ет­ся код на язы­ке OpenCL – это сво­его ро­да спе­ци­аль­ная вер­сия С.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Но ведь API — об­щий про­грамм­ный ин­тер­фейс. Как же хост со­об­ща­ет уст­рой­ст­вам, что имен­но им де­лать?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для это­го есть осо­бые функ­ции, на­зы­вае­мые яд­ра­ми вы­чис­лений. Это сво­его ро­да точ­ки вхо­да для уст­ройств OpenCL, ко­то­рые их ак­ти­ви­ру­ют и со­об­ща­ют им за­дания.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А что начинает происходить &lt;br /&gt;
по­том?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Вы­де­лен­ный ядром фраг­мент ко­да, ко­то­рый на язы­ке OpenCL на­зы­ва­ет­ся ра­бо­чим эле­мен­том, ис­пол­ня­ет­ся па­рал­лель­но мно­го раз, с но­вы­ми дан­ны­ми. Та­кие эле­мен­ты обыч­но ор­ганизу­ют­ся в груп­пы и диа­па­зо­ны, оп­ре­де­ляю­щие по­ря­док за­пуска.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Что требуется для совместимости &lt;br /&gt;
с OpenCL?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В основ­ной спе­ци­фи­ка­ции пе­ре­чис­ле­ны все тре­бо­вания, ко­то­рым долж­на со­от­вет­ст­во­вать пол­но­цен­ная про­грамм­ная/ап­па­рат­ная сре­да для со­вмес­ти­мо­сти с OpenCL. В офи­ци­аль­ном про­фи­ле кон­фи­гу­ра­ции для пор­та­тив­ных и встро­ен­ных уст­ройств ука­за­ны необ­хо­ди­мые усло­вия для этих двух слу­ча­ев. Ну и, конеч­но, стан­дарт так­же оп­ре­де­ля­ет язык, упо­мя­ну­тый на­ми как «спе­ци­аль­ная вер­сия С». На­конец, есть рас­ши­рения, то есть необя­за­тель­ные функ­ции. Они вклю­че­ны в стан­дарт по­то­му, что ка­жут­ся доста­точ­но ин­те­рес­ны­ми, что­бы в бу­ду­щем так­же вой­ти в основ­ную спе­ци­фи­ка­цию OpenCL.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ка­ков в настоящий момент ста­тус &lt;br /&gt;
OpenCL?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
OpenCL 1.2, имею­щий об­рат­ную со­вмес­ти­мость с вер­сия­ми 1.0 и 1.1, но под­дер­жи­ваю­щий боль­шее чис­ло уст­ройств и ядер, вы­шел в но­яб­ре 2011. В него бы­ли до­бав­ле­ны сред­ст­ва заи­мо­дей­ст­во­вия с OpenGL и OpenGL ES, улуч­ше­ны ха­рак­те­ри­сти­ки про­из­во­ди­тель­но­сти и под­держ­ка DirectX 9 и 11.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;В&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
А есть ли хо­тя бы один при­мер реа­ли­за­ции OpenCL в сво­бод­ном ПО?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:black&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;font-size: 200%&amp;quot;&amp;gt;О&amp;lt;/span&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Есть. При­смот­ри­тесь к Portable OpenCL (http://pocl.sourceforge.net) – это про­ект, це­лью ко­то­ро­го яв­ля­ет­ся «улуч­шить пе­ре­но­си­мость про­грамм на OpenCL», что зна­чит обес­пе­чить бо­лее-менее ста­биль­ную про­из­во­ди­тель­ность для лю­бых хостов и уст­ройств, миними­зи­руя необ­хо­ди­мость руч­ной оп­ти­ми­за­ции. До­полнитель­ную ин­фор­ма­цию вы мо­же­те по­лу­чить на http://opencl.codeplex.com/wikipage?title=OpenCL %20Tuto­rials %20- %201. |&lt;/div&gt;</summary>
		<author><name>Olkol</name></author>	</entry>

	</feed>