- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
注意:此问题特定于 nVIDIA 计算能力 2.1 设备。以下信息来自《CUDA 编程指南 v4.1》:
In compute capability 2.1 devices, each SM has 48 SP (cores) for integer and floating point operations. Each warp is composed of 32 consecutive threads. Each SM has 2 warp schedulers. At every instruction issue time, one warp scheduler picks a ready warp of threads and issues 2 instructions for the warp on the cores.
我的疑问:
最佳答案
这是指令级并行性(ILP)。同时从扭曲发出的指令必须彼此独立。它们由SM指令调度器发出,用于分隔SM中的功能单元。
例如,如果 warp 的指令流中有两个独立的 FMAD 指令准备发出,并且 SM 有两组可用的 FMAD 单元可以发出它们,则它们都可以在同一周期中发出。 (指令可以通过各种组合一起发出,但我没有记住它们,所以这里不再提供详细信息。)
SM 2.1 中的 FMAD/IMAD 执行单元有 16 个 SP 宽。这意味着需要 2 个周期才能向 16 宽执行单元之一发出 warp(32 线程)指令。每个 SM 有多个 (3) 个 16 宽执行单元(总共 48 个 SP),以及特殊功能单元。每个 warp 调度程序每个周期可以向其中两个发出任务。
假设 FMAD 执行单元为 pipe_A
、pipe_B
和 pipe_C
。假设在周期 135,有两个独立的 FMAD 指令 fmad_1
和 fmad_2
正在等待:
pipe_A
发出 fmad_1
的前半个 warp(16 个线程),以及 fmad_2 的前半个 warp
到 FMAD pipe_B
。 fmad_1
的前半扭曲将移至 FMAD pipe_A
的下一个阶段,同样,fmad_2< 的前半扭曲
将移至 FMAD pipe_B
的下一个阶段。 warp 调度程序现在将 fmad_1
的后半个 warp 发出到 FMAD pipe_A
,并将 fmad_2
的后半个 warp 发出到 FMAD pipe_B
。 因此需要 2 个周期才能从同一个 warp 发出 2 条指令。但正如OP提到的,有两个warp调度程序,这意味着整个过程可以针对来自另一个warp的指令同时完成(假设有足够的功能单元)。因此,最大发出率为每个周期 2 个扭曲指令。请注意,这是从程序员角度来看的抽象 View - 实际的低级架构细节可能有所不同。
至于你关于下一次扭曲何时准备好的问题,如果有更多指令不依赖于任何未完成的(已发出但未退役)指令,那么它们可以在下一个周期中发出。但一旦唯一可用的指令依赖于飞行中的指令,曲速将无法发出。然而,这就是其他扭曲发挥作用的地方——SM可以为任何具有可用(非阻塞)指令的常驻扭曲发出指令。这种扭曲之间的任意切换提供了 GPU 赖以实现高吞吐量的“延迟隐藏”。
关于cuda - nVIDIA CC 2.1 GPU warp 调度程序如何一次为 warp 发出 2 条指令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9886002/
当 SM 上正在运行的 warp 停滞时,必须在 SM 上安排另一个 warp 来交换停滞的 warp 以弥补延迟。但是替代品是否与停滞的扭曲来自同一个 block ,或者它必须属于另一个 block
我的问题是关于 warp 和调度的。我在这里使用 NVIDIA 费米术语。我的观察如下,它们正确吗? 一个。同一 warp 中的线程执行相同的指令。每个 warp 包含 32 个线程。 根据费米白皮书
我的问题是关于 warp 和调度的。我在这里使用 NVIDIA 费米术语。我的观察如下,它们正确吗? 一个。同一 warp 中的线程执行相同的指令。每个 warp 包含 32 个线程。 根据费米白皮书
注意:此问题特定于 nVIDIA 计算能力 2.1 设备。以下信息来自《CUDA 编程指南 v4.1》: In compute capability 2.1 devices, each SM has
假设我有一个函数来检查授权 header 是否有效以及身份验证是否正确。如何制作一个扭曲过滤器来丢弃所有带有无效 header 或虚假凭据的请求? 最佳答案 这是一个构建过滤器的函数示例,该过滤器完全
我一直在研究使用 Haskell Warp 构建的像素服务器,并且一直在努力研究如何在守护进程模式下运行它。 Warp 效果很好 - 我可以使用 run从 Network.Wai.Handler.Wa
我正在尝试构建一个不平凡的 warp将 REST 应用程序集成到模块中,同时优雅地处理错误和拒绝。它没有按我预期的方式工作。考虑这个简单的应用程序: 主要.rs use warp_sample::ro
我正在用 Rust 编写带有 warp 的服务。当服务收到 SIGTERM 信号时,我希望它正常关闭并可能进行一些日志记录或其他工作。 我已经尝试了很多例子,但没有任何效果。最有希望的似乎来自 thi
我正在考虑使用 wai/warp 进行一些自定义的进程间通信。这将有一个不寻常的要求,即我需要在进程中动态启动/停止扭曲实例。主要问题似乎是完全停止扭曲。这个问题在这里解决: How do I imp
我有一个使用 warp 的 Rust 应用程序.它实现了一个 RESTful CRUD API。我需要每个路由处理程序(即最终由 warp 过滤器调用的函数)来访问和(在大多数情况下)改变共享的应用程
我定义了一个路由和一个端点函数。我还注入(inject)了一些依赖项。 pub fn route1() -> BoxedFilter { warp::get() .and(wa
我想使用 Warp 创建一个网站Haskell 中的网络服务器。 由于我是 Haskell 初学者,因此 this one 等示例对我来说太复杂了。 谁能告诉我一个简单的、最小的如何使用 Warp 的
使用 warp.rs 0.2.2 ,让我们考虑一个基本的 Web 服务,它有一个路由 GET / : #[tokio::main] async fn main() -> Result { le
运行 warp 时应用程序使用 run ,它监听所有 IP 地址。 出于安全原因,我只想监听 localhost,使用反向代理处理远程访问。 我需要如何调用 run 才能仅监听特定主机/IP? 注意:
我有一个 HTTP 应用程序服务器,在特定条件下处理特定请求时需要退出(以便由主管重新启动)。 给定一个主要的: import Network.Wai.Handler.Warp (run) main
我使用 yesod init 创建了一个 yesod webapp。在开发过程中,我使用 yesod devel 在 Debug模式下运行 warp 服务器。现在我已经完成了初步版本,我想将其部署在
我有 GeForce GTX460 SE,所以它是:6 SM x 48 CUDA 核心 = 288 CUDA 核心。众所周知,一个Warp中包含32个线程,并且一个 block 中同时(一次)只能执行
我正试图找到一种方法在 iOS 上做类似的事情: 有谁知道一个简单的方法吗? 最佳答案 我不知道有一个 oneliner 可以做到这一点,但您可以使用 OpenGL 渲染带四边形的纹理网格,其纹理坐标
我正在尝试在 Warp 中设置可变路径。我试过这个: use uuid::Uuid; use warp::{self, Filter}; fn main() { let uuid = Uuid
我有一个关于 union cuda 访问的基本问题。 例如,我有一个包含 32 个元素和 32 个线程的数组,每个线程访问一个元素。 __global__ void co_acc ( int A[32
我是一名优秀的程序员,十分优秀!