首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >glsl矢量化数据乘

glsl矢量化数据乘
EN

Stack Overflow用户
提问于 2014-03-20 18:39:14
回答 1查看 300关注 0票数 1

这(在GLSL顶点着色器中)会更快吗?

代码语言:javascript
复制
 float f1, f2, f3, f4;
 float v1, v2, v3, v4;

 vec4 m = vec2(f1*v1, f2*v2, f3*v3, f4*v4);

比这个更重要?

代码语言:javascript
复制
 float f1, f2, f3, f4;
 float v1, v2, v3, v4;
 float m1, m2, m3, m4;

 m1 = f1*v1;
 m2 = f2*v2;
 m3 = f3*v3;
 m4 = f4*v4;

已更新

那这个案子呢?

代码语言:javascript
复制
 vec4 m = vec2(f1/v1, f2*v2, f3+v3, f4-v4);
EN

回答 1

Stack Overflow用户

发布于 2014-03-20 18:55:30

使用下降编译器,这两个代码应该产生相同的机器二进制。在这种情况下,您应该关注可读性。一个简单的代码如下所示:

代码语言:javascript
复制
vec4 f = vec4(f1, f2, f3, f4);
vec4 v = vec4(v1, v2, v3, v4);
vec4 m = f * v;

那这个案子呢?

下降编译器可能会将代码保留为标量(或标量simd)单元。它将试图找到类似的指令,并将它们打包为VLIW,SSE风格的指令。它还可以查看其他指令及其依赖关系,然后命令指令以改进缓存、流水线、无序执行、并行ALU、使用MAD、FMA等指令。它实际上取决于硬件和编译器/优化器的行为。通常,编译器不会做似乎是正确的事情。相反,它将试图减少缓存冲击和注册压力,允许隐藏延迟的机会。

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

https://stackoverflow.com/questions/22542228

复制
相关文章

相似问题

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