cuda编程---将连续内存中存储的图像数据分配到共享内存中
一、图像数据大小
在使用cuda设计程序时,会遇到将全局内存分配到共享内存的情况,比如用共享内存来设计归约算法。假设我们的图像是一个1000*512大小的矩阵,浮点数据,数据已经被存储在一片连续的内存空间,数据被定义为全局内存变量float *data,这片内存的大小为1024 * 512 * size(float),图像每一行的pitch为1024 * sizeof(float)。
在【图像数据做并行规约时,如何确定共享内存和网格的大小】中,知道我们分配的共享内存大小要大于图像数据的大小。
二、图像数据存储及线程大小分配
我们从物理世界获得的图像矩阵大小,可能是1066 * 555,可能是3211 * 589等等,宽和高都是没有规则的整数,或者已经根据显示器大小设定好的“不规则”整数。但是,数据在内存中储存的时候,占用的内存往往不是width * height * sizeof(float),为了软件运行效率及一些其他原因,数据通常会补零,将宽或高的大小变成2的指数次方,所以在软件中处理图像(矩阵)数据时,