私はC++で次のループを持っています
dword result = 0;
for ( int i = 0; i < 16; i++ ) {
result |= ( value[i] << (unsigned int)( i << 1 ) );
}
そして、それをアンプで並列化したいと思います。上記の実際の非並列バージョンよりも遅くなる可能性があることはわかっていますが、AMPについてもっと学ぶためにそれを実行したいと思います。
私のアイデアは、値の配列を並列にループすることでした。
そして、新しい配列にnewarray[0] = value[0] << (unsigned int)(0 << 1 )
、newarray[1] = value[1] << (unsigned int)(1 << 1 )
などを入力します。次に、配列内の値をツリー構造で並列にORします(画像を参照)。
私はこのアイデアをいくつかの単純なc++ampコードに入れようとしましたが、成功しなかったので、助けていただければ幸いです。
ご検討のほどよろしくお願い申し上げます。お返事をお待ちしております。