前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GPU编程4--Hello World初体验

GPU编程4--Hello World初体验

作者头像
猫叔Rex
发布2020-07-14 16:38:04
9840
发布2020-07-14 16:38:04
举报
文章被收录于专栏:科学计算科学计算

函数声明

  在GPU编程中,有三种函数的声明:

Executed on

Only callable from

__global__ void KernelFunc()

device

host

__device__ float DeviceFunc()

device

device

__host__ float HostFunt()

host

host

这里的host端就是指CPU,device端就是指GPU;使用__global__声明的核函数是在CPU端调用,在GPU里执行;__device__声明的函数调用和执行都在GPU中;__host__声明的函数调用和执行都在CPU端。

并行优化定理

  在讲GPU并行计算之前,我们先讲一下使用GPU后能提高性能的理论值,即Amdahld定理,也就是相对串行程序而言,并行程序的加速率。

  假设程序中可并行代码的比例为p,并行处理器数目是n,程序并行化后的加速率为:

GPU Hello World

Hello World程序是我们学习任何编程语言时,第一个要完成的,虽然cuda c并不是一门新的语言,但我们还是从Hello World开始Cuda编程。

代码语言:javascript
复制
#include <stdio.h>
#include "cuda_runtime.h"
#include "device_launch_parameters.h"

__global__ void hello_world(void)
{
    printf("GPU: Hello world! Thread id : %d\n", threadIdx.x);
}

int main(){
    printf("CPU: Hello world!\n");
    hello_world <<<1, 10>>>();
    // cudaDeviceReset must be called before exiting in order for profiling and
    // tracing tools such as Nsight and Visual Profiler to show complete traces.
    cudaDeviceReset();
    return 0;
}

  程序中的具体语法我们后面会讲到,这里只要记住<<<1, 10>>>是调用了10个线程即可,执行上面的程序,会打印出10个GPU的Hello World,这个就是SIMD,即单指令多线程,多个线程执行相同的指令,就像程序中的这个10个线程同时执行打印Hello Wolrd的这个指令一样。

微信号:xhclsys2

公众号:Quant_Times

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 傅里叶的猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 函数声明
  • 并行优化定理
  • GPU Hello World
相关产品与服务
GPU 云服务器
GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档