|
|
- // Copyright (C) 2020 Intel Corporation
-
- // SPDX-License-Identifier: MIT
-
- #include <CL/sycl.hpp>
- #include <iostream>
- using namespace sycl;
-
- constexpr int N = 10;
-
- int main() {
- queue my_gpu_queue( gpu_selector{} );
-
- std::cout << "Selected GPU device: " <<
- my_gpu_queue.get_device().get_info<info::device::name>() << "\n";
-
- int *host_mem = malloc_host<int>(N, my_gpu_queue);
- int *device_mem = malloc_device<int>(N, my_gpu_queue);
-
- // Init CPU data
- for(int i = 0; i < N; i++) {
- host_mem[i] = i;
- }
-
- // Copy from host(CPU) to device(GPU)
- my_gpu_queue.memcpy(device_mem, host_mem, N * sizeof(int)).wait();
-
- // do some works on GPU
- // ......
- //
-
- // Copy back from GPU to CPU
- my_gpu_queue.memcpy(host_mem, device_mem, N * sizeof(int)).wait();
-
- printf("\nData Result\n");
- for(int i = 0; i < N; i++) {
- printf("%d, ", host_mem[i]);
- }
- printf("\nTask Done!\n");
-
- return 0;
- }
-
|