GPGPU入门第一步

9 篇文章 0 订阅
6 篇文章 0 订阅

    GPGPU(General Purpose Computing on GPUs)的核心理念是将数组映射到纹理中,然后使用纹理来利用GPU进行并行计算,从而实现加速的作用。

    首先,需要创建一个离屏渲染缓冲区(Frame Buffer Object),这样做的目的是将渲染(Render)工作放在后台,而不是渲染到常规的帧缓冲中,自然也就和显示没有任何关系,因为我们的目标是纯粹的利用GPU进行数值计算。

    注:当然,所使用的显卡以及相应的显卡驱动程序必须支持shading language等扩展,具体的可以通过glview这个软件进行查看。

 

 

    FBO的创建代码:

 

 

    接下来生成一个纹理,并对纹理进行简单的设置:

 

 

    然后将FBO对象和FBO纹理绑定在一起:

 

 

    开始将数据传入纹理中:

 

 

    为了确认数据确实传入了GPU内存单元中,我们再将刚才传进去的数据读取出来,看看和原来的输入数据(也就是data数组)是否一样:

 

    至此,完成了GPGPU的第一步:将数组数据传送到显卡内存中,再从显卡内存中将数据读取出来。代码看上去比较麻烦,但是单机并行计算的诱惑是非常大的,拿我的GTX275显卡为例,240个流处理器,用来做并行计算是何等的强悍!

 

 

    下面总结一下:

    1.创建一个FBO

    2.创建纹理,用于存储数据

    3.用“glFramebufferTexture2DEXT”函数将FBO和纹理进行绑定。这里可以这样理解:FBO是一个大厅,这个大厅有很多门,具体的每一个门就是一个“GL_COLOR_ATTACHMENT0_EXT”(ATTACHMENT后面的数字就是每一个门的门牌号)。然后使用“glDrawBuffer”函数来确定我们的数据到底从哪一个门通过。

    4.全部确定好以后,使用“glDrawPixels”函数来进行从数组到纹理的数据传递过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值