作为Open CL的入门者,我有一个简单的理解问题来优化GPU计算。
据我所知,我可以制作1000 X 1000的矩阵,并使用GPU同时在每个像素上放置一个代码。以下选项如何:
我有100次100 x 100矩阵,需要以不同的方式计算它们。所以我需要 做串行或我可以启动100个实例,即我启动100个Python多进程和每个 向GPU发射矩阵计算(假设这些资源足够)。
反过来说,我有一个1000 X 1000的矩阵和100个不同的实例 计算, 我可以同时或连续处理吗?
任何建议或概念如何以最快的方式解决这个问题
由于 阿德里安
答案 0 :(得分:1)
OpenCL执行模型围绕内核进行,内核只是为问题域中的每个点执行的函数。当您在OpenCL设备上启动内核以执行时,您可以为此域定义1,2或3维索引空间(也称为NDRange或全局工作大小)。完全取决于您如何将NDRange映射到实际问题上。
例如,您可以启动100x100x100的NDRange,以处理100组100x100矩阵(假设它们都是独立的)。然后,您的内核定义其中一个矩阵的单个元素的计算。或者,您可以启动100个内核,每个内核都有一个100x100 NDRange来实现相同的功能。前者可能更快,因为它避免了启动多个内核的开销。
我强烈建议您查看OpenCL specification以获取有关OpenCL执行模型的更多信息。具体来说,3.2节对内核执行的核心概念进行了很好的描述。