【参加CUDA线上训练营】——实验编写CUDA程序

简介: 实验编写CUDA程序

1.编写第一个程序 Hello CUDA

一般在CPU中写的程序:

#include <stdio.h>

void hello_from_cpu()
{
    printf("Hello World from the CPU!\n");
}

int main(void)
{
    hello_from_cpu();
    return 0;
}

利用CUDA写的程序

#include <stdio.h>

__global__ void hello_from_gpu()
{
    printf("Hello World from the GPU!\n");
}

int main(void)
{
    hello_from_gpu<<<1, 1>>>();
    cudaDeviceSynchronize();
    return 0;
}

2.编译

写完程序之后开始编译两种编译方法

1.nvcc

nvcc -arch=compute_72 -code=sm_72 hello_cuda.cu -o hello_cuda -run

2.Makefile

Makefile内容:

TEST_SOURCE = hello_cuda.cu

TARGETBIN := ./hello_cuda

CC = /usr/local/cuda/bin/nvcc

$(TARGETBIN):$(TEST_SOURCE)
    $(CC)  $(TEST_SOURCE) -o $(TARGETBIN)

.PHONY:clean
clean:
    -rm -rf $(TARGETBIN)
    -rm -rf *.o

命令行输入:make
然后生成一个可执行文件
接着输入:./hello_cuda
即可运行文件

再利用nvprof来查看性能:

nvprof ./hello_cuda

在这里插入图片描述

目录
相关文章
CAN总线位时序的介绍
CAN总线利用CAN_H和CAN_L线的电位差传输数据,显性电平(0,2.5V差值)对应逻辑0,隐性电平(1,0V差值)对应逻辑1。由于NRZ无返回零通信方式,同步是个挑战,特别是距离远时。为解决同步问题,CAN总线采用硬件同步和再同步技术,位时序分为同步段、传播段、两个相位缓冲段,每个段由Tq时间量子构成,允许调整以确保多个单元间的同步采样。
826 0
|
6月前
|
运维 安全 API
网络安防实战:如何用IP查询工具精准定位风险IP?
本文基于对200+真实攻击案例的分析,总结出风险IP的5种典型特征,并提出一套基于IP查询工具的自动化识别方案。实测数据显示,该方案可将告警误报率降低40%以上,将单次IP研判时间从分钟级压缩到秒级。
|
8月前
|
人工智能 自然语言处理 数据可视化
阿里云万小智AI建站怎么样?最新版本、价格,以及与云·企业官网相比优势参考
万小智AI建站是阿里云在2025年底重磅推出的全新建站产品,是原云·速成美站的全新升级换代产品,该产品深度融合人工智能生成技术与零代码开发理念,致力于为企业及个人用户提供极具效率的数字化建站解决方案,用户仅需通过自然语言对话交互及可视化拖拽操作,即可在无编程基础的前提下快速构建适配多终端的响应式网站。同时,阿里云的建站产品还有云·企业官网,以专业设计与高性能服务于高端需求,两者在阿里云生态中形成互补。
1012 11
|
8月前
|
算法 安全 物联网
PPO 实战:第一次跑通 PPO,到底难在哪
PPO实战难点不在算法理解,而在系统性不确定:动态数据、不稳reward、多目标冲突。关键在于明确对齐目标、用SFT模型起步、必备reference、设计偏好型reward、聚焦policy更新、善用KL系数调控风险,并以行为变化而非loss曲线评估进展——耐心跑通最小闭环,才是成功核心。
|
虚拟化
ESXI 6.0使用指南
关于如何开启和使用ESXI 6.0的WebUI以及进行基本操作的指南。
1213 2
ESXI 6.0使用指南
|
安全 Java
【Java并发】【ArrayBlockingQueue】适合初学体质的ArrayBlockingQueue入门
什么是ArrayBlockingQueue ArrayBlockingQueue是 Java 并发编程中一个基于数组实现的有界阻塞队列,属于 java.util.concurrent 包,实现了 Bl...
415 6
【Java并发】【ArrayBlockingQueue】适合初学体质的ArrayBlockingQueue入门
|
SQL 缓存 关系型数据库
postgresql的安装和使用
postgresql的安装和使用
1053 0
|
机器学习/深度学习 测试技术 PyTorch
深度学习之测量GPU性能的方式
在深度学习中,测量GPU性能是一个多方面的任务,涉及运行时间、吞吐量、GPU利用率、内存使用情况、计算能力、端到端性能测试、显存带宽、框架自带性能工具和基准测试工具等多种方法。通过综合使用这些方法,可以全面评估和优化GPU的性能,提升深度学习任务的效率和效果。
1640 3
|
安全 Java 数据库
Spring boot 入门教程-Oauth2,java面试基础题核心
Spring boot 入门教程-Oauth2,java面试基础题核心
|
缓存 资源调度 JavaScript
npm、pnpm和yarn【简单了解】
npm、pnpm和yarn【简单了解】
482 2