位置: 编程技术 - 正文

#pragma UNROLL 4

编辑:rootadmin
在图像处理程序中,你会看到类&#;于#pragma unroll 4这样的语句(注:在DX中,也许你会见到[unroll(3)] for(int i = 0;i < Total; i&#;&#;)类&#;情况),现具体解释如下:&#;

推荐整理分享#pragma UNROLL 4,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

语法:

#pragma UNROLL(n)

#pragma UNROLL告诉编译器一个循环中应该展开n次(其实我觉得是告诉编译器循环展开n次是安全的),有助于对那些不容易展开的循环有更大概率的进行软件流水。

其实很多很多时候编译器会自动判断各种信息,但是这增加了冗余开销,反倒不如直接把我们优化工程师知道的东西告诉编译器。

例:

int JackeryTest [];

#pragma unroll(4)

for(int i=0;i<;i )

{

JackeryTest [i]=i;

}

此处你应该知道在GPU处理过程中,对像素点的操作是并行操作的,所以在Shader中,可以看到这样的处理方式,来提高程序执行效!上面代码就告诉了编译器循环中展开4次并行执行的循环是安全的,如果编译器的软件流水可以顺利打开且不考虑软件流水填充和排空,那么上面代码就相当于如下代码并行执行,

#pragma UNROLL 4

for(int i=0;i<;i &#;=4)

JackeryTest [i]=i; //并行

JackeryTest [i &#;1]=i &#;1; //并行

JackeryTest [i &#;2]=i &#;2; //并行

JackeryTest [i &#;3]=i &#;3; //并行

注意:

(1) 循环的次数是n的整数倍

(2) 其实一般都是和#pragma MUST_INTERATE配合使用,这样可以更全面的告诉编译器我们知道的信息,以使编译器有效开通软件流水。

(3) #pragma MUST_INTERAT(1)告知编译器不要进行循环展开。

(4) 不要使用多条#pragma MUST_INTERAT语句,这样做的话编译器不一定执行的是那条#pragma MUST_INTERAT

(5) 如果设置了-O1,-O2,-O3等编译选项则#pragma UNROLL(n)的设置是无效的

OpenGL--多边形偏移 理论基础多边形偏移:有时候我们需要着重显示多边形的边缘,一般做法是先绘制实心的再在同一位置绘制空心的,这样就可以突出边缘。但是,由于

OpenGL编程逐步深入(三)在窗口中显示一个三角形 这一节教程的内容会比较少,我们仅仅是对上一节教程中的代码进行扩展,在窗口中渲染一个三角形出来。本节我们以下图所示正方形来讲解OpenGl中的

OpenGL的矩阵运算是与DirectX相反的 这两天在用OpenGL做项目,但是在做矩阵操作的时候出了问题,按照数学上想当然的方法进行矩阵操作居然得不到想要的结果。后来一查,DirectX用的是行

本文链接地址:https://www.jiuchutong.com/biancheng/369533.html 转载请保留说明!

上一篇:OpenGL--点参数(opengl的函数)

下一篇:OpenGL--多边形偏移(opengl多窗口绘图)

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

鄂ICP备2023003026号

网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

友情链接: 武汉网站建设 电脑维修 湖南楚通运网络