我希望儘可能快地在矩陣上使用閾值後發現非零元素。考慮到CUDA \ Jacket,我已經瞭解到這比找到的matlab的「常規」cpu版本慢得多,可能是由於內存分配問題,因爲輸出的大小在find函數之前是未知的。然而,使用'bwlabel'和'regionprops'(都支持在Jacket中)確實可以有效地產生關於非零元素的信息,並且比MATLAB中內置的圖像處理工具箱功能快得多。有沒有辦法利用這個來獲得非零元素?有沒有辦法對每個使用bwlabel找到的標籤對象進行一些處理?Matlab的find語句使用CUDA Jacket,或者,是否有一種並行方式來查找非零矩陣元素?
3
A
回答
2
根據我的經驗,Jacket支持的FIND實現速度非常快,至少對於大於300x300左右的矩陣。我在我的筆記本電腦上測試了這一結果,並在下面分享了結果。我的硬件規格是:
>> ginfo
Jacket v2.2 (build 77be88c) by AccelerEyes (64-bit Windows)
License: Standalone (C:\Program Files\AccelerEyes\Jacket\2.2\engine\jlicense.dat)
Addons: MGL16, JMC, SDK, DLA, SLA
CUDA toolkit 4.2, driver 4.2 (296.10)
GPU1 GeForce GT 540M, 2048 MB, Compute 2.1 (single,double)
Display Device: GPU1 GeForce GT 540M
Memory Usage: 1697 MB free (2048 MB total)
CPU是Intel Core i7-2630QM。
我得到那件夾克在CPU的FIND功能上達到〜3X加速。下面是我使用的基準代碼:
% time Jacket vs CPU
for n = 5:12;
x(n) = 2^n;
Ac = single(rand(x(n)));
Ag = gsingle(Ac);
t_cpu(n) = timeit(@() find(Ac > 0.5));
t_gpu(n) = timeit(@() find(Ag > 0.5));
end
% plot results
plot(x, t_cpu ./ t_gpu);
xlabel('Matrix Edge Size', 'FontSize', 14);
ylabel('Jacket (GPU) Speedup over CPU', 'FontSize', 14);
下面是這段代碼運行的結果:
我敢肯定BWLABEL和REGIONPROPS按外殼支持的功能也非常快,但你可能能夠通過查找上面的基準找到自己。
+0
我再次陷入愚蠢的想法,餵養gpu的小塊信號,達到50x50大小,並認爲這將解決它更好。所以通過計算多次[idx idy] = find(gdouble(m)> threshold);'其中m是一個連續獲得的10x10到50x50的信號矩陣,我使用的是'timeit'時間,每個迭代的迭代速度慢5-20倍......相反,累積一個更大的矩陣確實顯示出因子3的改進(我使用gdouble一次)。對不起,我的愚蠢,再次感謝... – bla
相關問題
- 1. matlab find()for python非零元素
- 2. 矩陣的非零元素的逆
- 3. 在(非)對角矩陣中尋找非零元素的速度
- 4. 在MATLAB矩陣中查找元素的有效方法
- 5. Matlab - 爲每個零矩陣元素查找最接近的非零元素索引
- 6. 查找矩陣中所有零元素的鄰居
- 7. Matlab矩陣元素檢查
- 8. 如何找出matlab中矩陣中有多少個非零元素?
- 9. 稀疏矩陣的非零元素
- 10. 確定矩陣是否至少有一個零元素
- 11. 在矩陣的每一行中找到前N個非零元素
- 12. 徵庫:在稀疏矩陣*行*設置所有非零元素,以零
- 13. Matlab:基於組大小的矩陣中的非零元素的零組
- 14. 使用MATLAB以概率將矩陣的元素設置爲零
- 15. 查找矩陣中一組元素的位置 - Matlab
- 16. 在matlab矩陣中查找子矩陣的一般方法
- 17. 如何在Matlab中處理稀疏矩陣行中的非零元素?
- 18. 查找數組中的非零元素
- 19. 在Matlab中用矩陣替換矩陣的所有非空元素的最佳方法是什麼?
- 20. 協方差爲矩陣元素 - Matlab的
- 21. 查找最後非零元素3D陣列 - numpy的陣列
- 22. 查找非零元素的平均值
- 23. matlab初學者:語法來重新排列行矩陣的值
- 24. 使用CUDA的矩陣行中每個元素的排名
- 25. 查找矩陣中的非相交行
- 26. 使用MATLAB中其他矩陣的元素創建矩陣
- 27. 零碎處理矩陣 - CUDA
- 28. Matlab - find(x == a)當a是矩陣時
- 29. 一種有效的方法來計算每列或非零元素的行的平均值
- 30. CUDA中的非方形矩陣乘法
@nate,你能發表一些你正在做什麼以及你如何做基準測試的代碼嗎? find是夾克中更快的功能之一,你不應該有任何麻煩。另外提及您是否使用稀疏矩陣。 –
@pavan,看到我對gpu的迴應如下。只要喂足夠大的基質,夾克就沒問題。我不知怎的忘了... – bla