現代的なハードウェアを提供していますが、私は効率的に(例えば1CPUサイクルで)perfromビット単位の操作が可能なビット配列の最大サイズを知りたいと思います。たとえば、64ビットプロセッサの場合、私は答えが64であると仮定します。これは本当ですか? GPUやエキゾチックなハードウェアをどれだけ得ることができますか?単純にビット単位でASICを構築したいのですが、どこまで得ることができますか?多くのビットで効率よくビット単位の操作を効率的に実行できますか?
0
A
答えて
1
1325 MHzでのRX550は、1秒あたり893ギガの整数でビット演算を整数で行うことができます。これは28.5テラビット/秒を意味します。これをクロック周波数に分割して、
サイクルあたり21581ビット(このGPUには512コアしかなく、それぞれ32ビット整数計算を実行する32×512 = 16384ビット/サイクルですが、浮動小数点ユニットもあります。サイクルごとに21.6キロビットに達するために整数演算をエミュレートするために使用されているかもしれませんが、他の未知の単位もあります(ビット単位の演算を助ける64ビットコアなど)。
しかし、 pci-eブリッジを介してデータを取得する必要がある場合、これは4GB /秒に低下します。これは32ギガビット/秒を意味します。これは1コアCPUよりも遅いです。ビットあたりの計算量は重要です。その1つだけの操作であれば、GPUに送信することはあまり役に立たないでしょう。ビットあたり50以上の演算がある場合は、GPUまたはFPGAに送信する必要があります。
テストカーネル(OpenCLの)
__kernel void bitwise(__global int16 * data)
{
int16 pData=data[get_global_id(0)];
int16 pData2=pData&&1234123;
for(int i=0;i<25;i++)
{
pData|=(pData^55 && pData^120);
pData2|=(pData2^55 && pData2^120);
}
data[get_global_id(0)]=pData&pData2;
}
テストバッファは128M整数配列です。
関連する問題
- 1. Javaの効率的なビット操作ですか?
- 2. ビット単位のデータに対する効率的なRLEアイディア
- 3. ビット単位の操作はまだ実用的ですか?
- 4. 多くの行を効率よくファイルに書き込む
- 5. 乗算の上位ビットの効率的な計算
- 6. 効率的なリスト操作ですか?
- 7. ビット単位のC操作
- 8. ByteStringのビット単位操作
- 9. 効率的なndarray操作
- 10. 効率的にパンダのデータフレームを行単位で結合する
- 11. 複数の単語にいくつかのビットを書き込むための効率的なアルゴリズム
- 12. Cでのビット単位の操作 - AnyOddBit
- 13. 制限付き実行でのビジネスサービス操作の効率的なスレッドセーフ実装
- 14. リモート/ローカルサーバーのファイル操作メソッドをRubyでより効率的に書く方法
- 15. 多くの粒子を効率的に描く
- 16. Rebol 3:STDINを行単位で効率的に読む
- 17. 効率的に128ビット定数を定義するには?
- 18. 効率的なリストの操作方法
- 19. 効率的なファイル保存Cでバイナリファイルに特定のビットを書き込む
- 20. サーバ内の多くのソケットを効率的に処理する
- 21. ユニファイドキャンバスに多くの画像を効率的にレンダリングする
- 22. PySparkデータフレームの操作効率
- 23. グループ化されたpandas DataFrameに効率よく効率的に適用する
- 24. ビット数を増やす効率的な条件式
- 25. このjavascriptをより効率的に書くことはできますか?
- 26. nand MIPSアセンブリーのビット単位操作
- 27. OS Xスクリーンセーバー効率的なピクセル操作
- 28. モジュールの単体テストを効率的に実行する
- 29. 32/64ビットでバイトを効率的にビットシフトしますか?簡単にするために
- 30. MySQLで多数の行を効率的にINSERTするには?