在 C++ AMP 数组中复制数据多少次?
How many times is data copied in a C++ AMP array?
我的加速器的default_cpu_access_type
属性是access_type_read_write
。假设我运行这个:
std::vector<int> v{ 1, 2, 3, 4 };
Concurrency::array<int, 1> a { 4, v.begin(), v.end() };
parallel_for_each(a.extent, [=, &a](Concurrency::index<1> i) restrict(amp) { ++a[i]; });
for (int i { 0 }; i < 4; ++i) std::cout << a[i] << " ";
我的四个整数被复制了多少次?构建Concurrency::array
时,它们是否复制到 RAM 中?它们是在parallel_for_each
循环开始时再次复制的,还是我的显卡以某种方式使用了 RAM 中的数据?如果我使用array_view
而不是array
怎么办 - 这会保存副本吗?
据我所知,当您声明数组并初始化它时,从 CPU 到 GPU 有一个传输。
然后你可以在 GPU 端(parallel_for_each循环内(自由使用它。 数组不包含数据的自动同步机制,所以我不确定当您在 for 循环中选择值时会发生什么。
如果选择array_view则数据的同步是隐式的。一个副本将在初始化时发生,另一个副本用于在选择值时将数据从 GPU 带回 CPU。
我向您推荐这篇博文 http://www.danielmoth.com/Blog/array-And-Arrayview-From-Amph.aspx 甚至是完整的放大器系列。
相关文章:
- 在 C++ AMP 数组中复制数据多少次?
- C++ 检查结果数组中有多少次数字
- 我如何使它,无论用户用空白字符串按 Enter 多少次,它总是打印"开始"字符串?
- 如何计算整数链中使用了多少次数字?
- 如果我使用同一个密钥推送用户数据两次,会发生什么
- 提升 Asio SSL 无法第二次接收数据(第一次确定)
- 如果函数按值传递并按值返回,将调用复制构造函数多少次
- 复制构造函数被调用了多少次?
- 此函数调用了多少次
- 我需要声明多少次 std::ios::sync_with_stdio(假);在程序中
- 尝试创建一个读取.txt文件,显示它,计数唯一单词的程序,并在使用了多少次的情况下显示独特的单词.C
- 算法 - 集合中出现了多少次
- GCC通过输入源代码进行了多少次通过
- 根据输入文本对单词进行排序,具体取决于重复多少次
- 假设没有编译器优化,则将创建多少次此对象
- 如何计算在Sentinel Loop C 中输入多少次输入
- MPI_REDUCE调用的减少操作是多少次
- 数组在此代码中复制了多少次
- 我怎么能知道13号星期五在一年中出现了多少次
- Q_IMPORT_PLUGIN,我可以使用多少次