WebGPU 编程模型之时间轴的概念

这篇具有很好参考价值的文章主要介绍了WebGPU 编程模型之时间轴的概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一个前端有用户代理,后端有GPU的计算机系统,其组件并行地在不同的时间线上工作:  

  1. Content timeline      内容时间线
  2. Device   timeline      设备时间线
  3. Queue   timeline      队列时间线

内容时间线 :与 web 页面脚本的执行有关;

设备时间线 :与用户代理发出的GPU设备操作相关联。它包括适配器、设备、GPU资源和状态对象的创建,从控制GPU的用户代理部分的角度来看,这些操作通常是同步的,但可以存在于单独的操作系统进程中。

队列时间线: 与GPU计算单元上的操作执行相关联。它包括在GPU上运行的实际绘制、复制和计算作业。

例如:

GPUComputePassEncoder.dispatchWorkgroups():

  1. 用户通过调用GPUComputePassEncoder的方法来编码dispatchWorkgroups命令,该方法发生在Content时间轴上。

  2. 用户调用GPUQueue.submit(),将GPUCommandBuffer交给用户代理,用户代理通过调用操作系统驱动程序来进行低级提交操作,从而在设备时间轴上处理它。

  3. 提交由GPU调用调度器分派到实际的计算单元上执行,这发生在Queue时间轴上。

GPUDevice.createBuffer():

  1. 用户填写一个GPUBufferDescriptor并用它创建一个GPUBuffer,这发生在Content时间轴上。

  2. 用户代理在设备时间轴上创建一个低级缓冲区。

在此规范中,当结果值依赖于发生在除Content时间轴以外的任何时间轴上的工作时,将使用异步操作,它们在JavaScript中由callbacks和promises表示。

GPUBuffer.mapAsync():

  1. 用户请求在Content时间轴上映射一个GPUBuffer,并返回一个promise。

  2. 用户代理检查缓冲区当前是否被GPU使用,并提醒自己在使用结束时进行检查

  3. 在队列时间轴上操作的GPU使用缓冲区完成后,用户代理将其映射到内存并解析promise。

 文章来源地址https://www.toymoban.com/news/detail-468945.html

到了这里,关于WebGPU 编程模型之时间轴的概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包