每一个图形程序员都听过这句话:
“纹理采样很贵,要尽量减少。”
但"很贵"到底是多贵?贵到什么程度?比一次加法贵多少?比一次乘法贵多少?比一次pow运算贵多少?
你问十个程序员,可能得到十个模糊的回答:“大概贵个几倍吧”“反正比数学运算慢”“看情况”。
"看情况"是最正确的回答,但也是最没用的回答。
今天我们不说"大概",不说"差不多",不说"看情况"。我们用具体的数字、具体的硬件、具体的场景,把纹理采样的耗时掰开了揉碎了讲清楚。
一、先建立一个直觉:GPU里的时间尺度
在开始定量分析之前,你需要先对GPU里的时间尺度有一个直觉。
一个现代GPU(比如NVIDIA RTX 4070)的核心频率大约是2GHz。也就是说,每个时钟周期是0.5纳秒。
在这个时间尺度下,各种操作需要多少个时钟周期?
操作类型 时钟周期(近似值) ───────────────────────────────────────── 浮点加法(FADD) 1 周期 浮点乘法(FMUL) 1 周期 浮点乘加(FMA/MAD) 1 周期 倒数(RCP) 1 周期 平方根倒数(RSQRT) 1 周期 超