CPU是否可以在启动未完成的GPU源代码(cuda内核)后进行上下文切换?
Is it possible for CPU to do context-switch after initiating GPU source code(cuda kernel) that is not finished?
基本上,在CPU和GPU通信中,如果进程运行在CPU上启动一个cuda内核,进程仍然可以发布它的代码,如果它不依赖于cuda内核的结果。
但是,运行 在 CPU 上的进程是否可以在启动未完成的 cuda 内核后进行上下文切换?
如果可能的话,内部会发生什么?
CPU 线程可以随时进行上下文切换,包括在 cudaDeviceSynchronize()
调用期间等待(异步)内核启动的结果。
您可以通过使用 cudaDeviceScheduleYield
或 cudaDeviceScheduleBlockingSync
标志调用 cudaSetDeviceFlags()
来进一步促进同步期间的上下文切换,这将比 cudaDeviceScheduleSpin
或 cudaDeviceScheduleSpin
更快地产生处理器cudaDeviceScheduleAuto
设置。
基本上,在CPU和GPU通信中,如果进程运行在CPU上启动一个cuda内核,进程仍然可以发布它的代码,如果它不依赖于cuda内核的结果。
但是,运行 在 CPU 上的进程是否可以在启动未完成的 cuda 内核后进行上下文切换?
如果可能的话,内部会发生什么?
CPU 线程可以随时进行上下文切换,包括在 cudaDeviceSynchronize()
调用期间等待(异步)内核启动的结果。
您可以通过使用 cudaDeviceScheduleYield
或 cudaDeviceScheduleBlockingSync
标志调用 cudaSetDeviceFlags()
来进一步促进同步期间的上下文切换,这将比 cudaDeviceScheduleSpin
或 cudaDeviceScheduleSpin
更快地产生处理器cudaDeviceScheduleAuto
设置。