我有两个要在GPU上并行执行的OpenCL应用程序。假设第一个应用程序的名称为A1.c,其内核名为a1.cl。内核a1.cl需要600个CUDA内核才能执行。假设第二个应用程序是A2.c,其内核名为a2.cl。我想在GPU的其余400个CUDA内核上执行程序A2.c的内核a2.cl。与通过增加GPU的设备利用率来逐个执行两个程序相比,目的是减少两个同时执行的程序的执行时间。但是,当我同时启动A1.c和A2.c时,它们各自的内核a1.cl和a2.cl不会并行执行。 我的问题是如何在GPU上并行执行两个不同程序的内核。 注意:我正在使用Nvidia GTX 760 GPU。
答案 0 :(得分:0)
假设您能够修改程序,则可以使用子设备。这使您可以将一个OpenCL设备拆分为多个不相交的计算单元,理论上可以真正并行执行两个或多个内核。但是,我相信这将需要在同一主机程序中运行两个内核,这对您来说可能不可行。
对设备进行分区的确切方式取决于您的需求,因此我建议reading through the reference manual关于设备分区。可能还有其他瓶颈阻止并行执行,具体取决于您的系统配置方式和程序如何使用OpenCL。