首页 > 编程语言 >cuda编程的简单案例

cuda编程的简单案例

时间:2023-12-16 19:22:08浏览次数:35  
标签:const int 编程 dev 案例 cuda sizeof include size

一个简单的案例:

header.h

void addKernel(const int* a, const int* b, int* c, int size);

 

test.cu

#include "cuda_runtime.h"  
#include "device_launch_parameters.h"  
#include "header.h"
__global__ void add(const int* a, const int* b, int* c, int size)
{
    int tid = threadIdx.x + blockIdx.x * blockDim.x;
    c[tid] = b[tid] + a[tid];
}

void addKernel(const int* a, const int* b, int* c, int size)
{
    int* dev_a = 0;
    int* dev_b = 0;
    int* dev_c = 0;

    cudaSetDevice(0);
    cudaMalloc((void**)&dev_a, sizeof(int) * size);
    cudaMalloc((void**)&dev_b, sizeof(int) * size);
    cudaMalloc((void**)&dev_c, sizeof(int) * size);
    cudaMemcpy(dev_a, a, sizeof(int) * size, cudaMemcpyHostToDevice);
    cudaMemcpy(dev_b, b, sizeof(int) * size, cudaMemcpyHostToDevice);
    cudaMemcpy(dev_c, c, sizeof(int) * size, cudaMemcpyHostToDevice);

    add <<<2, 128 >>> (dev_a, dev_b, dev_c, size);

    cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);

    cudaFree(dev_a);
    cudaFree(dev_b);
    cudaFree(dev_c);
}

 

test.cpp

#include <stdio.h>  
#include <stdlib.h>  
#include "header.h"

#define N 256

int main(int argc, char** argv)
{
    int a[N];
    int b[N];
    int c[N];

    for (int i = 0; i < N; i++)
    {
        a[i] = i;
        b[i] = 2 * i;
        c[i] = 0;
    }
    addKernel(a, b, c, N);
    for (int i = 0; i < N; i++)
    {
        printf("%d is %d.\n", i, c[i]);
    }
    return 0;
}

 

标签:const,int,编程,dev,案例,cuda,sizeof,include,size
From: https://www.cnblogs.com/xiaochouk/p/17905208.html

相关文章

  • 实验7_文件应用编程
    task4#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>intmain(){FILE*fp;charch;intcnt=0;fp=fopen("data4.txt","r");if(fp==NULL){printf("failtoop......
  • 【教3妹学编程-算法题】反转二叉树的奇数层
    3妹:“你不是真正的快乐,你的笑只是你穿的保护色”2哥 :3妹还在唱五月天的歌啊,你不知道五月天假唱,现在全网都在骂呢。3妹:知道啊,可是关我什么事,这个歌的确好听啊。2哥 :嗯嗯,不错,还以为你是脑残粉,无论黑白都只管追星呢。3妹:我是只管追歌的,歌好听就行啦。2哥 :追哥?追哪个哥,难......
  • 商用软件调用开源代码后硬分叉不合并 —— 一种合法的防御性编程或者是商用软件的贪婪
    看到一个说法,说前段时间某滴的公司代码升级导致错误最后使全公司业务崩溃一整天的事情是因为公司商用软件中使用了一种合法的防御性编程,也就是商用软件调用开源代码后硬分叉不合并。 可以说商业企业大幅度使用开源软件已经是公开的秘密了,但是出于实际情况这些不合规的将开源软......
  • 【教3妹学编程-算法题】用邮票贴满网格图
    3妹:“你不是真正的快乐,你的笑只是你穿的保护色”2哥 :3妹还在唱五月天的歌啊,你不知道五月天假唱,现在全网都在骂呢。3妹:知道啊,可是关我什么事,这个歌的确好听啊。2哥 :嗯嗯,不错,还以为你是脑残粉,无论黑白都只管追星呢。3妹:我是只管追歌的,歌好听就行啦。2哥 :追哥?追哪个哥,难......
  • 计算机图形:可编程着色器
    目录OpenGL渲染流水线固定功能流水线可编程功能流水线顶点着色器片元着色器几何着色器曲面细分着色器OpenGL着色语言(GLSL)着色器结构OpenGL中使用着色器基本数据类型矢量矩阵结构、数组控制结构GLSL函数与OpenGL通信OpenGL渲染流水线图形API提供对硬件操作的标准接口,对程序员提......
  • 记一次外网突破的案例
     1、供应链在经历了多年的攻防对抗之后,大量目标单位逐渐认识到安全防护的重要性。因此,他们已采取措施尽可能收敛资产暴露面,并加倍部署各种安全设备。但安全防护注重全面性,具有明显的短板效应,一处出现短板,整个防护体系就可能瞬间崩溃。而目标单位的供应链往往是这些薄弱点的集中......
  • 数电票真正落地后,企业如何平滑完成数电管理升级?【附案例】
    为了应对国内外复杂环境的挑战,从经验管税到以票控税,再到如今的以数治税,国家税务征管改革正在向大数据智能决策、精准执法转变。而数电票作为“以数治税”的重要体现,从试点先行到全面推广历经两年时间,全国36个省区市的试点企业都可以开具和接收数电票,数电票真正落地企业。对于企业而......
  • Python多线程编程:竞争问题的解析与应对策略
    本文将深入探讨Python多线程编程中可能出现的竞争问题、问题根源以及解决策略,旨在帮助读者更好地理解、应对并发编程中的挑战。多线程竞争问题的复杂性源自于对共享资源的并发访问和操作。在不同线程间的交叉执行中,共享资源可能因无序访问而导致数据不一致、死锁或饥饿等问题。解决......
  • HTML5文件操作+上传+文件拖拽(案例)
    js有两种机制:事件机制、io机制文件操作对象:Blob通过二进制原始数据读取file读取单个文件对象fileList读取多个文件对象fileReader读取文件信息file和fileList的属性方法1、name名称2、size文件字节长度3、type文件类型4、lastModified最后修改日期获取单个文件:<......
  • Python 异步编程之yield关键字
    背景介绍在前面的篇章中介绍了同步和异步在IO上的对比,从本篇开始探究python中异步的实现方法和原理。python协程的发展流程:python2.5为生成器引用.send()、.throw()、.close()方法python3.3为引入yieldfrom,可以接收返回值,可以使用yieldfrom定义协程Python3.4加入了asy......