考虑以下代码,它从大小为size的double数组创建一个缓冲器内存对象:
coef_mem = clCreateBuffer(context, CL_MEM_READ_WRITE | CL_MEM_COPY_HOST_PTR, (sizeof(double) * size), arr, &err);
假设它作为内核的参数传递。根据内核运行的设备,有两种可能性:
- 设备与主机设备相同
- 设备不同于主机设备
以下是我对这两种情况的问题:
- 在哪个步骤中将内存从主机传输到设备?
- 如何测量将内存从主机传输到设备所需的时间?
- 如何测量将内存从设备的全局内存传输到私有内存所需的时间?
- 如果设备与主机设备相同,内存是否仍然被传输?
- 从主机到设备的传输时间是否大于从设备的全局内存到私有内存的传输时间?