用户
 找回密码
 立即注册
发表于 2013-10-29 15:06:49
玫瑰幻想 发表于 2013-10-29 14:47
那个是是否启用调试信息,是否-G才是影响性能的关键。

至于-O2, 有没有无所谓其实,默认会启用的(-O2或 ...

果然如此,generate  GPU  debug information选择“否”的情况(约80ms)下果然要比-g(约170ms)的性能好,可是速度依然比runtime api 在release配置下(约70ms),也就是generate  GPU  debug information选择“否”的情况下慢10ms。那这个问题出错在哪呢,劳烦玫瑰版主解惑。
使用道具 举报 回复 支持 反对
发表于 2013-10-29 15:10:29
wch8802 发表于 2013-10-29 15:06
果然如此,generate  GPU  debug information选择“否”的情况(约80ms)下果然要比-g(约170ms)的性 ...

您还有更多选择可以调节的,

请您查看use_fast_math选项是否为真。

如果启用该选项,将降低您的计算精度,但可以进一步的提高您的代码速度。

请您查看这个。
使用道具 举报 回复 支持 反对
发表于 2013-10-29 16:21:26
本帖最后由 wch8802 于 2013-10-29 16:23 编辑
玫瑰幻想 发表于 2013-10-29 15:10
您还有更多选择可以调节的,

请您查看use_fast_math选项是否为真。

没什么提升(是不是use_fast_math是主机端的选项,我测得是内核函数的时间,所以没什么提升)。。。试了好多属性配置都没什么提升。。。求玫瑰版主救我于苦海!!!
使用道具 举报 回复 支持 反对
发表于 2013-10-29 16:36:59
wch8802 发表于 2013-10-29 16:21
没什么提升(是不是use_fast_math是主机端的选项,我测得是内核函数的时间,所以没什么提升)。。。试了好 ...

use_fast_math是如假包换的device端选项,请勿怀疑。
使用道具 举报 回复 支持 反对
发表于 2013-10-29 16:54:24
ice 发表于 2013-10-29 16:36
use_fast_math是如假包换的device端选项,请勿怀疑。

那是我理解错了,但是use_fast_math不是在CUDAC/C++里Host里的选项,这里的HOST是什么意思呢?
使用道具 举报 回复 支持 反对
发表于 2013-10-29 17:17:37
wch8802 发表于 2013-10-29 16:54
那是我理解错了,但是use_fast_math不是在CUDAC/C++里Host里的选项,这里的HOST是什么意思呢? ...

LZ您好:

use_fast_math是NVCC的一个参数,您可以在NVCC的手册中看到。

以及您可以在CUDA C Programming Guide中的Mathematical Functions章节看到相关的介绍(使用之后一些数学函数的精度变化等)。

至于为什么会放置在VS里面的CUDA设置的host选项下,这个我没有研究过,或许NV认为这个参数是和host端有关的或者是由host端设置并影响device端全局的。

大致如此,祝您好运~
使用道具 举报 回复 支持 反对
发表于 2013-10-29 18:13:30
那不可能。完全一样的代码,一样的编译参数,无论用driver api还是runtime api将得到完全一样的运行时间。

除非您前面的2个因素之一有区别。请您检查这点。
(例如上文说的编译参数,以及计算能力等,都是有关参数,如果完全一样,不可能时间不同)
使用道具 举报 回复 支持 反对
发表于 2013-10-30 09:39:49
本帖最后由 wch8802 于 2013-10-30 09:43 编辑
横扫千军 发表于 2013-10-29 18:13
那不可能。完全一样的代码,一样的编译参数,无论用driver api还是runtime api将得到完全一样的运行时间。
...

我想起横扫版主和ICE版主曾经对我说内核函数初次运行会花部分时间初始化,我的驱动程序没有避开第一次,更没有多次循环求平均值,我也懒得改程序,于是我想那就用profiler测测,他是自动进行多次测时间并求平均值,于是我就用profiler测driver api程序,但是没有timeline,我就查看console选项卡下的显示。

以前我认为console下的信息应该是和.exe显示的信息一模一样,但是令我诧异的是有个信息不一样,那就是我打印出的时间,在.exe中显示是约86ms,但是在profiler的console下显示的是约76ms(和理论相当),我虽然和高兴,但是有一点不解,console下的信息难道不应该是按照我程序执行吗,应该和.exe时间一样并且内核函数执行一次,难道console这里的测得时间已经在我不知情的情况下幕后经过多次测量求平衡值了吗?
使用道具 举报 回复 支持 反对
发表于 2013-10-30 09:56:34
wch8802 发表于 2013-10-30 09:39
我想起横扫版主和ICE版主曾经对我说内核函数初次运行会花部分时间初始化,我的驱动程序没有避开第一次,更 ...

没看懂你在说什么和你想说什么。

以及,你居然没用profiler测试时间,就简单的说我的时间是多少多少,真心很自信。我拒绝对此进行任何评价。

以及,driver api也一样可以用profiler的,请您在您的程序结束前加上:
cuCtxSynchronize();
cuCtxDestroy(你的Context);

感谢一大早来访。
使用道具 举报 回复 支持 反对
发表于 2013-10-30 10:33:15
本帖最后由 wch8802 于 2013-10-30 10:46 编辑
横扫千军 发表于 2013-10-30 09:56
没看懂你在说什么和你想说什么。

以及,你居然没用profiler测试时间,就简单的说我的时间是多少多少,真 ...

好吧,我错了,加过以后,为什么profiler没有timeline呢?
使用道具 举报 回复 支持 反对
发新帖
您需要登录后才可以回帖 登录 | 立即注册