私はソフトウェアの速度を上げるためにOpenCLを試しています。私たちはマップを頻繁に扱い、単純化するために、マップをstd :: vector <std::vector>として表します。OpenCL APIは、生のcスタイルのポインターを引数として受け取ります。たとえば、上記の場合はint*です。
私の質問:
- ベクトルが内部的にメモリ内で連続しているという実装保証がstlにありますか?
- std ::vectorをint*に安全にキャストして、それが機能することを期待できますか?
- ベクトルのベクトルの場合でも、これが当てはまると仮定できますか?ベクトルが他の状態データ、アライメントの問題、またはおそらく他の何かを保持することを期待します...
- これに取り組むための最良の方法は何ですか?内部の連続したメモリ内バッファを保持するカスタム2Dデータ構造を記述し、それを処理しますか?ベクトルとの間でたくさんコピーする必要があります...
ありがとう。