A nyelv újításait a könnyű tanulhatóság miatt nem új kulcsszavakba, hanem új osztályokba igyekeztek bevezetni.
array
array<T, N>: T típusú N hosszú tömb létrehozása, amely másolásra kerül az adatpárhuzamos eszköz memóriájába, majd onnan vissza
std::vector<int> v(5);
std::iota(v.begin(), v.end(), 0);
array<int,1> a(5,v.begin(),v.end());
parallel_for_each(a.extent, [&](index<1> idx)
restrict(amp)
{
a[idx] = a[idx] * 2;
});
copy(a,v);
array_view
- array_view<T, N>: T típusú N hosszú tömb nézet létrehozása egy már meglevő konténerből, amely tartalma az adatpárhuzamos eszköz memóriájára másolódik, majd onnan vissza
- konstans típusparaméter esetén az array_view csak olvasható, ezért tartalma visszafelé nem kerül másolásra
- a discard_data() function hívással jelölhetjük a compilernek, hogy az adatokat csak visszafelé kell másolni
std::vector<int> v(5);
std::iota(v.begin(), v.end(), 0);
array_view<int,1> av(5,v);
parallel_for_each(av.extent, [=](index<1> idx)
restrict(amp)
{
av[idx] = av[idx] * 2;
});
av.synchronize();
extend
Egy array/array_view struktúráját (dimenzióját) adhatjuk meg a segítségével.
index
Egy array/array_view egy elemének index-e. Dimenziója megegyezik az array/array_view dimenziójával.