首页 > 其他分享 >cuda c 矢量相加

cuda c 矢量相加

时间:2024-03-09 21:25:40浏览次数:17  
标签:int 相加 矢量 dev cpu cuda gpu sizeof void

# include<iostream>
#include "cuda_runtime.h"
#include "device_launch_parameters.h"

# define n 10 
//定义成宏而不是定义成全局变量
//是因为随便定义全局变量可能会导致在调用核函数的时候发生"应输入表达式"的错误

__global__ void add(int *a , int *b , int *c)
{
	
	int i = blockIdx.x;
	c[i] = a[i] + b[i];
}

int main()
{
	int a[n], b[n], c[n];
	int* dev_a, int* dev_b, int* dev_c;
    
	cudaMalloc((void**)&dev_a, n * sizeof(int));
	cudaMalloc((void**)&dev_b,n * sizeof(int));
	cudaMalloc((void**)&dev_c, n * sizeof(int));
        //向gpu申请内存
        //此时dev_这三个变量已经指向gpu的内存而不是cpu的
        
	for (int i = 0; i < n; i++)
	{
		a[i] = i, b[i] = i + 1; //给cpu的两个数组赋值
	}

	cudaMemcpy(dev_a, a, n * sizeof(int), cudaMemcpyHostToDevice);
	cudaMemcpy(dev_b, b, n * sizeof(int), cudaMemcpyHostToDevice);
        //将cpu的数组传到gpu上

	add << <n, 1 >> > (dev_a, dev_b, dev_c); 
        //n个block,每个block有1个thread
	

	cudaMemcpy(c, dev_c,  n * sizeof(int), cudaMemcpyDeviceToHost);
        //将答案复制到cpu上
      
	for (int i = 0; i < n; i++) printf("%d ", c[i]);
	cudaFree(dev_a);  //释放gpu上申请的内存
	cudaFree(dev_b);
	cudaFree(dev_c);
	return 0;
}

标签:int,相加,矢量,dev,cpu,cuda,gpu,sizeof,void
From: https://www.cnblogs.com/algoshimo/p/18063325

相关文章

  • NVIDIA安装CUDA在安装阶段提示NVIDIA安装程序失败
    1.首先在NVIDIA官网上下载相应的CUDA版本https://developer.nvidia.com/cuda-toolkit-archive安装过程出现上述报错!2.解决方法。下载完成直接双击,默认选择路径3.点击同意并继续4.选择自定义模式5.在选择组件的时候,将CUDA中的NsightVSE和VisualStudioIntegration取消......
  • Linux安装显卡驱动和CUDA
    一、安装显卡驱动方法一1.查询系统中是否安装了显卡驱动命令行键入:nvidia-smi下图是未安装的显示 2.查询显卡型号并选择安装的驱动版本 (1)查询显卡型号命令行键入:lspci|grep-ivga(2)根据显卡型号选择合适的显卡驱动这里下载:https://www.nvidia.com/Download/ind......
  • CUDA指针数组Kernel函数
    技术背景在前面的一篇文章中,我们介绍了在C++中使用指针数组的方式实现的一个不规则的二维数组。那么如果我们希望可以在CUDA中也能够使用到这种类似形式的不规则的数组,有没有办法可以直接实现呢?可能过程会稍微有一点麻烦,因为我们需要在Host和Device之间来回的转换,需要使用到很多C......
  • 【环境】24-03-05:CUDA与cuDNN的安装与下载
    CUDA提供通用并行计算平台和编程模型,CUDNN是针对深度学习应用进行优化后的GPU加速库。安装CUDA查看显卡型号和驱动版本(DriverVersion)打开cmd,输入nvidia-smi主要是确认CUDAVersion的版本,这里是12.4,意味着我可以安装12.4及以下任何版本的CUDA下载CUDACUDAToolkitArchive......
  • 编译后的opencv-cuda任意位置任意机器的移植(python版本
    测试环境:OS:Windowspython:3.10.11amd64opencv:4.9.0准备:复制build目录下面的install到目标路径,例如:d:\opencv-cuda490\install复制python目录下Lib\site-packages\cv2到目标路径,例如:d:\3.10.11-embed-opencv-cuda\Lib\site-packages修改:假如cv2的目标路径:......
  • 矢量字库编辑软件PowerFont
    (1)支持单线体字库shx,以及曲线字库TTF的导入:(2)支持常用的cad绘制直线,点,圆弧,椭圆,多段线绘制字符图形;(3)支持常用的cad编辑,比如打断,延伸,倒角,旋转,平移;(4)支持标尺定位:(5)支持由外部dxf,plt文件创建字符,也可以将字符导出plt以及dxf文件;(6)生成专有的fnt字库,免除ttf,shx字库的解析以及不兼容;(7)......
  • ubuntu-CUDA 开发环境搭建
    CUDA开发环境搭建1.安装CUDAToolKit查询驱动支持的CUDA版本#命令输出第一行版本nvidia-smi命令的版本,nvidia驱动版本与支持的cuda版本,当前本地机器支持的cuda版本为12.2nvidia-smi进入官网下载对应版本的cuda安装,历史版本归档下载链接:https://developer.nvidia.com/......
  • 454. 四数相加 II c
    typedefstructnode{intsum;intcount;structnode*repeatnext;}hash;voidinit_hash(hash*h){for(inti=0;i<128;i++){h[i].sum=0;h[i].count=0;h[i].repeatnext=NULL;}}hash*find_hash(hash*h,intnumb......
  • 454. 四数相加 II C
    自己写了一个hash表。原来学过的数据结构关于hash的那章还是有实际用的,不是书架子。typedefstructnode{intsum;intcount;structnode*repeatnext;}hash;voidinit_hashtable(hashh[]){for(inti=0;i<127;i++){h[i].sum=0;h[i].......
  • 使用矩池云 Docker 虚拟机安装VNC、Conda、Python及CUDA
    矩池云虚拟机支持Docker使用,但是由于虚拟机目前不支持启动时传递环境变量来设置VNC、Jupyterlab连接密码,所以我们没有创建相关基础镜像(设置固定密码容易泄漏),下面给大家介绍手动安装使用VNC、Jupyterlab、CUDA等步骤,以便支持使用OpenGL等功能的使用,开启更完善和强大的功能体......