O*******d 发帖数: 20343 | 1 前段时间在研究CUDA,写了一个练习用的屏保。下边是截屏图。 图形是动画的。 根据
你的显卡的能力,在1920x1080屏幕上,图像帧频可以自动从15赫兹到60赫兹变换。我
用的GeForce8600GTS,图像每秒可以更新15次。 最近换了GeForce460 图像更新每秒50
次。 图形是低频的Perlin Noise。 以前写过一个CPU的类似屏保,但QuadCore的CPU
计算一幅图像要1.5秒左右,还是用了OpenMP,但也无法实现实时动画。 用GPU计算,
只需要20毫秒即完成。 现在这个屏保只能在NVidia显卡上运行,准备过段时间把这个
屏保改成OpenCL的,就可以在NVidia和ATI的显卡上运行了
下载链接
http://www.mediafire.com/?7cgkd6kn374941h |
a***e 发帖数: 27968 | 2 u try to get a screensaver that
consume more power than you are play video game?
it sounds more last a screenburner.
50
CPU
【在 O*******d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 前段时间在研究CUDA,写了一个练习用的屏保。下边是截屏图。 图形是动画的。 根据 : 你的显卡的能力,在1920x1080屏幕上,图像帧频可以自动从15赫兹到60赫兹变换。我 : 用的GeForce8600GTS,图像每秒可以更新15次。 最近换了GeForce460 图像更新每秒50 : 次。 图形是低频的Perlin Noise。 以前写过一个CPU的类似屏保,但QuadCore的CPU : 计算一幅图像要1.5秒左右,还是用了OpenMP,但也无法实现实时动画。 用GPU计算, : 只需要20毫秒即完成。 现在这个屏保只能在NVidia显卡上运行,准备过段时间把这个 : 屏保改成OpenCL的,就可以在NVidia和ATI的显卡上运行了 : 下载链接 : http://www.mediafire.com/?7cgkd6kn374941h
|
c********l 发帖数: 8138 | 3 哈哈,我也觉得是
不过楼主的技术值得称赞!
【在 a***e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : u try to get a screensaver that : consume more power than you are play video game? : it sounds more last a screenburner. : : 50 : CPU
|
M********y 发帖数: 1964 | 4 有64位版么?
50
CPU
【在 O*******d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 前段时间在研究CUDA,写了一个练习用的屏保。下边是截屏图。 图形是动画的。 根据 : 你的显卡的能力,在1920x1080屏幕上,图像帧频可以自动从15赫兹到60赫兹变换。我 : 用的GeForce8600GTS,图像每秒可以更新15次。 最近换了GeForce460 图像更新每秒50 : 次。 图形是低频的Perlin Noise。 以前写过一个CPU的类似屏保,但QuadCore的CPU : 计算一幅图像要1.5秒左右,还是用了OpenMP,但也无法实现实时动画。 用GPU计算, : 只需要20毫秒即完成。 现在这个屏保只能在NVidia显卡上运行,准备过段时间把这个 : 屏保改成OpenCL的,就可以在NVidia和ATI的显卡上运行了 : 下载链接 : http://www.mediafire.com/?7cgkd6kn374941h
|
O*******d 发帖数: 20343 | 5 还没有。 这个32位版可以在64位机器上运行。
【在 M********y 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 有64位版么? : : 50 : CPU
|
O*******d 发帖数: 20343 | 6 这个屏保相当不环保。 基本把显卡的GPU潜力挖尽。
【在 a***e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : u try to get a screensaver that : consume more power than you are play video game? : it sounds more last a screenburner. : : 50 : CPU
|
M********y 发帖数: 1964 | 7 提示说cudart_32.dll missing
【在 O*******d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 还没有。 这个32位版可以在64位机器上运行。
|
O*******d 发帖数: 20343 | 8 你需要下载cudart_32.dll。 这个dll是CUDA的runtime。 最简单的就是下载全套CUDA
SDK
【在 M********y 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 提示说cudart_32.dll missing
|
l*****e 发帖数: 276 | |
O*******d 发帖数: 20343 | 10 运行开始后,有一个叫test2.txt的文件被产生或更新。 其内容如下
15.518912 18.481120
15.595360 18.413234
18.680639 24.259508
15.684287 19.304968
15.714080 21.223647
15.708960 19.361958
timer 22, TimerScaleFactor 2.666667
前六排的第一个数字是计算一幅图像GPU运行时间,单位是毫秒。 第二个数字是一幅图
像的总时间,包括图像的后处理和显示。 timer 22的意思是刷屏一次要用22毫秒。用
的是上边6次的平均值区间化。 这个数字可以用来判断你的显卡的GPU能力。 |
|
|
N****w 发帖数: 21578 | 11 这个是不是比较耗电...hehe
50
CPU
【在 O*******d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 前段时间在研究CUDA,写了一个练习用的屏保。下边是截屏图。 图形是动画的。 根据 : 你的显卡的能力,在1920x1080屏幕上,图像帧频可以自动从15赫兹到60赫兹变换。我 : 用的GeForce8600GTS,图像每秒可以更新15次。 最近换了GeForce460 图像更新每秒50 : 次。 图形是低频的Perlin Noise。 以前写过一个CPU的类似屏保,但QuadCore的CPU : 计算一幅图像要1.5秒左右,还是用了OpenMP,但也无法实现实时动画。 用GPU计算, : 只需要20毫秒即完成。 现在这个屏保只能在NVidia显卡上运行,准备过段时间把这个 : 屏保改成OpenCL的,就可以在NVidia和ATI的显卡上运行了 : 下载链接 : http://www.mediafire.com/?7cgkd6kn374941h
|
O*******d 发帖数: 20343 | 12 是的。GPU计算都比较费电。 在我的系统上,要多费电100瓦。
【在 N****w 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 这个是不是比较耗电...hehe : : 50 : CPU
|
h********o 发帖数: 152 | |
a***a 发帖数: 40617 | 14 。。。。。。。
【在 O*******d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 是的。GPU计算都比较费电。 在我的系统上,要多费电100瓦。
|
d**o 发帖数: 864 | 15 牛啊...
我这两天也在想用GPU写一个数值积分的算法...
GPU编程太伤脑筋了.
50
CPU
【在 O*******d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 前段时间在研究CUDA,写了一个练习用的屏保。下边是截屏图。 图形是动画的。 根据 : 你的显卡的能力,在1920x1080屏幕上,图像帧频可以自动从15赫兹到60赫兹变换。我 : 用的GeForce8600GTS,图像每秒可以更新15次。 最近换了GeForce460 图像更新每秒50 : 次。 图形是低频的Perlin Noise。 以前写过一个CPU的类似屏保,但QuadCore的CPU : 计算一幅图像要1.5秒左右,还是用了OpenMP,但也无法实现实时动画。 用GPU计算, : 只需要20毫秒即完成。 现在这个屏保只能在NVidia显卡上运行,准备过段时间把这个 : 屏保改成OpenCL的,就可以在NVidia和ATI的显卡上运行了 : 下载链接 : http://www.mediafire.com/?7cgkd6kn374941h
|
g*******g 发帖数: 9753 | 16 这个耗的也太狠了
你看看有没有优化的办法
【在 O*******d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 是的。GPU计算都比较费电。 在我的系统上,要多费电100瓦。
|
j*******g 发帖数: 79 | 17 好啊
现在一提并行就是cuda
楼主 有没有想过opencl什么的 |
O*******d 发帖数: 20343 | 18 准备把这个屏保改成OpenCL。
【在 j*******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 好啊 : 现在一提并行就是cuda : 楼主 有没有想过opencl什么的
|
O*******d 发帖数: 20343 | 19 这个没有办法。 GPU有几十个到几百个处理器平行计算。 只要计算,就会耗电。
越快的显卡,耗电越大。 其实同样的计算量,GPU比CPU省电。因为GPU硬件
优化了浮点数计算。 比如说我这个程序,在100瓦的计算功率下,每20毫秒即可
计算出一幅图像,而使用4核CPU,耗电50瓦,计算一幅图像需要1.5秒。 使用
GPU的目的是为了大量快速计算,大量计算就费电了。现在的GPU计算速度已经
和80年代的超级计算机相当了。
【在 g*******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 这个耗的也太狠了 : 你看看有没有优化的办法
|
O*******d 发帖数: 20343 | 20 平行计算,需要理解两个概念。 一个是数据平行,每一个点数据的计算和
其他点数据无关。我用的就是数据平行。 图形中的每一个点的计算都是独
立的,由该点的x,y,z来决定的。 另一个概念是任务平行,就是把一个大任
务分割成几个互相独立的小任务,送到多个处理器平行处理。 比如说,
memcpy这个C函数,如果copy的数据巨大,可以分成几个小区间的memcpy,
分给几个处理器去平行操作。
【在 d**o 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 牛啊... : 我这两天也在想用GPU写一个数值积分的算法... : GPU编程太伤脑筋了. : : 50 : CPU
|
|
|
t**o 发帖数: 840 | |
D**i 发帖数: 190 | 22 对于液晶屏,所谓的ScreenSaver都是ScreenBurner
但楼主这个是Video Card Burner
【在 a***e 的大作中提到】![](/moin_static193/solenoid/img/up.png) : u try to get a screensaver that : consume more power than you are play video game? : it sounds more last a screenburner. : : 50 : CPU
|
m*p 发帖数: 1331 | |
T****n 发帖数: 6187 | 24 牛,能显示帧数吗?可以作为测cude的软件
50
CPU
【在 O*******d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 前段时间在研究CUDA,写了一个练习用的屏保。下边是截屏图。 图形是动画的。 根据 : 你的显卡的能力,在1920x1080屏幕上,图像帧频可以自动从15赫兹到60赫兹变换。我 : 用的GeForce8600GTS,图像每秒可以更新15次。 最近换了GeForce460 图像更新每秒50 : 次。 图形是低频的Perlin Noise。 以前写过一个CPU的类似屏保,但QuadCore的CPU : 计算一幅图像要1.5秒左右,还是用了OpenMP,但也无法实现实时动画。 用GPU计算, : 只需要20毫秒即完成。 现在这个屏保只能在NVidia显卡上运行,准备过段时间把这个 : 屏保改成OpenCL的,就可以在NVidia和ATI的显卡上运行了 : 下载链接 : http://www.mediafire.com/?7cgkd6kn374941h
|
M********y 发帖数: 1964 | 25 这个建议好,同顶一下。
【在 T****n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 牛,能显示帧数吗?可以作为测cude的软件 : : 50 : CPU
|
j*******g 发帖数: 79 | 26 牛呀 等待opencl 我也最近正研究 message passing 类的 learning 算法如何并行实
现 不知道选 cuda 还是 opencl
【在 O*******d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 准备把这个屏保改成OpenCL。
|
t****t 发帖数: 6806 | 27 我能不能问一下你这感叹是从哪里来的?
【在 m*p 的大作中提到】![](/moin_static193/solenoid/img/up.png) : sigh, 不知道是哪国的教育失败
|
z****c 发帖数: 602 | |
O*******d 发帖数: 20343 | 29 运行开始后,有一个叫test2.txt的文件被产生或更新。 其内容如下
15.518912 18.481120
15.595360 18.413234
18.680639 24.259508
15.684287 19.304968
15.714080 21.223647
15.708960 19.361958
timer 22, TimerScaleFactor 2.666667
前六排的第一个数字是计算一幅图像GPU运行时间,单位是毫秒。 第二个数字是一幅图
像的总时间,包括图像的后处理和显示。 timer 22的意思是刷屏一次要用22毫秒。用
的是上边6次的平均值区间化。 这个数字可以用来判断你的显卡的GPU能力。 记录的
刷屏时间范围从15毫秒到60毫秒, 超出范围的都收在范围的边界上, 不是真实值。 但GPU时间是真实的。
【在 T****n 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 牛,能显示帧数吗?可以作为测cude的软件 : : 50 : CPU
|
O*******d 发帖数: 20343 | 30 CUDA只能在NVidia显卡上运行。 OpenCL应该可以在NVidia和ATI的显卡上运行。
【在 j*******g 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 牛呀 等待opencl 我也最近正研究 message passing 类的 learning 算法如何并行实 : 现 不知道选 cuda 还是 opencl
|
|
|
O*******d 发帖数: 20343 | 31 可以公开。 等我把我的个人信息去掉再公开。 整个计算稍微复杂。分三步, 首先计
算Perlin Noise。 然后做Bicubic Interpolation进行插值。 一共插4个值,然后赋予
颜色,再把4个颜色值平均,就是最后的像素颜色。 做三次方插值是为了antialiase。
但计算时间多了一倍。 你可以注意到图形曲线是非常平滑没有锯齿的。 按空格键可
以截屏存成jpg文件。
【在 z****c 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 挺好,有没有计划公开源代码?
|
O*******d 发帖数: 20343 | |
m****s 发帖数: 1481 | 33 memcpy实际上还是数据并行,而且这个受memory bandwidth局限,不是最能体现GPU加
速的任务。
任务并行应该是多核cpu的意思,不同的核干不同的活,有的画图,有的算物理这样。
不过gpu在任务并行上也有局限,不是所有的核都能完全独立干活的,不管n家还是a家
,都是16/32个核得干一样的事情。gpu最佳的任务还是数据并行,并且要有足够大的计
算/读内存比来饱和核计算量
【在 O*******d 的大作中提到】![](/moin_static193/solenoid/img/up.png) : 平行计算,需要理解两个概念。 一个是数据平行,每一个点数据的计算和 : 其他点数据无关。我用的就是数据平行。 图形中的每一个点的计算都是独 : 立的,由该点的x,y,z来决定的。 另一个概念是任务平行,就是把一个大任 : 务分割成几个互相独立的小任务,送到多个处理器平行处理。 比如说, : memcpy这个C函数,如果copy的数据巨大,可以分成几个小区间的memcpy, : 分给几个处理器去平行操作。
|