CUDA C编程入门-编程接口(3.4)计算模型

  在Windows Server 2008和后来的版本或者Linux上运行的Tesla解决方案,能通过NVIDIA系统管理界面(nvidia-smi,作为发行的驱动的一个工具)设置系统中的任何设备运行于下面三种计算模式中的一种 :

  • 默认计算模式:多主机线程能同时使用设备(使用运行时API,在这个设备上调用cudaSetDevice(),或者使用驱动API,使当前的上下文与设备关联)。
  • 处理器独占的计算模式:仅创建一个跨系统所有处理器CUDA上下文,同时对于一个处理器的尽可能多的线程。
  • 处理器和线程独占的计算模型:仅创建一个跨系统所有处理器CUDA上下文,且同时只能对于一个线程。
  • 禁止计算模式:在设备上不会创建CUDA上下文。

  这意味着,尤其是,如果设备0是处理器独占的计算模式并且被另外的一个处理器使用,或者是处理器和线程独占的计算模式并且被另外的一个线程独占,或者是禁止计算模式,一个没有显式调用cudaSetDevice()运行时API的主机线程可能关联一个不是0的设备。cudaSetValidDevices()可以用于从一个设备的优先列表设置设备。

  应用可以检查computeMode设备属性以查询设备的计算模式。

CUDA C编程入门-编程接口(3.4)计算模型

时间: 2024-10-14 06:50:07

CUDA C编程入门-编程接口(3.4)计算模型的相关文章

CUDA C编程入门-编程接口

CUDA C给熟悉C编程语言的人提供一个简单的途径去编写在设备(GPU)上执行的代码. 由一个最小的C语言的扩展集和运行时库组成. 核心的语言扩展在编程模型这一章节已经介绍过了.允许程序员定义核函数并且使用一些新的语法指定核函数每次运行时的grid和block的维数.可以在C语言扩展这个章节里找到扩展的完整描述.所有的含有这些扩展的源代码都需要使用nvcc编译,nvcc的概述可以查看使用nvcc编译这一小节. 在CUDA C运行这一小节介绍运行时.运行时提供在主机执行的用于分配和回收设备内存.设

CUDA C编程入门-编程接口(3.5)模式转换

GPUs有一个显示输出,输出到一个叫主表面的DRAM内存中,这个表面被用于刷新输出给用户看的显示设备.当用户通过改变显示器的分辨率或者位深(使用NVIDIA控制面版或者Windows显示器控制面版),开始一个显示器模式选择时,主表面需要的内存数量会改变.例如,如果以后改变显示器分辨率从1280x1024x32位到1600x1200x32位,系统必须增加7.68MB而不是5.24MB的内存给主表面(带反走样的全屏的图形应用可能要求更多的显示内存给主表面).在Windows上,其它事件,包括加载一个

CUDA C编程入门-编程接口(3.3)版本和兼容性

有两个版本号是开发者开发CUDA应用时需要关心的:计算能力-描述产品规格和计算设备的特性和CUDA驱动API的版本-描述驱动API和运行时支持的特性. 在驱动头文件的宏CUDA_VERSION可以获取驱动API的版本.可以允许开发者检查他们的应用是否要求一个比现有版本更新的版本.这很重要,因为驱动API是向后兼容的,意味着针对特别版本编译的应用.插件和库(包括C运行时)能继续在后来发行版本的设备驱动上运行,如图11所示.驱动不是向前兼容的,意味着针对特别版本编译的应用.插件和库(包括C运行时)不

CUDA C编程入门-编程接口(3.2)CUDA C运行时

在cudart库里实现了CUDA C运行时,应用可以链接静态库cudart.lib或者libcudart.a,动态库cudart.dll或者libcudart.so.动态链接cudart.dll或者libcudart.so的应用需要把CUDA的动态链接库(cudart.dll或者libcudart.so)包含到应用的安装包里. CUDA所有的运行时函数都以cuda为前缀. 在异构编程这一章节提到,CUDA编程模型假设系统是由一个自带各自的内存的主机和设备组成.设备内存这一小节概述用于管理设备内存

CUDA C编程入门-编程模型

这章节介绍CUDA编程模型的主要的概念. 2.1.kernels(核函数) CUDA C扩展了C语言,允许程序员定义C函数,称为kernels(核函数).并行地在N个CUDA线程中执行N次. 使用__global__说明符声明一个核函数,调用使用<<<...>>>,并且指定执行的CUDA线程数目.执行的每个线程都有一个独一的ID,在核函数中可以通过变量threadIdx获取. 例子,两个向量的加,A加B,并把结果存入C,A.B和C的长度为N. __global__ vo

CUDA C编程入门-介绍

CUDA C编程入门-介绍 1.1.从图形处理到通用并行计算 在实时.高清3D图形的巨大市场需求的驱动下,可编程的图形处理单元或者GPU发展成拥有巨大计算能力的和非常高的内存带宽的高度并行的.多线程的.多核处理器.如图1和图2所示. 图 1 CPU和GPU每秒的浮点计算次数 图 2 CPU和GPU的内存带宽 在CPU和GPU之间在浮点计算能力上的差异的原因是GPU专做密集型计算和高度并行计算-恰好是图形渲染做的-因此设计成这样,更多的晶体管用于数据处理而不是数据缓存和流控制,如图3所示. 图 3

CUDA C编程入门

CUDA C编程入门系列文章是CUDA C Programming guide的翻译,同时也会加入一些个人的理解.由于刚刚接触CUDA编程,对此领域不是很熟悉,翻译的质量和正确与否不能保证,不过如果读者发现哪里有误,欢迎指正. CUDA C编程入门文档结构: 第一章:介绍-关于CUDA的总体介绍. 第二章:编程模型-概括CUDA编程模型. 第三章:编程接口-描述CUDA编程的C语言的接口. 第四章:硬件实现-描述GPU的硬件实现. 第五章:编程指引-给出一些指导,怎样才能发挥CPU最大的性能.

CUDA C编程入门-硬件实现

NVIDIA GPU架构是建立在一个可扩展的多线程流处理器(SMs)阵列之上的.当一个在主机CPU的CUDA程序调用一个核函数时,网格的blocks分配给运行容量空闲的多核处理器计算.线程块的线程同时在多核处理器上执行,多个线程块能同时在一个多核处理器上执行.当线程块结束时,新的线程块会加载到空出的多核处理器上. 一个多核处理器被设计成能同时执行数以百计的线程.为了管理这样大容量的线程,GPU使用一个在SIMT架构描述的叫SIMT(单个指令,多个线程)的独特架构.在单个线程中,指令是流水的去利用

Matlab与.NET基于类型安全的接口混合编程入门

原文:[原创]Matlab与.NET基于类型安全的接口混合编程入门 如果这些文章对你有用,有帮助,期待更多开源组件介绍,请不要吝啬手中的鼠标. [原创分享]Matlab.NET混编调用Figure窗体 http://www.cnblogs.com/asxinyu/archive/2013/04/14/3020813.html [原创]开源.NET下的XML数据库介绍及入门  http://www.cnblogs.com/asxinyu/archive/2013/03/25/2980086.htm