GPU编程实例

GPU是多核技术的代表之一,在一块芯片上集成多个较低功耗的核心,单个核心频率基本不变,一般在1~3GHz,设计重心转向到多核的集成技术,GPU是一种特殊的多核处理器。本文在联想深腾7000G GPU集群上进行实验,该集群有100个节点,每个节点包含两个4核CPU(Intel XEON),16GB内存,其中16个节点配置一块GPU卡,18个节点配置两块GPU卡。

编译GPU程序nvcc –o vectorAdd vectorAdd.cu

运行:

为了方便,写了简单的shell脚本,具体内容如下:

if [ -f [email protected] ]; then
    rm [email protected]
fi
if [ -f [email protected] ]; then
    rm [email protected]
fi
bsub -q c2050 -o [email protected] -e [email protected] ./$@

示例:

1. 向量加法

#include
#define N 200000
#define M 500
__global__ void kernelvectorAdd(int *dev_a,int *dev_b,int *dev_c)
{
	int tid=blockIdx.x*blockDim.x+threadIdx.x;
	if(tid>>(dev_a,dev_b,dev_c);
	cudaMemcpy(c,dev_c,N*sizeof(int),cudaMemcpyDeviceToHost);
	
	cudaFree(dev_a);
	cudaFree(dev_b);
	cudaFree(dev_c);
	
	for(int i=0;i

比较简单,看程序就能看明白。


2. 矩阵乘法

#include
#include 
#include 
#define N 1000

void MatrixMul(int *A, int *B, int *C, int Width) {
    int i, j, k;
	for(i=0; i>>(dev_A,dev_B,dev_C,N);
	cudaThreadSynchronize();
	cudaMemcpy(C,dev_C,N*N*sizeof(int),cudaMemcpyDeviceToHost);
	cudaFree(dev_A);
	cudaFree(dev_B);
	cudaFree(dev_C);
	
	int m,n;
	for(m=0;m

3.实验结果:

最终的输出结果会保存在 *.log下,如果执行过程中出错,则错误信息保存在 *.err中,下面是结果截图:

GPU编程实例_第1张图片

GPU编程实例_第2张图片
 


你可能感兴趣的:(编程,GPU,实践,并行算法)