bool test(accelerator_view &rv) { const int size = 100; vector<int> A(size); vector<s> G1(size); vector<int> G2(size); vector<double> G3(size); for(int i = 0; i < size; i++) { A[i] = INIT_VALUE; G1[i].i = 2; G1[i].d = 2; G1[i].ul = 2; G1[i].f = 2; } extent<1> e(size); array<int, 1> aA(e, A.begin(), rv); array<s, 1> aG1(e, G1.begin(), rv); array<int, 1> aG2(e, G2.begin(), rv); array<double, 1> aG3(e, G3.begin(), rv); parallel_for_each(aA.get_extent(), [&](index<1>idx) __GPU { s o; o.i = 2; o.d = 2; o.ul = 2; o.f = 2; const s o2 = o; const s* ps = 0; ps = &o2; if (!Equal(ps->i, 2) || !Equal(ps->d, (double)2) || !Equal(ps->ul, (unsigned long)2) || !Equal(ps->f, (float)2)) aA[idx] = 1; const int i1 = 1; const int *pi1 = &i1; const double d1 = 1; const double *pd1 = &d1; if (!Equal(*pi1, (int)1) || !Equal(*pd1, (double)1)) aA[idx] = 1; });
bool test(accelerator_view &rv) { int data[] = {0, 0, 0, 0}; vector<int> Flags(data, data + sizeof(data) / sizeof(int)); extent<1> eflags(sizeof(data) / sizeof(int)); array<int, 1> aFlag(eflags, Flags.begin(), rv); const int size = 100; vector<int> A(size); vector<c> G(size); vector<c> G2(size); for(int i = 0; i < size; i++) { A[i] = INIT_VALUE; G[i].i = G[i].d = G[i].ui = G[i].f = i; G2[i].i = G2[i].d = G2[i].ui = G2[i].f = i; } extent<1> e(size); extent<2> eG(10, 10); array<int, 1> aA(e, A.begin(), rv); array<c, 2> aG(eG, G.begin(), rv); array<c, 2> aG2(eG, G2.begin(), rv); parallel_for_each(aA.get_extent(), [&](index<1>idx) __GPU { c *p = NULL; if (aFlag[0] == 0) p = &aG[0][0]; else p = &aG2[0][0]; double di = 0; for (int i = 0; i < 100; i++) { if (!Equal((*p).i, (int)i) || !Equal((*p).d, di) || !Equal((*p).ui, (unsigned __int32)i) || !Equal((*p).f, (float)i)) { aA[idx] = 1; } p++; di++; } });