我需要知道内核函数在什么时间点被添加到 GPU 队列中。我对 CUDA 程序进行了 ltrace,得到了几个调用,比如 1.cudaconfigurecall 2.cudamemcpy,我也得到了 cudaLaunch() 我的问题是在调用 cudaLaunch 时或之前或之后的某个时间是否添加了特定的内核函数。哪个函数负责将内核函数添加到队列中。?
我需要知道内核函数在什么时间点被添加到 GPU 队列中。我对 CUDA 程序进行了 ltrace,得到了几个调用,比如 1.cudaconfigurecall 2.cudamemcpy,我也得到了 cudaLaunch() 我的问题是在调用 cudaLaunch 时或之前或之后的某个时间是否添加了特定的内核函数。哪个函数负责将内核函数添加到队列中。?
该函数在cudaLaunch
被调用时被添加。先前的 API 调用,例如cudaSetupArgument
and cudaConfigureCall
、reserve 和 intialise 为即将启动的内核调用一个堆栈帧,但堆栈帧不会与给定的内核函数关联,并且在cudaLaunch
调用之前不会被推送到设备。所有这些函数在 CUDA 工具包中都有自己的文档,您可以在此处阅读有关它们的信息。