楼主: 图腾部落

第三期有奖话题:“晒晒”你的CUDA开发经历!{活动结束获奖名单已公布}

[复制链接]
论坛徽章:
102
11#
发表于 2009-12-28 13:43 | 只看该作者
没碰过,不是开发者,来学习一下

使用道具 举报

回复
论坛徽章:
15
授权会员
日期:2010-01-05 14:58:28双黄蛋
日期:2012-03-25 22:10:18灰彻蛋
日期:2012-03-18 14:20:52蛋疼蛋
日期:2012-02-22 22:11:11双黄蛋
日期:2011-08-13 11:17:36咸鸭蛋
日期:2011-06-11 16:17:492011新春纪念徽章
日期:2011-02-18 11:43:362010广州亚运会纪念徽章:游泳
日期:2011-01-25 17:27:022011新春纪念徽章
日期:2011-01-04 10:38:442010广州亚运会纪念徽章:体育舞蹈
日期:2010-12-21 13:03:08
12#
发表于 2009-12-28 13:44 | 只看该作者
没有CUDA开发经验,能帮忙解释下CUDA吗?
学习了。。。谢谢!

使用道具 举报

回复
论坛徽章:
0
13#
发表于 2009-12-28 16:04 | 只看该作者
数字图像文件是8bit的,用char读入。
用作卷积的算子是float的,在设备中计算的处理结果也是float的。
但数字图像处理完成后要求的输出也是8bit的。这样,就需要在float和char之间进行转换。
但这个转换放在host端,试了一下效率很低,因为float和char之间进行转换是串行的。
但在设备端,该怎样进行float和char之间转换呢?
如果新开一个数组的话,由于图像很大,对设备显存是很大的考验。
大家是如何解决这个问题的呢?

使用道具 举报

回复
论坛徽章:
0
14#
发表于 2009-12-28 16:15 | 只看该作者
原帖由 tiantianHui 于 2009-12-28 16:04 发表
数字图像文件是8bit的,用char读入。
用作卷积的算子是float的,在设备中计算的处理结果也是float的。
但数字图像处理完成后要求的输出也是8bit的。这样,就需要在float和char之间进行转换。
但这个转换放在host端,试了一下效率很低,因为float和char之间进行转换是串行的。
但在设备端,该怎样进行float和char之间转换呢?
如果新开一个数组的话,由于图像很大,对设备显存是很大的考验。
大家是如何解决这个问题的呢?



for(int nRow = 0; nRow < image_height; nRow++)
{
    for(int nCol = 0; nCol < image_width; nCol++)
    {
        作转换工作
    }
}

使用道具 举报

回复
论坛徽章:
5
生肖徽章2007版:狗
日期:2009-11-16 18:46:472010新春纪念徽章
日期:2010-01-04 08:33:082010新春纪念徽章
日期:2010-03-01 11:08:242010年世界杯参赛球队:英格兰
日期:2010-06-30 13:44:482010年世界杯参赛球队:美国
日期:2010-07-14 18:14:23
15#
发表于 2009-12-28 16:46 | 只看该作者
CUDA 了解甚少,但若是对我们有用益的话,还是会关注的

使用道具 举报

回复
论坛徽章:
0
16#
发表于 2009-12-28 18:55 | 只看该作者
我顶啊!  毕业设计就是关于GPU的 呵呵 不过很简单 就是串行的该为并行的 在比较一下提高了多少加速比就好了 不过还是想和大家多学点东西.
推荐一个我们的考试题目,某个网站上有很多国家的地图资料,每个城市的信息被单独存储,它与其它城市的距离等基本信息,我们的题目是用CUDA编程通过算法来找出任意一个城市到另一城市的最短路径,这里面涉及CUDA编程和算法的知识,网站上最小的一个国家也有200多个城市,算起来超麻烦,我觉得至少可以作为参考,建立一个虚拟城市,把主要建筑和道路的信息存进数据库,然后算出从任意一所建筑到达医院的最短距离,看谁编的程序用时最短。
这考试的资料没在我手头上,是个外国网站存的地图信息,需要的话我去找。我们做PROJET的那页纸还是没找到,我只记得地图信息是TSPLIB的,是商用旅行问题,地图信息应该在http://www.zib.de/besucher/index.en.html    当时这个PROJET我没做出来,因为不知道用CUDA怎么去读取这些地图的源文件,只知道原理,这里面的地图信息,每个城市是一个节点,城市之间连接的是路径,路径的数值就是距离,要求我们用CUDA编程来寻找任意一个城市到另一个城市的距离,并与CPU计算的时间作比较,地图随便选,起始地点要求是随机。希望可以作一下参考。打错字了,要找的是最短距离,所以需要选择一种算法,然后用CUDA编出来,因为不同算法的复杂度不同,寻找路径的能力也不同,所以总的说起来挺难的,不管什么算法也只能尽量保证在最短的时间找到的是最短路径,一般来说找到的不一定是最短.

使用道具 举报

回复
论坛徽章:
0
17#
发表于 2009-12-28 19:01 | 只看该作者
[CUDA][开发]怎样配置CUDA开发环境异常解决方法:

使用道具 举报

