让我们说,我大约有10个内核,它们以MTLComputeCommandEncoder
编码,而这10个内核在一组正在考虑的数据上运行。
我有这些数据的多个集合,比方说5个,我想在所有单独的数据集合上执行这10个内核。和不!我无法将这些数据集合并为一个数据。
一种幼稚的方法是循环所有数据集,并在每个数据集上一个接一个地执行所有10个内核。
我正在寻找一种可以告诉Metal
的方式,这些是独立的数据集,可以并行执行。也就是说,我不想依次编码10个内核,而是要在GPU上同时运行所有这些内核。
CUDA提供Streams
以实现此行为。金属提供类似的东西吗?
我知道存在MTLDispatchType
,将其设置为MTLDispatchTypeConcurrent
,这意味着可以同时运行10个内核,但这不是必须的。
谢谢!