【IT168 专稿】欢迎继续阅读本系列文章的第5部分,在这篇文章中,我将介绍如何在GPU(Grid)上启动多维块。我们将创建和上一篇文章一样的程序,但这一次我们要显示二维数组块,每个块显示一个计算的值。
系列文章:
▲图 1 网格(Grid)
这些块的工作方式和我们在这篇文章中看到的其它块是一样的,但因为它们是二维的,你可以将它们看作是一个坐标系统,在x和y轴上有许多块,从本质上来说,和我们前面做的事情是一样的,但这次我们要使用多维索引。
我们怎么做呢?首先,我们需要使用CUDA C库中的一个关键词定义我们的变量:
dim3 multiBlockArray(X,Y);
你可能要问,为什么是dim3呢?因为将来CUDA C也可能会支持三维数组,但现在它只是留作备用的,因此当你创建数组时,你只要指定x和y轴的维度,然后第三轴自动被设置为1。
实现我们的实验方案
首先,包括stdio.h和定义块数组大小:
#include <stdio.h>
#define BLOCKS 10
Next, we create our main-function.
int main( void )
{
#define BLOCKS 10
Next, we create our main-function.
int main( void )
{
然后定义一个二维数组,一个从GPU拷贝出或拷贝到GPU指针,以及我们的dim3变量:
int hostArray[BLOCKS][BLOCKS];
int *deviceArray;
int *deviceArray;