2

画像サイズ 224x224、マスク サイズ 10x10 のアルマジロでconv2関数を使用しています。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);

有効な畳み込みのみが必要なため、サブマットを使用しています。このコードは、異なるマスクを使用して32回ループで実行されます。32回の反復では 2.37 秒かかり、オクターブよりもはるかに遅くなります。Octave は同じコードを 0.25 秒で実行できます。

オクターブとアルマジロの両方が OpenBLAS を使用するように設定されており、c++ ファイルで適切なフラグを定義しました。(例ARMA_USE_BLASなど)。ここで何が問題なのか誰か教えてください。

4

0 に答える 0