CUDA优化之七种武器

说来惭愧,接触GPU是在07年6月份,研二,来公司实习。用cg把以前的一些图像处理算法改写在了GPU上,当时是用的geforce8800GTX。后来入职后,开始接触别的工作,学x-ray,学习image acquisition,只是没事的时候翻翻手册,浏览下群里的讨论。就在这漫不经心的日子里,逐渐忘了很多东西。现在项目重新开始,也重新开启了cuda之路。

七种武器,不一定有七种。

也许只是一个代号,也许,这厮是在模仿古龙~

(一)stream

stream

stream 流.

看不见的显卡内部,有无数的stream在流动。

从main memory到global memory有stream[i]在,

在SM里,那些忙着做加减乘除预算的,有stream[i+1]在,

同时还有从global memory往回倒腾的stream[i+2]在。

由于stream的存在,使得各条战线的兄弟们都同时在忙活,你,不是一个人在战斗!

任何事情好像都是过犹不及,stream太多了也不成,management成问题啊,这不,我这1024*1024的图像,开64个流的时候发现性能下降了一大截啊。开4,8,16貌似还可以的说。

手册上是这么说的:

设T1 = execution time of kernel

T2 = memory transfer time

N = number of streams

Time(using stream) = max(T1, T2)  + min(T1, T2) / N.

看来对于大规模数据吞吐的时候还是有点优势的。

但是我的concern是:

要对于convolution这样数据位置相关的运算的话,这流划分起来是不是就有困难了呀?

 

 

你可能感兴趣的:(优化,算法,Stream,image,CUDA,图像处理)