我们说我的GPU总共有8个内核。我想要的是我在4个内核中的每一个上并行运行两个内核(或者如果不可能,那么至少同时运行)。可能吗?如果是,我们如何在OpenCL中这样做?
答案 0 :(得分:2)
一次运行多个OpenCL内核的能力由硬件决定。最新的AMD& Nvidia卡可以做到这一点。至少你需要这样的设备和多个命令队列,在其中排队内核执行。看看这个:How do I know if the kernels are executing concurrently?
GPU的划分称为Device Fission。它在OpenCL 1.1中作为扩展支持,并在OpenCL 1.2中开箱即用。 AFAIK,主要供应商不支持GPU,但CPU可以很容易地划分为子设备。 Correspondend API调用是clCreateSubDevices。关于这个主题的好文章:英特尔的OpenCL* Device Fission for CPU Performance。