// DPC++ material used in the code sample: // • A one dimensional array of data. // • A device queue, buffer, accessor, and kernel. #include #include #include #include using namespace sycl; cpu_selector d_selector; queue q(d_selector); unsigned long long DeltaFPS, CountFPS; typedef std::array IntArray; constexpr size_t array_size = 100 * 100 * 100; IntArray a, sum_parallel; void VectorAdd(queue &q, const IntArray &a_array, IntArray &sum_parallel) { range<1> num_items{a_array.size()}; buffer a_buf(a_array); buffer sum_buf(sum_parallel.data(), num_items); q.submit([&](handler &h) { accessor a(a_buf, h, read_only); accessor sum(sum_buf, h, write_only); h.parallel_for(num_items, [=](auto i) { sum[i] = a[i] + 10; }); }); } void ShowFPS() { CountFPS++; if (GetTickCount64() > DeltaFPS + 1000) { printf("FPS = %lld\n", CountFPS); CountFPS = 0; DeltaFPS = GetTickCount64(); } } int main() { std::cout << "Running on device: " << q.get_device().get_info() << "\n"; while (true) { VectorAdd(q, a, sum_parallel); ShowFPS(); } return 0; }