博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初识CUDA
阅读量:5101 次
发布时间:2019-06-13

本文共 859 字,大约阅读时间需要 2 分钟。

 

  1. 如果问题规模较小,逻辑控制较为复杂,并行性很小优先使用CPU处理该问题,如果包含较大规模的数据处理,则考虑使用GPU进行处理。

  2. CPU上线程是重量级实体,可以开启1~32个线程,且上下文切换较为缓慢,GPU上线程是高度轻量级的,可以开几百甚至上千个线程。

  3. CUDA通过两种API来对设备GPU设备进行控制,包括驱动API和运行API,其中驱动API较难编程,但是设备控制能力和利用率高。两者只能选择其中一种,不能混合使用。

  4. 一个CUDA程序包含了两个部分代码,在CPU上运行的主机代码和在GPU上运行的设备代码。

  5. 判断自己的主机上是否存在nvidia设备可以使用命令:

        ls -l /dev/nv*

  1. hello.cu代码:

  #include <cuda_runtime.h>

  #include <stdio.h>

  __global__ void HelloFromGPU(void)

  {

    printf("Welcome to CUDA!\n");

  }

  int main(){

  cudaSetDevice(0);

  HelloFromGPU<<<1,10>>>();

  cudaDeviceReset();

  return 0;

  }

  1. 在这个代码中调用了10GPU线程,cudaSetDevice(int)是对GPU的特定选择,而cudaDeviceReset()用来释放和清空所有在GPU中的资源。在进行程序生成运行的时候需要使用

            nvcc -arch sm_61 hello.cu -o hello

    来运行,-arch sm_61是个开关语句,使编译器为Pascal架构生成设备代码,以运行,sm_61是与具体设备有关,如果设备的计算能力不同那么对应的也不一样,一旦运行错误的运算能力,可能也无法得到想要的结果。

转载于:https://www.cnblogs.com/Jetson-xie/p/10369050.html

你可能感兴趣的文章
程序员谨防加班猝死之十大建议(转)
查看>>
memcached全面剖析–5. memcached的应用和兼容程序(转)
查看>>
angularJS学习
查看>>
关于ASBox
查看>>
使用Fastjson解析List对象时出现:{"$ref":"$.data[0].task.OBJECTS[0]"}的问题原因及解决方法...
查看>>
BZOJ 2882 & 后缀数组的傻逼实现
查看>>
java第一天练习
查看>>
SA 的参数
查看>>
MakeDirZ.bat
查看>>
好的网站收藏---长期更新---长期更新---长期更新---长期更新--
查看>>
SQL SUM() 函数
查看>>
Python3 数字(Number)
查看>>
微信小程序 - 传参的几种方式
查看>>
大数据之多数据源综合管理系统:数据源配置管理
查看>>
Iroha and Haiku II
查看>>
jvm
查看>>
HTTP 笔记与总结(6)referer 头与防盗链
查看>>
poj 3278 Catch That Cow (bfs 搜索)
查看>>
怎么解决java.lang.NoClassDefFoundError错误
查看>>
Hive分区表创建,增加及删除
查看>>