我有一个代码可以对3D数组进行一些计算。该代码经过优化,可在GPU上运行。 3D数组基本上是一组2D数组。每个都存储在3D阵列的页面中。
为简单起见,让我们考虑整个代码为:
A = rand(512,512,100,'gpuArray');
B = fftshift(fftshift(fft2(fftshift(fftshift(A,1),2)),1),2);
其中512 * 512是每个2D数组的尺寸,而100是这些2D数组的数量。
在nVidia GTX 1060上,它需要x millisecond
来计算。
我试图将2D数组的大小更改为256*256
或128*128
,但不会发现性能提高。新时间是0.9*x milliseconds
左右。
此行为是可预期的,因为AFAIK,较小的阵列将无法充分利用GPU,并且许多内核将变为空闲。因此,这里没有真正的收获。
我的问题:
如果我购买了更好的GPU,例如1080ti或新的2080ti(现在似乎不可用),我是否可以获得真正的性能增强?我的意思是因为我什至没有利用全部1060的功能,所以更好的GPU会带来真正的改变吗?
我认为时钟速度可能会有所不同。但是,我不确定这种增强有多大。
更好的GPU的一个好处是更大的内存,这将使我能够在1024 * 1024上执行该过程(在1060 GPU上无法做到)。但是,这不是我的主要担心。