为什么CUDA会出现在GPU计算中

本文介绍了GPU计算的历史,从20世纪80年代的图形界面程序推动GPU发展,到NVIDIA在2001年发布的GeForce 3初步开放GPU计算能力。2006年,CUDA架构的Geforce 8800 GTX推出,进一步打破早期限制。CUDA C在2007年发布,允许开发人员通过修饰符区分主机和设备代码,更方便地进行GPU编程。CUDA C中还特别强调了GPU内存分配和设备属性查询的操作。
摘要由CSDN通过智能技术生成

《GPU高性能编程CUDA实战》 相关笔记

GPU计算的历史

  1. 20世纪80年代晚期到90年代早期之间,图形界面程序的普及推动了新型处理器的出现。
  2. 1992年 Silicon Graphics发布OpenGL库,试图将OpenGL作为一种标准化平台无关的3D图形应用编写方法。
  3. 20世纪90年代中期,3D图形技术需求增长。两个原因,一是出现了很多3D游戏,如毁灭公爵等。二是图形加速卡的价格低廉,让消费者能用得起。
  4. 2001年NVIDIA发布GeForce 3 ,从这时起开发人员可以对GPU的计算过程有某种程度的控制。早期GPU计算存在局限性,研究人员必须了解了计算机图形学和着色语言才能使用GPU的功能,导致早期GPU变成没有被广泛接受。
  5. 2006年,第一个基于CUDA架构的GPU,Geforce 8800 GTX发布,减轻了 早期GPU计算存在的一些限制。
  6. CUDA发布后,开发人员仍然需要在了解了计算机图形学和着色语言后才能进行GPU编程,为了解决这个问题,几个月后,在2007年,NVIDIA发布 CUDA C。

CUDA C 介绍

  1. CUDA C 中用__global__修饰符区分主机代码和设备代码,在编译器遇到这个修饰符时,会将这些代码发送给设备的编译器。

  2. 虽然cudaMalloc()也是用来分配内存,但是它只能用于在GPU中分配内存,利用它分配的指针不能再主机代码中使用 这个指针来进行内存读/写操作。

  3. 使用cudaGetDeviceCount来查询设备数量,使用cudaGetDeviceProperties来查看某个GPU的某个属性值
    cuda中支持查看的部分备属性

    补充:获取CPU核心数的方法

    #include "unistd.h"
    #include "stdio.h"
    
    int main (void ) {
        printf("system cpu num is %ld\n", sysconf( _SC_NPROCESSORS_CONF));
        printf("system enable cpu num is %ld\n", sysconf(_SC_NPROCESSORS_ONLN));
        return 0;
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值