7
CUDAでプログラミングするホストからgpuにデータをコピーしようとして問題が発生しました。CUDAで構造体のディープコピーを実行するには?
私はこれらのような3ネストされた構造体を持っている:
typedef struct {
char data[128];
short length;
} Cell;
typedef struct {
Cell* elements;
int height;
int width;
} Matrix;
typedef struct {
Matrix* tables;
int count;
} Container;
のでContainer
は、順番にいくつかのCell
要素を含んでいるいくつかのMatrix
の要素を、 "含んでいます"。
のは、私は動的にこのようにホストメモリを割り当てるとしましょう:
あるContainer c;
c.tables = malloc(20 * sizeof(Matrix));
for(int i = 0;i<20;i++){
Matrix m;
m.elements = malloc(100 * sizeof(Cell));
c.tables[i] = m;
}
、100個の細胞それぞれの20マトリックスのコンテナ。
- 私はこのデータをcudaMemCpy()を使用してデバイスメモリにコピーできますか?
- "struct of struct"のホストからデバイスへのディープコピーを実行する良い方法はありますか?
お時間をいただきありがとうございます。
アンドレア
私は線形メモリの使用と配列の平坦化についてたくさん読んでいます。 実際には、 'Matrix'構造体の' elements'フィールドを線形メモリとして管理しますが、高レベル表現は2Dです。 3つの構造体を線形化/平坦化しようとしますが、どうやってこれを行うことができますか?すべてのインデックスを管理することは難しいでしょうか? とにかく、ありがとうございました。古いコードを探しても構いません。 – Andrea