C ++ - 为什么在犰狳中conv2这么慢?

时间:2016-04-01 14:42:42

标签: c++ convolution armadillo openblas

我在armadillo中使用 conv2 函数,图像大小为224x224,掩码大小为10x10。对于3频道图像,我正在做类似的事情:

arma::mat temp(215, 215, fill::zeros);
for (int i = 0; i < 3; i++)
   temp += arma::mat(arma::conv2(image_channel, channel_mask)).submat(9, 9, 222, 222);

我只想要有效卷积,因此我使用的是submat。此代码使用不同的掩码以 32 循环执行。对于 32 迭代,它需要2.37秒,这比八度音程慢得多。 Octave可以在0.25秒内执行相同的代码。

octave和armadillo都设置为使用OpenBLAS,我在c ++文件中定义了适当的标志。 (例如ARMA_USE_BLAS等)。有人可以告诉我这里有什么问题。

0 个答案:

没有答案