Свойство 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
? Копируются ли они снова, когда начинается цикл parallel_for_each
, или моя видеокарта каким-то образом использует данные в оперативной памяти? Что если я использую array_view
вместо array
- сохранит ли это копию?