CUDA做视频流处理时,CPU使用率和运行速度

我在使用CUDA做视频流处理时碰到两个问题,希望哪位高手能帮帮我,谢谢啦!

1: 在使用调用kenerl时,如调用func < < <dimGird,dimBlock>>>(…)时,为什么我测试发现反而CPU使用率会提升? 注释掉此行代码,即不启用内核时,CPU使用率保持不变。 即调用内核时,为什么会提升CPU使用率?(我是从0%提升到了25%!)

2: 我现在使用的是GF240M的显卡,有96个流处理器,我在使用单线程处理一个视频时,使用了16个block,那么我使用多线程并行调用内核,那么是不是应该我可以同时使用96/16=6个线程,并保持计算速度和内存都不变? 我现在测试时发现,CPU使用率在使用4个线程时是使用单线程时的4倍!而整个的运行速度是使用单线程时慢了3倍!内存也是4倍!

内存增加可以理解,但CPU使用率和运行速度的增加我就不明白了

呵呵!

1)启动kernel时,要执行cuda运行库来启动,因此cpu一时利用率上升是正常的,启动完了( <0.1ms)就该下降了.另外,如果执行cudaThreadSynchronize等待kernel执行完毕的话,cpu利用率会一直在100%,估计是cudaThreadSynchronize的实现问题.
2)现在的cuda,一个线程对应一个卡.如果你用多线程的话要有对应的多块独立的显卡.到fermi(GTX4xx)才支持不超过16个的kernel同时执行(根据N社资料)

能分享你的资料不?

您好,您能提供一下您的代码吗?我的毕设和这个差不多,但我是菜鸟。。。

很多讨论,特别是3-4年前的,请勿挖坟。谢谢!