技术开发 频道

OpenHero:看Nvidia CUDA 3.0 更新

  【IT168 文档】3.0的更新期待一些新特性,但是总体变化不大,倒是3.0的guide比较不错,可以好好的坎坷chapter3,里面有很多很详细的讲解,有时间可以多看看那一部分。

  - Section 1.2

  - Updated figure

  添加了说明图,更好的解释了CUDA不只是一个语言,而是一个平台,一个platform,可以在CUDA之上可以架构其他语言平台,或则编程环境。CUDA有自己的ISA架构,有PTX代码,所以不要简单的把CUDA理解为是编程语言,可以根据CUDA的架构开发自己的芯片,或者硬件,当然,这个得要有详细的CUDA资料才行·~至少现在还不能。。。

  - Section 2.5

  - Mentioned the Fermi architecture

  说明了Fermi是2.x的架构,在他之前的都是1.x的架构。Fermi算是一个进步吧。

  - Section 3.1

  - Heavily rewritten to clarify binary, ptx, application, C++ compatibility

  - __noinline__ behaves differently for compute capability 2.0 and higher

  介绍了NVCC和binary,ptx和应用程序,还有C++的关系;CUDA的kernel程序可以用CUDA的指令来写,这个类似汇编的指令就是PTX,PTX可以从它的手册里面找到更详细的介绍;

  3.1.1 部分详细介绍了nvcc的编译过程,怎么把CU文件或者CUDA的程序编译成目标文件,怎么把C/C++语言的部分提交给C或者C++的编译器编译。

  3.1.2 说明了二进制文件的情况,说明了code代表的意思,说明例如1.3的标示说明这个二进制的文件是在1.3的硬件或者之后的硬件上才能运行。

  3.1.3 简单说明了一下PTX的指令一般都可以执行,但是有些指令只能在更高的硬件设备上才能执行;

  3.1.4 说明了不同的版本的二进制文件和ptx代码,在将来的硬件上执行的情况,当然手册推荐采用PTX代码格式,以后就可以在运行的时候自动转义过去,这样就可以适应更新的特性,因为其实现在的一些硬件在编译一条ptx指令的时候,可能真正的在硬件方面其实使用了更多的指令,因为还不支持原生态的ptx指令,当以后的ptx指令可以一条执行的时候,就会发生变化,所以这个地方提出了说明;

  3.1.5

  说明了一些支持的C++的特性,不是所有的C++都能支持,可以在后面的附录中查到;

  - Section 3.2

  - Clarified that a CUDA context is created under the hood when initializing

  the runtime and therefore CUDA resources are only valid in the context of

  the host thread that initialized the runtime

  - Updated graphics interoperability sections to new API

  说明了现在的CUDA运行的每一个资源都在他的同一个context里面,这个后面也会说道,一个thread 控制一个GPU运行;

  - Section 3.2.1

  - Mentioned 40-bit address space for devices of compute capability 2.0

  2.0的硬件设备有了40bit的寻址能力;

  - Section 3.2.5.3

  - Mentioned atomics to mapped page-locked memory

  说明了page-locked的内存在原子操作跟从host或则其他设备来讲,并不是安全的原子操作;

  - Section 3.2.6

  - Added concurrent kernel execution and concurrent data transfer for devices

  of compute capability 2.0

  以前只能一次一次的执行kernel函数,现在可以一次执行多个kernel函数;

  - Section 3.3

  - Updated graphics interoperability sections to new API

  后面部分就是一些新的函数

  - New Section 3.4 about interoperability between runtime and driver APIs

  - Chapter 4 and 5 mostly rewritten with additional information

  - Part of appendix A moved to new appendices G with additional information

  - Section B.1.4

  - Mentioned that kernel parameters are passed via constant memory for

  devices of compute capability 2.0

  - Section B.6

  - Added new functions __syncthreads_count(), __syncthreads_and(), and

  __syncthreads_or()

  - Section B.10

  - Mentioned atomics to mapped page-locked memory

  - Section B.11

  - Added new functions __ballot()

  - New Section B.12 on profiler counter function

  - New Section B.14 on launch bounds

  - Section C.1.1

  - Updated error for some functions

  - Updated based FMAD being fused for compute capability 2.0

  - Section C.1.2

  - atomicAdd works with single-precision floating-point numbers for devices

  of compute capability 2.0

  - Updated error for some functions

  - Section C.2.1

  - Added new functions

  - Section C.2.2

  - Added new functions

  - New Section D.6 about classes with non virtual member functions for devices

  of compute capability 2.0

  - New appendix E for nvcc specifics (moved __noinline__, #pragma unroll to this

  appendix and added __restrict)

0
相关文章