array
ページ境界で numpy のデータ セクション (つまりデータ) を割り当てる方法はありますか?
CL_MEM_USE_HOST_PTR
IntelデバイスでPyOpenCLを使用していて、を使用してバッファを作成したい場合、私が気にする理由については、データが1)ページ整列され、2)キャッシュラインの倍数のサイズであることを推奨しています。
C では、ページ整列メモリを割り当てるさまざまな方法があります。例を参照してください: GCC で整列された malloc()?
array
ページ境界で numpy のデータ セクション (つまりデータ) を割り当てる方法はありますか?
CL_MEM_USE_HOST_PTR
IntelデバイスでPyOpenCLを使用していて、を使用してバッファを作成したい場合、私が気にする理由については、データが1)ページ整列され、2)キャッシュラインの倍数のサイズであることを推奨しています。
C では、ページ整列メモリを割り当てるさまざまな方法があります。例を参照してください: GCC で整列された malloc()?
現時点では、Numpy がメモリを整列するための明示的な呼び出しを行っていることを知りません。@Saulio Castroによって提案されたCythonを除いて、これを行うことを考えることができる唯一の方法は、numpy割り当てまたはPyOpenCL APIを使用して、「パディング」を使用してメモリを適切に割り当てることです。
64K バイトの倍数に合わせて「パディング」されたバッファを作成する必要があります。また、配列に割り当てていた個々のデータ構造要素を「パディング」して、それらも 4k バイトの境界に揃える必要があります。もちろん、これは要素がどのように見えるか、numpy データ型で構築されているか、numpy dtype を使用して作成された構造体であるかによって異なります。dtype の API には「align」キーワードがありますが、このリンクでの議論に基づいて、私はそれを警戒します。
構造を整列させるための昔ながらのトリックは、最大の要素から始めて、下に向かって作業し、次に十分な uint8 で「パディング」して、1 つまたは N 個の構造体が整列境界を埋めるようにすることです。
あいまいすぎないことを願っています...