想象一下,GPU内存中有2个向量 - a
和b
,实际上是2D float
纹理(每个像素有1个浮点值)。目标是计算点积a·b
。
如果我创建了第三个纹理 - c
- 其中包含a
和b
(即c_{ij} = a_{ij} × b_{ij}
)的元素乘积,那么所有像素的总和'价值是点积。
我以为我可以让GPU生成c
的1px mipmap - 让我们称之为d
。 AFAIK d
是c
中所有像素的平均值,如果乘以mipmamp的相应LOD,则会产生点积。
问题
对于API的具体示例,我们考虑Apple的Metal API或OpenGL / CUDA。