1:数据并行性
数据并行性是一种支持算术操作按照一定的数据结构同时安全地执行的程序属性。
矩阵乘法中的数据并行性:每个点击之间没有数据的相互依赖,可以高度并行化。
2:CUDA的程序结构
代码:
程序由C代码和扩展代码(一般问kernel函数)共同组成,设备代码一般由nvcc来进行编译,并在GPU设备上执行,如果没有GPU(或者kernel函数更使用使用CPU),可以通过SDK或者MCUDA进行仿真,在CPU上执行kernel函数
过程:
开始于主机(CPU),当kernel函数需要被调用或者启动时,转移到设备(GPU)上。
设备将生成大量的线程,充分利用大量数据的并行性。
3:矩阵乘法示例
使用一维的存储来表示二维结构的数据
只有主机代码的示例:
void MatrixMultiplication(flaot * M, float * N, float * P, int Width)
{
for(int i = 0; i < Width; i++)
for(int j = 0; j < Width; j++)
{
float sum = 0;
for(int k = 0; k < Width; k++)