neon

    3

    1答えて

    11ビットの精度で高速atan2(浮動小数点数)を実装しようとしています。 atan2実装は画像処理に使用されます。 したがって、SIMD命令(x86(SSE2を使用))& ARM(vpfv4 NEONを使用)をターゲットにしたインプリメンテーション)を使用して実装する方がよい場合があります。 今のところ私はチェビシェフ多項式近似(https://jp.mathworks.com/help/fix

    -2

    1答えて

    CでのARMネオンコンパイラの利点を利用して、画像のフィルタの畳み込みを最適化するガイドがありますか?私はすでにこれを従来のC言語で実装していますが、NEONをサポートしてARM上でより高速な画像処理を行うためにコードを時間最適化する必要があります。インターネットで利用可能なリソースは、CでNEONを使用してARMでアルゴリズムを実装する場合、非常に制限されます。 3x3フィルタに画像をコンボリュ

    0

    1答えて

    QtWebengineを使ってアームプラットフォーム用にQt5.9.1をビルドしようとしています。 これはビルドに渡すアーキテクチャベースの引数です。 QMAKE_CFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9 QMAKE_CXXFLAGS_RELEASE += -march=armv7-a -mcpu=cortex-a9 デフォルトでは、ビ

    1

    1答えて

    どのようなイントリンシックがSIMDを通常の行列乗算よりも遅くするのか、そしてSIMDを使用してより速く大きな行列の乗算を行うために何をすべきかと思います。ここには、matrixA[8][8],matrixB[8][8]と結果matrixC[8][8]があります。 float32_tの最大要素数は4であるため、2つのvmulとvaddを実行しました。これはかなり最適化されていないようです。私はAR

    0

    2答えて

    ARM NEONコンパイラ組み込み関数自体に、マルチスレッド、マルチコア、マルチプロセス環境で安全に動作する方法はありますか?はいの場合は、私は見つけることができないため、この問題が言及されている文書を引用してください。そうでない場合は、NEON ARMがスレッドセーフであることを確認するために何をすべきですか?

    2

    1答えて

    次のように2つの浮動小数点オペランドの比較の比較結果があります。すなわち:私は、比較の結果に基づいて行う必要があることは、以下を実行する必要がが neon_gt_res = vcgtq_f32(temp1, temp2); if(neon_gt_res[0]) array[0] |= (unsigned char)0x01; if(neon_gt_res[1]) array[0] |= (un

    1

    1答えて

    8バイトの連続した4バイトブロックが[abcdefgh]となるようにレイアウトされたメモリを考慮してください。これらを2つのレジスタv0.4sとv1.4sにロードするので、それぞれv0.4s = [abcd]とv1.4s = [efgh]となり、各文字は32ビットブロックを表します。私は[abef]と[cdgh]を2つの(おそらく異なる)レジスタに取得するように並べ替えたいと思います。 私のアプロ

    1

    1答えて

    私がテストしているいくつかのARM開発ボードでは、いくつかのARMディスアセンブルがあります。それらは、-march=armv7-a -mfloat-abi=hard -mfpu=neonを使用してNEON固有のvld1q_u32で生成されました。我々は(/proc/cpuinfo half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva id

    2

    1答えて

    私はAVX(ARM NEONから来たもの)の新人であり、AVXには多くのU8算術が欠けていることに驚いていました。 は、そのため私は、インライン関数でmax(a,b)-min(a,b)に頼らなければならなかった: static inline __m256i _mm256_abd_epu8(__m256i a, __m256i b) { return _mm256_sub_epi8(_m

    0

    1答えて

    8ビット固定小数点演算を行っていますが、配列とB配列の両方がQ7形式であり、それらの和の積を求めます。 デモコード: int8_t ra1[], ra2[], rb[]; int8x16_t va1, va2, vb; int16x4_t vsum1, vsum2; va1 = vld1q_s8(ra1); va2 = vld1q_s8(ra2); vb = vld1q_s8(rb);