OpenHero 开勇

Open heart, bravely fly!

用户操作
[即时聊天] [发私信] [加为好友]
赵开勇ID:OpenHero
236414次访问,排名274好友187人,关注者199
OpenHero的文章
原创 240 篇
翻译 2 篇
转载 51 篇
评论 469 篇
OpenHero 开勇的公告
最近评论
bearfish:请问怎么设置环境变量。没玩过vs2005。嘿嘿
多谢多谢
zjxzou:赞~
OpenHero:一块显卡就够了~cuda2.0还不支持sli
showshong:请问必须要用一块显卡来做显示用吗?

CUDA2.0支持SLI吗?
happy_baby_me:GeForce 9800GTX2, GeForce gtx 260 280没在清单里好像。。它们都支持CUDA编程地吧: )
文章分类
收藏
    相册
    MetaWeblog API
    相册
    自己
    参与的开源项目
    Scilab Robotics Toolbox
    常去的几个地方
    Robocup 机器人足球官方站点
    RTSJ
    感兴趣的开源项目
    Flash得开源代码
    Robocup server
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    翻译 GPU NVIDIA_CUDA_Programming_Cuide_1.0 Chapter 4. Application Programming Interface收藏

    新一篇: 2007 11.29 晴 风大 | 旧一篇: C语言中的小细节

    4.1 An Extension to the C Programming Language 

    CUDA 平台的编程接口主要是为了方便使用C语言在device(显卡)硬件平台上编写运行程序。

    它的扩展包括:

    1.对于C语言的很少的扩展,将在Section 4.2 详细描述,主要是为了方便编程人员把程序在Device上运行起来。

    2.运行时的library包括一下几个部分:

    1)(host)主体部分,运行在主机上,提供访问和控制多个计算平台(device)的功能。(在Section 4.5有详细描述)

    2)运算平台(device)模块,运行在平台层,针对不同平台,提供不同的访问调用。(在Section 4.4有详细描述)

    3)普通组件模块,提供主体和运算平台都支持的,内嵌的矢量类型和C语言的标准数据类型。(在Section 4.3有详细描述)

    这里需要强调的是,只有普通组件模块支持的C语言标准函数,才能在平台上运行。

    4.2 Language Extensions

    C语言进行了以下4个部分的扩展:

    1.函数调用类型,规定函数是否在host 或者device上运行,是否能够被host或者device调用。(在Section 4.2.1有详细描述)

    2.规定了变量的位置,规定了变量在device的内存位置。(Section 4.2.2)

    3.一种新的调用方法,指明kernel是怎么通过hostdevice上调用的。(Section 4.2.3);

    4.4种内嵌的类型(CUDA 特有的类型)grid(栅格),block demensionsblock(块),thread indices(线程id一类的东东)

    包含了这些扩展的源文件都必须通过CUDA的编译器nvcc来编译。(Section 4.2.5)。对于nvcc得详细的描述可以在别的文档中找到。

    接下来的部分对每种扩展都进行了详细的说明。如果没有违法了详细说明中的规定,nvcc会提示错误或者警告,但是有些遗漏还是不能被检查到。

    4.2.1 Function Type Qualifiers 函数类型

    4.2.1.1 __device__

    __device__ 规定的函数:

    device上执行。

    只能在device上调用。

    4.2.1.2 __global__

    __global__ 定义了一个kernel函数:

    device上运行。

    只能在host上调用

    4.2.1.3 __host__

    __host__定义的函数:

    host上运行,

    只能在host上调用。

    没有定义__host____device__或者__global__的函数等同于__host__函数,系统都会把函数编译成host函数。

    另外,__host__定义可以和__device__定义一起使用,编译器会把这个函数编译为hostdevice通用的函数。

    4.2.1.4 Restrictions (强调,限制)

    __device__函数通常是inlined

    __device____global__函数都不支持递归调用。

    __device____global__函数都不能定义static变量在函数内部。

    __device____global__函数不能包含有可变参数。

    __device__函数没有函数地址,也没有指向它的函数指针,但是__global__函数有。

    __global__定义和__host__定义不能一起使用。

    __global__函数必须是void返回类型。

    任何调用__global__的函数都必须指明运行配置。(Section 4.2.3

    __global__函数是异步调用的。在运行结束前就会返回。

    __global__函数的参数通常是采用共享内存,最多是265bytes

    4.2.2 Variable Type Qualifiers

     

    发表于 @ 2007年11月17日 08:36:00|评论(loading...)|编辑

    新一篇: 2007 11.29 晴 风大 | 旧一篇: C语言中的小细节

    评论:没有评论。

    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © OpenHero 开勇