<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://51.250.0.107/w/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0_CUDA%2F%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B2%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8</id>
	<title>Автоматизация ввода-вывода CUDA/Пример внедрения автоматизации - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://51.250.0.107/w/index.php?action=history&amp;feed=atom&amp;title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0_CUDA%2F%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B2%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8"/>
	<link rel="alternate" type="text/html" href="http://51.250.0.107/w/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0_CUDA/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B2%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;action=history"/>
	<updated>2026-05-01T14:10:50Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.37.1</generator>
	<entry>
		<id>http://51.250.0.107/w/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0_CUDA/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B2%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=8087&amp;oldid=prev</id>
		<title>Alinap95 в 08:24, 23 июня 2019</title>
		<link rel="alternate" type="text/html" href="http://51.250.0.107/w/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0_CUDA/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B2%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=8087&amp;oldid=prev"/>
		<updated>2019-06-23T08:24:31Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;http://51.250.0.107/w/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0_CUDA/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B2%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;amp;diff=8087&amp;amp;oldid=8080&quot;&gt;Внесённые изменения&lt;/a&gt;</summary>
		<author><name>Alinap95</name></author>
	</entry>
	<entry>
		<id>http://51.250.0.107/w/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0_CUDA/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B2%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=8080&amp;oldid=prev</id>
		<title>Alinap95: Новая страница: «&lt;source lang=&quot;cpp&quot;&gt; #include &lt;vector&gt; #include &lt;cuda/vector.cuh&gt; #include &lt;cuda/automation&gt;  class SomeClass;  #ifdef __CUDACC__  class SomeClassCuda;  template &lt;…»</title>
		<link rel="alternate" type="text/html" href="http://51.250.0.107/w/index.php?title=%D0%90%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F_%D0%B2%D0%B2%D0%BE%D0%B4%D0%B0-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4%D0%B0_CUDA/%D0%9F%D1%80%D0%B8%D0%BC%D0%B5%D1%80_%D0%B2%D0%BD%D0%B5%D0%B4%D1%80%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B0%D0%B2%D1%82%D0%BE%D0%BC%D0%B0%D1%82%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8&amp;diff=8080&amp;oldid=prev"/>
		<updated>2019-06-23T05:53:29Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt; #include &amp;lt;vector&amp;gt; #include &amp;lt;cuda/vector.cuh&amp;gt; #include &amp;lt;cuda/automation&amp;gt;  class SomeClass;  #ifdef __CUDACC__  class SomeClassCuda;  template &amp;lt;…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;source lang=&amp;quot;cpp&amp;quot;&amp;gt;&lt;br /&gt;
