GPU着色器运行速度不比CPU快?

时间:2015-04-21 01:23:48

标签: c# wpf pixel-shader

好的,我有一个JPG加载到WPF图像中(我有一个WriteableBitmap,我用它作为Image.Source)。这个JPG是10,000 x 5,000像素。我还能够将图像放大到200%,因此有效地,我可以达到20,000 x 10,000像素,即200万像素。对于涉及摄影扫描的应用程序,这些尺寸并非完全不同寻常。

在我的图片周围,我有10个网格,每个网格都应用了效果。效果编译为PS 3.0,因此应在GPU上运行。但是,我也有一个编译为PS 2.0的效果,因此只能在软件中运行。

简单的说法是,对于200万像素的图像,我的程序几乎停止了,它的速度太慢而无法使用。有趣的是,GPU效果似乎并不比CPU效果更快。我从我的英特尔高清4600 GPU升级到GeForce GTX 750,看看这是否会有所帮助,但同样,并不是真的明显更快。

对于像素着色,GTX 750的速度比英特尔4600快约5倍,因此我似乎在某处遗漏了某些东西。

我的CPU是Core i5 4570 @ 3.2GHz。我知道,软件着色器在这方面可能比在低端显卡上运行得更快,但我认为GTX 750应该至少比英特尔HD 4600快得多。

我的GTX 750拥有2GB内存,因此可以在显存中保存相当大的图像,并且在看GPU-Z时,它肯定可以填满打开一个大图像。

虽然在某个地方,我觉得我在某个地方遇到了瓶颈。如果这个显卡可以将着色器应用于每秒70帧的1920x1080屏幕,我认为它应该能够比每分钟更快地将着色器应用于20,000 x 10,000图像?

很抱歉这篇长篇文章,但我想尝试清楚地说明我的问题是什么。我错过了什么吗?尽管图像太大,我是否应该获得更高的性能?

由于

加里

代码:

sampler2D inputSampler : register(S0);



/// <summary>The gamma correction exponent.</summary>
/// <minValue>0.5</minValue>
/// <maxValue>2</maxValue>
/// <defaultValue>0.8</defaultValue>
float Gamma : register(C3);


float4 main(float2 uv : TEXCOORD) : COLOR
{
    float4 c = tex2D(inputSampler, uv);
    c.rgb = pow(c.rgb, Gamma);


    return c;
}

0 个答案:

没有答案