私はVexCL機能を再構築テストする次のコードスニペットを持っている:VexCL形状変更振る舞う不思議
std::vector<int> ints;
for (int i = 0; i < n; i++) ints.push_back(i);
vex::vector<int> vex_ints(ctx, ints);
vex_ints = vex::reshape(vex_ints, vex::extents[2][n/2], vex::extents[1][0]);
for(int i=0; i<n; i++) std::cout << vex_ints[i] << " "; std::cout << std::endl;
それがないすべてがn n個未満の奇数の整数が続くほどであっても、整数を印刷しています。たとえば、n = 10の場合、次のように表示されます。
0 2 4 6 8 1 3 5 7 9
しかし、nが大きくなると、物が奇妙に動作します。開始さ
0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 46 48 50 52 54 56 58 60 62 128 132 136 140 144 148 152 156 160 164 168 172 176 180 184 188 192 196
はさらに出力ダウン、他の食い違いがあり、それが間違っ62の後に取得するために、そしていくつかの偶数、奇数番号の後に発生します。たとえば、N = 10000の場合は、最初の50個のプリント整数です。誰がなぜこれが起こっているのか説明できますか?重要なのは、私が使った文脈は「GeForce GT 650M(Apple)」です。
1D arrrayでなぜ 'vex :: extents [1] [0]'?それはちょうど 'vex :: extents [0]'であるべきですか? – DarkZeros
私はvex :: extentsオブジェクトを使って形状を定義しています。したがって、この場合、行列はn/2行×2列であると言います。私はドキュメントからの行列転置の例に従った。 –
それは再構成セクションの下にあります[ここ](http://vexcl.readthedocs.io/en/latest/expressions.html#reshaping) –