#include &amp;lt;vector&amp;gt;&lt;br /&gt;
#include &amp;lt;cuda/vector.cuh&amp;gt;&lt;br /&gt;
#include &amp;lt;cuda/automation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
class SomeClass;&lt;br /&gt;
&lt;br /&gt;
#ifdef __CUDACC__&lt;br /&gt;
&lt;br /&gt;
class SomeClassCuda;&lt;br /&gt;
&lt;br /&gt;
template &amp;lt;class T&amp;gt;&lt;br /&gt;
__device__ auto read_as(cuda_input_buffer_stream_d&amp;amp; is)-&amp;gt;std::enable_if_t&amp;lt;std::is_same&amp;lt;SomeClassCuda, T&amp;gt;::value, T&amp;gt;;&lt;br /&gt;
template &amp;lt;class T&amp;gt;&lt;br /&gt;
__device__ auto read_as(cuda_input_buffer_stream_d&amp;amp; is)-&amp;gt;std::enable_if_t&amp;lt;std::is_same&amp;lt;ComplexObject, T&amp;gt;::value, T&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
#endif  //__CUDACC__&lt;br /&gt;
&lt;br /&gt;
struct ComplexObject&lt;br /&gt;
{&lt;br /&gt;
	int first;&lt;br /&gt;
	int second;&lt;br /&gt;
	#ifdef __CUDACC__&lt;br /&gt;
	template &amp;lt;class T&amp;gt;&lt;br /&gt;
	friend __device__ auto read_as(cuda_input_buffer_stream_d&amp;amp; is)-&amp;gt;std::enable_if_t&amp;lt;std::is_same&amp;lt;ComplexObject, T&amp;gt;::value, T&amp;gt;;&lt;br /&gt;
	&lt;br /&gt;
	friend cuda_input_buffer_stream&amp;amp; operator&amp;lt;&amp;lt;(cuda_input_buffer_stream&amp;amp; is, const ComplexObject&amp;amp; obj);&lt;br /&gt;
	#endif  //__CUDACC__&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#ifdef __CUDACC__&lt;br /&gt;
&lt;br /&gt;
__host__ cuda_input_buffer_stream&amp;amp; operator&amp;lt;&amp;lt;(cuda_input_buffer_stream&amp;amp; is, const ComplexObject&amp;amp; obj)&lt;br /&gt;
{&lt;br /&gt;
	is &amp;lt;&amp;lt; first;&lt;br /&gt;
	is &amp;lt;&amp;lt; second;&lt;br /&gt;
	&lt;br /&gt;
	return is;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
template &amp;lt;class T&amp;gt;&lt;br /&gt;
__device__ auto read_as(cuda_input_buffer_stream_d&amp;amp; is) -&amp;gt; std::enable_if_t&amp;lt;std::is_same&amp;lt;ComplexObject, T&amp;gt;::value, T&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	ComplexObject result;&lt;br /&gt;
&lt;br /&gt;
	result.first = read_as&amp;lt;int&amp;gt;(is);&lt;br /&gt;
	result.first = read_as&amp;lt;int&amp;gt;(is);&lt;br /&gt;
	&lt;br /&gt;
	return result;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
class SomeClassCuda&lt;br /&gt;
{&lt;br /&gt;
	cu::vector&amp;lt;ComplexObject&amp;gt; container;&lt;br /&gt;
public:&lt;br /&gt;
&lt;br /&gt;
	typedef std::true_type custom_cuda_device_read;&lt;br /&gt;
	&lt;br /&gt;
	template &amp;lt;class T&amp;gt;&lt;br /&gt;
	friend __device__ auto read_as(cuda_input_buffer_stream_d&amp;amp; is) -&amp;gt; std::enable_if_t&amp;lt;std::is_same&amp;lt;SomeClassCuda, T&amp;gt;::value, T&amp;gt;;&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
template &amp;lt;class T&amp;gt;&lt;br /&gt;
__device__ auto read_as(cuda_input_buffer_stream_d&amp;amp; is) -&amp;gt; std::enable_if_t&amp;lt;std::is_same&amp;lt;SomeClassCuda, T&amp;gt;::value, T&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
	SomeClassCuda result;&lt;br /&gt;
&lt;br /&gt;
	std::size_t containerSize = read_as&amp;lt;std::size_t&amp;gt;(is);&lt;br /&gt;
	for (std::size_t i = 0; i &amp;lt; containerSize; ++i)&lt;br /&gt;
		result.container.emplace_back(read_as&amp;lt;ComplexObject&amp;gt;(is));&lt;br /&gt;
	&lt;br /&gt;
	return result;&lt;br /&gt;
}&lt;br /&gt;
#endif //__CUDACC__&lt;br /&gt;
&lt;br /&gt;
class SomeClass&lt;br /&gt;
{&lt;br /&gt;
	std::vector&amp;lt;ComplexObject&amp;gt; container;&lt;br /&gt;
#ifdef __CUDACC__&lt;br /&gt;
	friend cuda_input_buffer_stream&amp;amp; operator&amp;lt;&amp;lt;(cuda_input_buffer_stream&amp;amp; is, const SomeClass&amp;amp; obj);&lt;br /&gt;
#endif //__CUDACC__&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
#ifdef __CUDACC__&lt;br /&gt;
__host__ cuda_input_buffer_stream&amp;amp; operator&amp;lt;&amp;lt;(cuda_input_buffer_stream&amp;amp; is, const SomeClass&amp;amp; obj)&lt;br /&gt;
{&lt;br /&gt;
	is &amp;lt;&amp;lt; obj.container.size();&lt;br /&gt;
	for (std::size_t i = 0; i &amp;lt; obj.container.size(); ++i)&lt;br /&gt;
			is &amp;lt;&amp;lt; obj.container[i];&lt;br /&gt;
	return is;&lt;br /&gt;
}&lt;br /&gt;
#endif //__CUDACC__&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>Alinap95</name></author>
	</entry>
</feed>