首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HLSL运算符/函数周期计数

HLSL运算符/函数周期计数
EN

Stack Overflow用户
提问于 2012-10-05 21:21:10
回答 3查看 1.9K关注 0票数 4

我正在模拟一些在GPU上运行的算法,有没有关于不同的内部运算和计算在现代硬件上需要多少周期的参考或其他东西?(nvidia 5xx+系列和6xxx+系列)我似乎找不到任何关于这一点的官方说法,尽管在他们的文档中有一些提到标准化、平方根和其他函数的成本上升。谢谢。

EN

回答 3

Stack Overflow用户

发布于 2012-10-08 15:22:04

不幸的是,您正在寻找的循环计数文档要么不存在,要么(如果存在)可能不像您期望的那样有用。您是正确的,一些更复杂的GPU指令比更简单的指令需要更多的时间来执行,但是只有当指令执行时间是主要的性能瓶颈时,周期计数才是重要的;GPU的设计很少会出现这种情况。

GPU着色器程序实现如此高性能的方法是通过并行运行多个(可能是数千个)着色器线程。在换出不同的线程之前,每个着色器线程通常只执行一条指令。在完美的条件下,有足够的线程在运行,其中一些线程总是准备执行它们的下一条指令,因此GPU永远不会停止;这隐藏了由单个线程执行的任何操作的延迟。如果GPU每个周期都在做有用的工作,那么就好像每个着色器指令都在单个周期中执行一样。在这种情况下,使您的程序更快的唯一方法是使其更短(更少的指令=更少的工作周期)。

在更现实的情况下,当没有足够的工作来保持GPU完全加载时,瓶颈实际上肯定是内存访问,而不是ALU操作。在最坏的情况下,一次纹理抓取可能需要数千个周期才能返回;对于像这样不可预测的停顿,通常不值得担心sqrt()是否比dot()占用更多的周期。

因此,最大化GPU性能的关键不是使用更快的指令。它是关于最大化占用--也就是说,确保有足够的工作使GPU足够忙碌,从而隐藏指令/内存延迟。它是关于你的内存访问的智能,以最小化那些痛苦的DRAM往返。有时,当你真的很幸运的时候,它是关于使用更少的指令。

票数 2
EN

Stack Overflow用户

发布于 2012-10-06 20:44:20

http://books.google.ee/books?id=5FAWBK9g-wAC&lpg=PA274&ots=UWQi5qznrv&dq=instruction%20slot%20cost%20hlsl&pg=PA210#v=onepage&q=table%20a-8&f=false

这是到目前为止我发现的最接近的东西,它是过时的(Sm3),但我猜总比没有强。

票数 0
EN

Stack Overflow用户

发布于 2012-10-06 18:48:00

运算符/函数有循环吗?我知道汇编指令是有周期的,那是低级的时间度量,主要依赖于CPU.since运算符和函数,都是高级编程的东西。所以我不认为他们有这样的测量。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12747176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档