<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3846953</guid>
        <pubDate>Thu, 29 Apr 2021 09:43:01 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3846953</link>
        <description><![CDATA[tuchin: Спасибо, Павел 77. Попробую.]]></description>
        <author>tuchin</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3846924</guid>
        <pubDate>Wed, 28 Apr 2021 13:30:50 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3846924</link>
        <description><![CDATA[Павел 77: Добрый день&#33;<br>Дело в типе double. Прежде чем использовать этот тип, надо проверять, поддерживает ли его Ваша видеокарта. Это делается с использованием свойства supports_limited_double_precision у объекта accelerator – что-нить типа:   <br>accelerator               defaultAccelerator;<br>if (defaultAccelerator.supports_limited_double_precision)<br>{<br>  …<br>}<br>Если не поддерживает, используйте float.]]></description>
        <author>Павел 77</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3713185</guid>
        <pubDate>Fri, 24 Mar 2017 18:47:53 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3713185</link>
        <description><![CDATA[tuchin: Спасибо за код с потоками, он поможет при изучении потоков. А с этим примером даже не знаю, где можно проконсультироваться. Специализированных форумов я не нашел в интернете]]></description>
        <author>tuchin</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3713174</guid>
        <pubDate>Fri, 24 Mar 2017 17:26:42 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3713174</link>
        <description><![CDATA[Олег М: Тут уже мне сложно сказать, я с этой штукой тоже работать не умею. <br>
На самом деле, эта задача легко решается с помощью обычных потоков. Примерно так<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;thread&#62;</div><div class="code_line">#include &#60;chrono&#62;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">static const size_t _sz = 1024 * 1024;</div><div class="code_line">static double a[_sz];</div><div class="code_line">static double b[_sz];</div><div class="code_line">static double c[_sz] = {0};</div><div class="code_line">&nbsp;</div><div class="code_line">void CalcSum(size_t n, const double *a, const double *b, double *res)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;//printf(&quot;%s, %lu\n&quot;, __FUNCTION__, n);</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (size_t i = 0; i &#60; 1000; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for (size_t i = 0; i &#60; n; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;res[i] = sqrt(pow(a[i], 2) + pow(b[i], 2));</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void TestCalc()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (size_t i = 0; i &#60; _sz; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;a[i] = i;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;b[i] = i;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto tm = std::chrono::steady_clock::now();</div><div class="code_line">&nbsp;&nbsp; &nbsp;CalcSum(_sz, a, b, c);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto tm2 = std::chrono::steady_clock::now();</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;Time sync: &quot; &#60;&#60; std::chrono::duration_cast&#60;std::chrono::milliseconds&#62;(tm2 - tm).count() &#60;&#60; std::endl;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;static const auto _procs = std::thread::hardware_concurrency();</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;Processors: &quot; &#60;&#60; _procs &#60;&#60; std::endl;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;static const size_t _block = _sz / _procs;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::list&#60;std::thread&#62; threads;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;tm = std::chrono::steady_clock::now();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;size_t offset = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (size_t i = 0; i &#60; _procs; ++i, offset += _block)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;threads.emplace_back(&amp;CalcSum, _block, a + offset, b + offset, c + offset);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (offset &#60; _sz)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;CalcSum(_sz - offset, a + offset, b + offset, c + offset);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (auto &amp;thread: threads)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;thread.join();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;tm2 = std::chrono::steady_clock::now();</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;Time async: &quot; &#60;&#60; std::chrono::duration_cast&#60;std::chrono::milliseconds&#62;(tm2 - tm).count() &#60;&#60; std::endl;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3713170</guid>
        <pubDate>Fri, 24 Mar 2017 17:16:26 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3713170</link>
        <description><![CDATA[tuchin: Я забыл убрать const в array_view для c(n, pC). После исправления в программе<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;string&#62;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;Windows.h&#62;</div><div class="code_line">#include &#60;memory.h&#62;</div><div class="code_line">#include &#60;stdio.h&#62;</div><div class="code_line">#include &#60;time.h&#62;</div><div class="code_line">#include &#60;amp.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">using namespace std;</div><div class="code_line">using namespace concurrency;</div><div class="code_line">&nbsp;</div><div class="code_line">void AddArrays(int n, const double* const pA, const double* const pB, double* const pC) </div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;clock_t start, finish, duration;</div><div class="code_line">&nbsp;&nbsp;start = clock();</div><div class="code_line">&nbsp;&nbsp;for(int i = 0; i &#60; n; ++i)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;pC[i] = pA[i] + pB[i];</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;finish = clock();</div><div class="code_line">&nbsp;&nbsp;duration = finish - start;</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; duration &#60;&#60; &quot; - время расчета без OpenMP.&quot; &#60;&#60; &quot; &nbsp;Результат: &quot; &#60;&#60; pC[2] &#60;&#60; endl;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void AddArraysAmp(int n, const double* pA, const double* &nbsp;pB, double* pC)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;clock_t start, finish, duration;</div><div class="code_line">&nbsp;&nbsp;start = clock();</div><div class="code_line">&nbsp;&nbsp;array_view&#60;const double, 1&#62; a(n, pA);</div><div class="code_line">&nbsp;&nbsp;array_view&#60;const double, 1&#62; b(n, pB);</div><div class="code_line">&nbsp;&nbsp;array_view&#60;double, 1&#62; c(n, pC);</div><div class="code_line">&nbsp;&nbsp;parallel_for_each(c.extent, [=](index&#60;1&#62; idx) restrict(amp)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;c[idx] = a[idx] + b[idx];</div><div class="code_line">&nbsp;&nbsp;});</div><div class="code_line">&nbsp;&nbsp;finish = clock();</div><div class="code_line">&nbsp;&nbsp;duration = finish - start;</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; duration &#60;&#60; &quot; pC[i] = pA[i] + pB[i]&quot; &#60;&#60; &quot; Время расчета C++ AMP&quot; &#60;&#60; endl;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;setlocale(LC_ALL, &quot;&quot;);</div><div class="code_line">&nbsp;&nbsp;int n = 16000;</div><div class="code_line">&nbsp;&nbsp;double* pA = (double*) malloc(sizeof(double)*n);</div><div class="code_line">&nbsp;&nbsp;double* pB = (double*) malloc(sizeof(double)*n);</div><div class="code_line">&nbsp;&nbsp;double* pC = (double*) malloc(sizeof(double)*n);</div><div class="code_line">&nbsp;&nbsp;for(int i = 0; i &#60; n; ++i)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;pA[i] = (double) i;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pB[i] = (double) i;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pC[i] = (double) 0;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;AddArrays(n, pA, pB, pC); </div><div class="code_line">&nbsp;&nbsp;AddArraysAmp(n, pA, pB, pC);</div><div class="code_line">&nbsp;&nbsp;free(pA);</div><div class="code_line">&nbsp;&nbsp;free(pB);</div><div class="code_line">&nbsp;&nbsp;free(pC);</div><div class="code_line">&nbsp;&nbsp;system(&quot;\npause&quot;);</div><div class="code_line">}</div></ol></div></div></div></div>В результате получаю<br>
Возникло необработанное исключение по адресу 0x751524F2 в CpuGpuVS2015.exe: исключение Microsoft C++: Concurrency::runtime_exception по адресу памяти 0x004FE81C.]]></description>
        <author>tuchin</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712968</guid>
        <pubDate>Fri, 24 Mar 2017 05:11:01 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712968</link>
        <description><![CDATA[Олег М: Покажи код]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712966</guid>
        <pubDate>Fri, 24 Mar 2017 05:05:13 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712966</link>
        <description><![CDATA[tuchin: Ошибка (активно)		выражение должно быть допустимым для изменения левосторонним значением	CpuGpuVS2015	e:&#092;MyProgramming&#092;CpuGpuVS2015&#092;CpuGpu.cpp	40	<br>
Ошибка	C3892	Concurrency::array_view&lt;const double,1&gt;::operator []: невозможно присваивать значения переменной, которая объявлена как константа	CpuGpuVS2015	e:&#092;myprogramming&#092;cpugpuvs2015&#092;cpugpu.cpp	40	<br>
Другие ошибки исчезли]]></description>
        <author>tuchin</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712944</guid>
        <pubDate>Thu, 23 Mar 2017 19:44:57 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712944</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=410543&view=findpost&p=3712942'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tuchin &#064; <time class="tag-quote__quoted-time" datetime="2017-03-23T19:24:57+00:00">23.03.17, 19:24</time></span><div class='quote '>array_view&lt;double, 1&gt; a(n, pA)</div></div><br>
А попробуй сделать array_view&lt;const double, 1&gt;, для a и b]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712942</guid>
        <pubDate>Thu, 23 Mar 2017 19:24:57 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712942</link>
        <description><![CDATA[tuchin: <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void AddArraysAmp(int n, const double* pA, const double* &nbsp;pB, double* pC)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;clock_t start, finish, duration;</div><div class="code_line">&nbsp;&nbsp;start = clock();</div><div class="code_line">&nbsp;&nbsp;array_view&#60;double, 1&#62; a(n, pA);</div><div class="code_line">&nbsp;&nbsp;array_view&#60;double, 1&#62; b(n, pB);</div><div class="code_line">&nbsp;&nbsp;array_view&#60;double, 1&#62; c(n, pC);</div><div class="code_line">&nbsp;&nbsp;//array_view&#60;int, 1&#62; a(n, pA);</div><div class="code_line">&nbsp;&nbsp;//array_view&#60;int, 1&#62; b(n, pB);</div><div class="code_line">&nbsp;&nbsp;//array_view&#60;int, 1&#62; c(n, pC);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;parallel_for_each(c.extent, [=](index&#60;1&#62; idx) restrict(amp)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;c[idx] = a[idx] + b[idx];</div><div class="code_line">&nbsp;&nbsp;});</div><div class="code_line">&nbsp;&nbsp;finish = clock();</div><div class="code_line">&nbsp;&nbsp;duration = finish - start;</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; duration &#60;&#60; &quot; pC[i] = pA[i] + pB[i]&quot; &#60;&#60; &quot; Время расчета C++ AMP&quot; &#60;&#60; endl;</div><div class="code_line">}</div></ol></div></div></div></div>не помогло]]></description>
        <author>tuchin</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712941</guid>
        <pubDate>Thu, 23 Mar 2017 19:01:35 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712941</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=410543&view=findpost&p=3712934'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tuchin &#064; <time class="tag-quote__quoted-time" datetime="2017-03-23T18:12:38+00:00">23.03.17, 18:12</time></span><div class='quote '>//array_view&lt;double, 1&gt; a(n, pA);<br>
  //array_view&lt;double, 1&gt; b(n, pB);<br>
  //array_view&lt;double, 1&gt; c(n, pC);</div></div><br>
Раскоментируй это,  а то,  что ниже убери]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712934</guid>
        <pubDate>Thu, 23 Mar 2017 18:12:38 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712934</link>
        <description><![CDATA[tuchin: При int и double в функции<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void AddArraysAmp(int n, const double* pA, const double* &nbsp;pB, double* pC)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;clock_t start, finish, duration;</div><div class="code_line">&nbsp;&nbsp;start = clock();</div><div class="code_line">&nbsp;&nbsp;//array_view&#60;double, 1&#62; a(n, pA);</div><div class="code_line">&nbsp;&nbsp;//array_view&#60;double, 1&#62; b(n, pB);</div><div class="code_line">&nbsp;&nbsp;//array_view&#60;double, 1&#62; c(n, pC);</div><div class="code_line">&nbsp;&nbsp;array_view&#60;int, 1&#62; a(n, pA);</div><div class="code_line">&nbsp;&nbsp;array_view&#60;int, 1&#62; b(n, pB);</div><div class="code_line">&nbsp;&nbsp;array_view&#60;int, 1&#62; c(n, pC);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;parallel_for_each(c.extent, [=](index&#60;1&#62; idx) restrict(amp)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;c[idx] = a[idx] + b[idx];</div><div class="code_line">&nbsp;&nbsp;});</div><div class="code_line">&nbsp;&nbsp;finish = clock();</div><div class="code_line">&nbsp;&nbsp;duration = finish - start;</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; duration &#60;&#60; &quot; pC[i] = pA[i] + pB[i]&quot; &#60;&#60; &quot; Время расчета C++ AMP&quot; &#60;&#60; endl;</div><div class="code_line">}</div></ol></div></div></div></div>получил те же результаты]]></description>
        <author>tuchin</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712925</guid>
        <pubDate>Thu, 23 Mar 2017 17:30:40 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712925</link>
        <description><![CDATA[Олег М: Тебе нужен, насколько я понимаю, чтобы вызывался вот этот конструктор array_view (что значит restrict, я не знаю)<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">array_view( &nbsp;</div><div class="code_line">&nbsp;&nbsp; int _E0, &nbsp;</div><div class="code_line">&nbsp;&nbsp; const _Value_type * _Src &nbsp;</div><div class="code_line">)restrict(amp,cpu);</div></ol></div></div></div></div><br>
<br>
Т.е. const double *. А у тебя - const double* const.<br>
Поэтому компилятор выбирает другой.<br>
Сделай параметры const double *pA, ........]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712923</guid>
        <pubDate>Thu, 23 Mar 2017 17:25:32 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712923</link>
        <description><![CDATA[tuchin: Пробовал и так:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">void AddArraysAmp(int n, const double* const pA, const double* const pB, double* const pC)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;clock_t start, finish, duration;</div><div class="code_line">&nbsp;&nbsp;start = clock();</div><div class="code_line">&nbsp;&nbsp;array_view&#60;double, 1&#62; a(n, pA);</div><div class="code_line">&nbsp;&nbsp;array_view&#60;double, 1&#62; b(n, pB);</div><div class="code_line">&nbsp;&nbsp;array_view&#60;double, 1&#62; c(n, pC);</div><div class="code_line">&nbsp;&nbsp;parallel_for_each(c.extent, [=](index&#60;1&#62; idx) restrict(amp)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;c[idx] = a[idx] + b[idx];</div><div class="code_line">&nbsp;&nbsp;});</div><div class="code_line">&nbsp;&nbsp;finish = clock();</div><div class="code_line">&nbsp;&nbsp;duration = finish - start;</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; duration &#60;&#60; &quot; pC[i] = pA[i] + pB[i]&quot; &#60;&#60; &quot; Время расчета C++ AMP&quot; &#60;&#60; endl;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;setlocale(LC_ALL, &quot;&quot;);</div><div class="code_line">&nbsp;&nbsp;int n = 3;</div><div class="code_line">&nbsp;&nbsp;double* pA = (double*) malloc(sizeof(double)*n);</div><div class="code_line">&nbsp;&nbsp;double* pB = (double*) malloc(sizeof(double)*n);</div><div class="code_line">&nbsp;&nbsp;double* pC = (double*) malloc(sizeof(double)*n);</div><div class="code_line">&nbsp;&nbsp;for(int i = 0; i &#60; n; ++i)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;pA[i] = (double) i;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pB[i] = (double) i;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pC[i] = (double) 0;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;AddArrays(n, pA, pB, pC); </div><div class="code_line">&nbsp;&nbsp;free(pA);</div><div class="code_line">&nbsp;&nbsp;free(pB);</div><div class="code_line">&nbsp;&nbsp;free(pC);</div><div class="code_line">&nbsp;&nbsp;system(&quot;\npause&quot;);</div><div class="code_line">}</div></ol></div></div></div></div>Даже без включения AddArraysAmp в Main возникают те же ошибки. А функция без AMP void AddArrays(int n, const double* const pA, const double* const pB, double* const pC) работает нормально. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2017-03-23T17:29:32+00:00">23.03.17, 17:29</time></span></span><br>
Кроме того, проверил результаты в Windows 10 и VS2015, результаты те же. При этом определить, что в коде примера не так у меня не получается, ошибку дает только amp.h. А разобраться в коде заголовочного файла Microsoft для меня непосильная задача.]]></description>
        <author>tuchin</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712918</guid>
        <pubDate>Thu, 23 Mar 2017 16:45:35 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712918</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=410543&view=findpost&p=3712915'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tuchin &#064; <time class="tag-quote__quoted-time" datetime="2017-03-23T16:30:07+00:00">23.03.17, 16:30</time></span><div class='quote '>Не помогло</div></div><br>
А как у тебя вообще передаются указатели на double в функцию, которая требует указатели на int?]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712915</guid>
        <pubDate>Thu, 23 Mar 2017 16:30:07 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712915</link>
        <description><![CDATA[tuchin: Не помогло]]></description>
        <author>tuchin</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712747</guid>
        <pubDate>Thu, 23 Mar 2017 05:11:15 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712747</link>
        <description><![CDATA[Олег М: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=410543&view=findpost&p=3712746'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>tuchin &#064; <time class="tag-quote__quoted-time" datetime="2017-03-23T04:56:17+00:00">23.03.17, 04:56</time></span><div class='quote '>Попробовал исправить, убрал const, не удается скомпилировать код. Буду разбираться дальше.</div></div><br>
<br>
Сделай вот так<br>
void AddArraysAmp(int n, const int *pA, const int *pB, const int *pC)]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712746</guid>
        <pubDate>Thu, 23 Mar 2017 04:56:17 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712746</link>
        <description><![CDATA[tuchin: Попробовал исправить, убрал const, не удается скомпилировать код. Буду разбираться дальше.]]></description>
        <author>tuchin</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712671</guid>
        <pubDate>Wed, 22 Mar 2017 16:38:51 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712671</link>
        <description><![CDATA[Олег М: Скорее всего, где-то требуется std::vector, вместо указателя <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2017-03-22T16:39:08+00:00">22.03.17, 16:39</time></span></span><br>
Либо какой-то из массивов apm <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2017-03-22T16:44:15+00:00">22.03.17, 16:44</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=410543&view=findpost&p=3712671'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Олег М &#064; <time class="tag-quote__quoted-time" datetime="2017-03-22T16:38:51+00:00">22.03.17, 16:38</time></span><div class='quote '> array_view&lt;int, 1&gt; a(n, pA);</div></div><br>
Здесь требуется обычный указатель, а ты передаёшь константный, она не может найти конструктор]]></description>
        <author>Олег М</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712670</guid>
        <pubDate>Wed, 22 Mar 2017 16:22:58 +0000</pubDate>
        <title>C++ AMP - не комплируется пример из книги</title>
        <link>https://forum.sources.ru/index.php?showtopic=410543&amp;view=findpost&amp;p=3712670</link>
        <description><![CDATA[tuchin: Теперь пытаюсь поработать с C++ AMP. Windows 7, VS 2012. В программе из книги C++ AMP<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;string&#62;</div><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;Windows.h&#62;</div><div class="code_line">#include &#60;memory.h&#62;</div><div class="code_line">#include &#60;stdio.h&#62;</div><div class="code_line">#include &#60;time.h&#62;</div><div class="code_line">#include &#60;amp.h&#62;</div><div class="code_line">#include &#60;ppl.h&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">using namespace std;</div><div class="code_line">using namespace concurrency;</div><div class="code_line">&nbsp;</div><div class="code_line">void AddArrays(int n, const double* const pA, const double* const pB, double* const pC) </div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;clock_t start, finish, duration;</div><div class="code_line">&nbsp;&nbsp;start = clock();</div><div class="code_line">&nbsp;&nbsp;for(int i = 0; i &#60; n; ++i)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;pC[i] = pA[i] + pB[i];</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;finish = clock();</div><div class="code_line">&nbsp;&nbsp;duration = finish - start;</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; duration &#60;&#60; &quot; pC[i] = pA[i] + pB[i]&quot; &#60;&#60; &quot; Время расчета без OpenMP&quot; &#60;&#60; endl;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void AddArraysAmp(int n, const int* const pA, const int* const pB, int* const pC) </div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;clock_t start, finish, duration;</div><div class="code_line">&nbsp;&nbsp;start = clock();</div><div class="code_line">&nbsp;&nbsp;array_view&#60;int, 1&#62; a(n, pA);</div><div class="code_line">&nbsp;&nbsp;array_view&#60;int, 1&#62; b(n, pB);</div><div class="code_line">&nbsp;&nbsp;array_view&#60;int, 1&#62; c(n, pC);</div><div class="code_line">&nbsp;&nbsp;parallel_for_each(c.extent, [=](index&#60;1&#62; idx) restrict(amp)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;c[idx] = a[idx] + b[idx];</div><div class="code_line">&nbsp;&nbsp;});</div><div class="code_line">&nbsp;&nbsp;finish = clock();</div><div class="code_line">&nbsp;&nbsp;duration = finish - start;</div><div class="code_line">&nbsp;&nbsp;cout &#60;&#60; duration &#60;&#60; &quot; pC[i] = pA[i] + pB[i]&quot; &#60;&#60; &quot; Время расчета C++ AMP&quot; &#60;&#60; endl;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int main()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp;setlocale(LC_ALL, &quot;&quot;);</div><div class="code_line">&nbsp;&nbsp;int n = 15000;</div><div class="code_line">&nbsp;&nbsp;double* pA = (double*) malloc(sizeof(double)*n);</div><div class="code_line">&nbsp;&nbsp;double* pB = (double*) malloc(sizeof(double)*n);</div><div class="code_line">&nbsp;&nbsp;double* pC = (double*) malloc(sizeof(double)*n);</div><div class="code_line">&nbsp;&nbsp;for(int i = 0; i &#60; n; ++i)</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;pA[i] = (double) i;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pB[i] = (double) i;</div><div class="code_line">&nbsp;&nbsp; &nbsp;pC[i] = (double) 0;</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">&nbsp;&nbsp;AddArrays(n, pA, pB, pC); </div><div class="code_line">&nbsp;&nbsp;AddArraysAmp(n, pA, pB, pC);</div><div class="code_line">&nbsp;&nbsp;free(pA);</div><div class="code_line">&nbsp;&nbsp;free(pB);</div><div class="code_line">&nbsp;&nbsp;free(pC);</div><div class="code_line">&nbsp;&nbsp;system(&quot;\npause&quot;);</div><div class="code_line">}</div></ol></div></div></div></div> получаю ошибки:<br>
error C2228: выражение слева от &quot;.data&quot; должно представлять класс, структуру или объединение	c:&#092;program files&#092;microsoft visual studio 11.0&#092;vc&#092;include&#092;amp.h	2250	1	CpuGpu<br>
error C2228: выражение слева от &quot;.data&quot; должно представлять класс, структуру или объединение	c:&#092;program files&#092;microsoft visual studio 11.0&#092;vc&#092;include&#092;amp.h	2253	1	CpuGpu<br>
error C2338: container element type and array view element type must match	c:&#092;program files&#092;microsoft visual studio 11.0&#092;vc&#092;include&#092;amp.h	2253	1	CpuGpu<br>
error C2228: выражение слева от &quot;.size&quot; должно представлять класс, структуру или объединение	c:&#092;program files&#092;microsoft visual studio 11.0&#092;vc&#092;include&#092;amp.h	2255	1	CpuGpu<br>
Почему возникает эта ошибка в заголовочном файле Microsoft? Проект прикрепил<br>
<span class="b-attach" data-size="2299" data-hits="395" data-attach-id="52920" data-attach-post-id="3712670">
			<span class="b-attach__title"></span><a class='b-attach-link' href='https://forum.sources.ru/index.php?act=Attach&amp;type=post&amp;id=3712670&amp;attach_id=52920' title='Скачать файл' target='_blank'>CpuGpuAmp.zip</a> (, : 395)
		</span>]]></description>
        <author>tuchin</author>
        <category>C/C++: Системное программирование и WinAPI</category>
      </item>
	
      </channel>
      </rss>
	