在最坏的情况下,此示例是否在 GPU 全局内存中分配 testCnt * xArray.Length 存储?如何确保仅将阵列的一份副本传输到设备?GpuManaged 属性似乎可以达到这个目的,但它并不能解决我们意外的内存消耗。
void Worker(int ix, byte[] array)
{
// process array - only read access
}
void Run()
{
var xArray = new byte[100];
var testCnt = 10;
Gpu.Default.For(0, testCnt, ix => Worker(ix, xArray));
}
编辑
更精确形式的主要问题:每个工作线程是否获得 xArray 的新副本,或者是否所有线程都只有一个 xArray 副本?