微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何有效地将 GPU JS 函数的输出反馈给它?

如何解决如何有效地将 GPU JS 函数的输出反馈给它?

我正在尝试使用 GPU JS 来加速动态编程算法的性能

这是我当前的代码

let pixels = new Uint32Array(5 * 5);

for (let i = 0; i < pixels.length; i++) {
  pixels[i] = i;
}

function kFunction() {
  let width = this.output.x;
  let row = this.constants.row;
  let col = this.thread.x;

  let prevRow = (row - 1) * width;

  let base = (row * width) + col;
  let prevBase = (prevRow * width) + col;

  let nw = this.constants.pixels[prevBase - 1];
  let n = this.constants.pixels[prevBase];
  let ne = this.constants.pixels[prevBase + 1];

  return this.constants.pixels[base] + Math.min(Math.min(nw,n),ne);
}

var gpuKernel = gpu.createKernel(kFunction)
                   .setConstants({ pixels: pixels,row: 1 })
                   .setoutput([5,5]);

console.log(gpuKernel());

这有效,但我希望它在每一行上运行,而不仅仅是第 1 行。

问题是为了在下一行运行,必须首先计算前一行(对于行 n > 1,nwnne 值应根据前一行的值而不是 pixels)

计算

我可以通过将 createKernel 置于循环中并在每一行上运行它来轻松解决此问题,但我相信不断从 GPU 返回值并将其发送回很慢。我听说 Textures 或许可以解决这个问题,维持某种状态,但我找不到任何相关信息。

我要求做的事情可行吗?使用单个 GPU 函数调用来计算整个累积总和表,而不为计算的每一行来回传递数据?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。