6827|7

414

帖子

0

TA的资源

版主

楼主
 

CUDA真香?CUDA与CPU在计算方面的差距 [复制链接]

邀请:@chenzhufly   @skywalker_lee   @wsdymg   @bigbat   参与回复

 

测试平台

Jetson Orin Nano

测试代码

代码仓库(如果对你有用麻烦点个STAR!)

https://github.com/LitchiCheng/CUDA_Test

如下为部分测试代码:

  • #include <cstdio>
  • #include "cuda_runtime.h"
  • #include <sys/time.h>
  • #include <time.h>
  • #include <math.h>
  • #include "utility/timecost.h"
  • __global__ void kernelAdd(float * A, float * B, float * C)
  • {
  • int ix=threadIdx.x+blockDim.x*blockIdx.x;
  • int iy=threadIdx.y+blockDim.y*blockIdx.y;
  • int idx=ix+iy*blockDim.x*gridDim.x;
  • C[idx]=cos(A[idx])+sin(B[idx]);
  • // if(idx == 2077){
  • // printf("idx[%d],ix[%d],iy[%d],bdx[%d],bdy[%d],bix[%d],biy[%d],gdx[%d],gdy[%d],C[%f]\r\n", \
  • // idx,ix,iy,blockDim.x,blockDim.y,blockIdx.x,blockIdx.y,gridDim.x,gridDim.y,C[idx]);
  • // }
  • }
  • int main()
  • {
  • for(int cycle=0;cycle < 32;cycle++)
  • {
  • int gridSize2Dx = 16*cycle;
  • int gridSize2Dy = 16*cycle;
  • //blocksize MAX 1024
  • int blockSize2Dx = 32;
  • int blockSize2Dy = 32;
  • int sum = gridSize2Dx*gridSize2Dy*blockSize2Dx*blockSize2Dy;
  • int sum_bytes = sum*sizeof(float);
  • printf("size %d \r\n", sum);
  • float* A_host=(float*)malloc(sum_bytes);
  • for(int i=0;i<sum;i++){
  • A_host[i]=(float)i;
  • }
  • float* B_host=(float*)malloc(sum_bytes);
  • for(int i=0;i<sum;i++){
  • B_host[i]=i;
  • }
  • float* C_host=(float*)malloc(sum_bytes);
  • float *A_dev=NULL;
  • float *B_dev=NULL;
  • float *C_dev=NULL;
  • {
  • timecost t1("cuda");
  • cudaMalloc((void**)&A_dev,sum_bytes);
  • cudaMemcpy(A_dev,A_host,sum_bytes,cudaMemcpyHostToDevice);
  • cudaMalloc((void**)&B_dev,sum_bytes);
  • cudaMemcpy(B_dev,B_host,sum_bytes,cudaMemcpyHostToDevice);
  • cudaMalloc((void**)&C_dev,sum_bytes);
  • dim3 gridSize2D(gridSize2Dx, gridSize2Dy);
  • dim3 blockSize2D(blockSize2Dx, blockSize2Dy);
  • kernelAdd<<<gridSize2D, blockSize2D>>>(A_dev,B_dev,C_dev);
  • int ret = 0;
  • ret = cudaMemcpy(C_host,C_dev,sum_bytes,cudaMemcpyDeviceToHost);
  • }
  • for(int i=0;i<sum;i++){
  • // printf("C[%d]:%f \n", i, C_host[i]);
  • C_host[i] = 0.0f;
  • }
  • {
  • timecost t2("cpu");
  • for(int i=0;i<sum;i++){
  • C_host[i]=cos(A_host[i])+sin(B_host[i]);
  • }
  • }
  • for(int i=0;i<sum;i++){
  • // printf("C[%d]:%f \n", i, C_host[i]);
  • C_host[i] = 0.0f;
  • }
  • cudaFree(A_dev);
  • free(A_host);
  • cudaFree(B_dev);
  • free(B_host);
  • cudaFree(C_dev);
  • free(C_host);
  • }
  • return 0;
  • }

使用python脚本进行耗时统计(橙黄色cpu耗时,蓝色cuda耗时,x轴为计算量逐渐递增)

 

结论

经过上面的测试,cuda和cpu简单比较下来,数据量越大,cuda越有优势,数据量很小的时候还不如用cpu,当然cuda程序的编写也是较大的影响因素,内存的分配,程序逻辑的解耦等等。

视频


 

查看精华帖全部内容,请登录或者注册

最新回复

111   详情 回复 发表于 2024-7-9 09:49
点赞 关注(1)

回复
举报

7487

帖子

2

TA的资源

版主

沙发
 

cuda用的就是显卡计算。数据量大的时候显卡的优势就体现出来了。

 
 

回复

7487

帖子

2

TA的资源

版主

板凳
 

不过用cuda可能会有一些问题,显卡不支持啥的,之前我就用cuda,更新显卡驱动后,导致我的电脑频繁蓝屏

点评

我这个是jetson板卡,相对好点,不是自己电脑的显卡  详情 回复 发表于 2024-2-29 22:52
 
 
 

回复

414

帖子

0

TA的资源

版主

4
 
wangerxian 发表于 2024-2-29 10:51 不过用cuda可能会有一些问题,显卡不支持啥的,之前我就用cuda,更新显卡驱动后,导致我的电脑频繁蓝屏

我这个是jetson板卡,相对好点,不是自己电脑的显卡


点评

jetson板卡买来学习人工智能的吗?  详情 回复 发表于 2024-3-1 15:41
 
 
 

回复

7487

帖子

2

TA的资源

版主

5
 
LitchiCheng 发表于 2024-2-29 22:52 我这个是jetson板卡,相对好点,不是自己电脑的显卡

jetson板卡买来学习人工智能的吗?

点评

预研测试用的  详情 回复 发表于 2024-3-4 08:27
 
 
 

回复

414

帖子

0

TA的资源

版主

6
 
wangerxian 发表于 2024-3-1 15:41 jetson板卡买来学习人工智能的吗?

预研测试用的

 
 
 

回复

5276

帖子

236

TA的资源

管理员

7
 

好奇,工程师的电脑配置,是不是都是英伟达的显卡?

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 

111

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
TI 处理器AM62L深度讲解,报名直播赢【双肩包、充电器、胶囊伞】
【直播要点】• 如何实现安全节能设计;• 开箱体验和demo;• 软件和硬件
【直播时间】3月21日(周五)上午10:00

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表