至于题目中提到的有人将CUDA架构和x86的一样理解,这一定是错误的,如果说把GPU的架构和x86架构类比,这还有点道理。
要理解CUDA架构,个人认为应当先理解CUDA,CUDA是compute unit device architecture的简称,它统一了NVIDIA用于通用计算的GPU的编程模式,同时引入的共享存储器也是一大特色,大大提高了速度。有时我们说CUDA是指软件,有时又是指硬件,更多时是指CUDA C语言,因此本文将分三个部分简略的说明。
从软件的角度上说,CUDA软件栈包含两个层次,一个是驱动层的API,这类函数以cu开关,一个是运行层的API,以cuda开头,运行层API是建立在驱动层API之上的,是对驱动层API的封装,这种封装方便了使用,但是同时也牺牲了灵活性。一般而言,我们的开发都是优先使用运行时API。要提到的是:NVIDIA自身也提供了一些建立在这两者之上的库,供大家使用。
Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE
从另外一个方面说,CUDA的软件架构也应当包含这一系列的语言支持。当然这只是个人观点,欢迎大家讨论。
从硬件的角度看,CUDA架构应当包含TPC-->SM-->SP结构及它们的关系。各种存储器及其组织,以及硬件对线程的创建、执行、调度等,本人博客将会专门细说这个问题,所以也就不详细说了。
从CUDA C语言的角度看,CUDA的架构包括函数修饰符,变量修饰符,以及一些内置函数等,这方面内容本人的博客将会详细说明,因此,此处就不多说了。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23057064/viewspace-624392/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/23057064/viewspace-624392/