在我阅读过的关于OpenCL的任何文档中,我都找不到答案,所以我想问:是否可以控制哪个计算单元执行哪种算法?我想让一个算法在计算单元1上执行,另一个算法在计算单元2上同时执行。我希望能够定义在哪个计算单元上执行一个内核,并可能定义多少个处理元素/CUDA核心。
我的GPU是Nvidia GeForce GT 525M,它有2个计算单元和48个CUDA核心每单位。
发布于 2018-06-11 13:39:16
不那是不可能的。你也不想这么做。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))与runtime(A/2) + runtime(B/2)。
如果这对您没有帮助,我建议您提出一个问题,在其中详细说明您的实际用例。您有哪些算法,您必须在哪些数据上运行它们,它们的设备使用情况是什么,以及为什么要并行运行它们。
https://stackoverflow.com/questions/50798035
复制相似问题