东方耀AI技术分享
标题:
cuda编程:数组运算放GPU上操作,看占显存
[打印本页]
作者:
东方耀
时间:
2021-6-8 11:37
标题:
cuda编程:数组运算放GPU上操作,看占显存
cuda编程:数组运算放GPU上操作,看占显存
#include <stdio.h>
#include <unistd.h>
__global__ void add(int *a, int *b, int *c, int num){
int i = threadIdx.x;
//线程id 每个线程是并行执行
//如果数据量很大,就需要很多block和thread;当足够大的数据时,需要考虑数据的划分的!
int j = blockIdx.x;
printf("线程id=%d;block块id=%d\n", i, j);
if (i<num){
//防止溢出
c[i] = a[i] + b[i];
}
}
//cuda编程:数组运算放GPU上操作,看占显存
int main(){
int num = 30;
int a[num], b[num], c[num];
int *a_gpu, *b_gpu, *c_gpu;
//cudaSetDevice(0);
for(int i=0;i<num;i++){
a[i] = i;
b[i] = i*i;
}
cudaMalloc(&a_gpu, num*sizeof(int));
cudaMalloc(&b_gpu, num*sizeof(int));
cudaMalloc(&c_gpu, num*sizeof(int));
cudaMemcpy(a_gpu, a, num * sizeof(int), cudaMemcpyHostToDevice);
cudaMemcpy(b_gpu, b, num * sizeof(int), cudaMemcpyHostToDevice);
// 具体计算操作
add<<<1,num>>>(a_gpu,b_gpu,c_gpu,num);
cudaMemcpy(c, c_gpu, num*sizeof(int), cudaMemcpyDeviceToHost);
//看看结果
for (int i=0;i<num;i++){
printf("看结果:%d+%d=%d\n", a[i],b[i],c[i]);
}
usleep(10*1000*1000); //10秒 看显存到底占用多少M?
cudaFree(a_gpu);
cudaFree(b_gpu);
cudaFree(c_gpu);
return 0;
}
复制代码
作者:
zouqiqi
时间:
2021-11-23 19:40
让天下人人学会人工智能!人工智能的前景一片大好!
欢迎光临 东方耀AI技术分享 (http://www.ai111.vip/)
Powered by Discuz! X3.4