是否可以使用OpenCL控制计算单元?

时间:2018-06-11 12:42:29

标签: concurrency opencl hardware

我在任何关于OpenCL的文档中都找不到答案,所以我问:是否有可能控制哪个计算单元执行哪种算法?我想让一个算法在计算单元1上执行,而另一个(不同的)算法在计算单元2上同时执行。我希望能够定义执行内核的计算单元以及可能的多少处理元件/ CUDA核心。

我的GPU是Nvidia GeForce GT 525M,它每个单元有2个计算单元和48个CUDA核心。

1 个答案:

答案 0 :(得分:2)

不,那是不可能的。你也不想这样做。 GPU知道如何安排工作来制作大部分设备,你不应该 (并且不能)微观管理。您当然可以通过设置全局和本地工作组大小来影响计划。

如果你有两个算法,A和B,并且两者都能够充分利用GPU,那么就没有理由你应该并行运行它们。

Sequentially:
CU 1: AAAAB
CU 2: AAAAB

In parallel:
CU 1: AAAAAAAA
CU 2: BB

如果A和B没有完全相同的运行时,并行运行它们实际上会使总运行时间更长:运行时为slowest(runtime(A), runtime(B)) vs runtime(A/2) + runtime(B/2)

如果这对您没有帮助,我建议您提问您详细说明实际使用案例的问题。您拥有两种算法,运行它们的数据,设备使用情况以及您希望并行运行它们的原因。