回复
论坛徽章:
0
18#
发表于 2009-12-28 19:14 | 只看该作者
cuda程序在Mac OS下调试的问题:
我有一个project移植到MAC OS上,显示写了makefile,在MAC下编译通过,运行良好
后来因为要添加新功能,需要进行调试,为方便调试,建立了Xcode project,编译通过,生成的执行文件运行良好。
但是在我进入debuger后,试图跟踪程序运行时,输出以下错误:

Running…
dyld: Library not loaded: /Volumes/Builds/nv/build/rel/gpu_drv/r180/r180_00/drivers/gpgpu/bin/i386_Darwin_release/libcuda.dylib
  Referenced from: /Users/bmiaccount/MacDecoder/exe/debug/batchdecode
  Reason: image not found
Program received signal:  “SIGTRAP”.
Xcode: Introspection dylib not loaded because thread 1 has function: __dyld_dyld_fatal_error on stack
warning: Couldn't find minimal bounds for "_sigtramp" - backtraces may be unreliable
(gdb)

请问是什么回事?
编译中设置的library路径在/usr/local/cuda/lib/**
难道要在/Volumes/Builds/nv/build/rel/gpu_drv/r180/r180_00/drivers/gpgpu/bin/i386_Darwin_release/下复制一套cude lib?
gdb为什么到那里去找dylib?
应该在哪里修改project设置?

使用道具 举报

回复
论坛徽章:
0
19#
发表于 2009-12-28 19:21 | 只看该作者

CUDA编程接口API总结:

1.通用的一些接口,数学函数,时间函数,同步函数,原子操作;
2.控制Device的函数;就是得到设备信息,管理设备信息的函数。设置那块显卡工作,得到那块显卡的性能。这里有分为driver级别的API和runtime级别的API;有人会问什么是driver级别和runtime级别driver级别的API就是提供驱动级别的API,就像写驱动一样的感觉。Runtime级别的API就是封装了一些Driver级别的API,按照一些常规的方法封装了一些底层的API。其实这里就像我们平时生活中一样,最开始对汽车不熟悉的时候,买一辆车回来能开就ok了;能用熟悉 Runtime级别的API就行了。慢慢的,感觉汽车自带的音箱不好,自己就开始买一些原始设备回来改装车;慢慢的感觉整车都有点不爽了,然后慢慢的发现想修改发动机,修改外形……就开始改装车了,这样的工作,就得从Driver级别开始做了,玩得更高级一些的就自己设计图纸,自己来用一些零部件来组装车了。这就是Driver API和Runtime API的关系。Runtime的在开始的用起来一般都比较方便,慢慢的发现如果高层(high-level)的Runtime API用起来不方便,就用底层(low-level)的Driver API来自己做改装的车……
3.内存管理,host 的内存,device的内存,global的内存,constant第,shared的,这里会分出来一章单独讲Texture(纹理)内存的使用,说实在的Texture也是内存~非要搞那么神秘,没办法,也只好拿出来单讲……PS:内存管理也分为Runtime级别的API接口,和Device级别的 API接口。

  4.程序运行控制:像Stream,Event,Context, Module, Execution control这样的咱都把归类到运行管理的。这里也得分清楚有Runtime级别的,也有Driver级别的。

  5.好了,这里就剩下OpenGL 和Direct3D的接口函数了,其实把,这也是为了方便做图来用的,主要是OpenGL和DX都已经成了图形显示方面的标准,so~显卡也得照顾这两个东东了,要不然显卡自己画……hoho要是真自己再来实现OpenGL或者DX,CUDA就真的会头大了,hoho~~还好就借用现有的图形显示的程序来做就行了。牛顿人家都说是站在“牛头人”(巨人)的肩膀上才能看得更远……咱也不要非自己费那么大的经去做一些无用功。想想吃不饱的时候没看到多少人减肥的,倒是现在吃得好了,减肥的人多了……长胖了去健身房减肥,始终感觉有点怪怪的……拿钱去做无用功,(有用功就是减肥)不过现在也有人在做实验,把多余的这些减肥的人的能量转化为电力……扯远了……提一下:他也有两个层次的API,有Runtime层次的,也有Driver层次的。

使用道具 举报

回复
论坛徽章:
0
20#
发表于 2009-12-28 19:26 | 只看该作者

CUDA编程不容易

日前,NVIDIA正式推出了在GeForce 8系列GPU上进行运算的全新体系架构“CUDA”,成为业界首个GPU用的C-编译器开发环境,不过开发人员在尝试后发现,CUDA编程的难度相当大。

Bryan O'Sullivan正在研究一个基于CUDA编译器的编译环境。他表示,CUDA的复杂性令人难以置信,迫使程序员不得不在三种不同的存储器类型、繁复的线程层次、无法自动完成多数任务的编译器之间苦苦挣扎。他在博客说:“细细阅读开发说明是非常有必要的,不然就无法理解CUDA是多么复杂,以及开发人员不得不同时记住多少不同的条条框框。”

德国开发人员Michael Suess正在研究有关并行计算的博士课题。他在自己的博客里提到了O'Sullivan的帖子,并引述了一位曾在IBM实习期间研究Cell处理器的学生对CUDA的看法。这位学生对CUDA的评论简单地说就是:“为Cell处理器开发程序简直太容易了。”

O'Sullivan和Suess都认为,政府机构和华尔街等组织无疑都会因为使用CUDA而“大大提速”,但这种技术还远远说不上很“亲切”。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表