Esempio n. 1
0
bool test(accelerator_view &rv)
{
    const int size = 100;

    vector<int> A(size);
    vector<s> G(size);
    vector<int> Gi(size);
    vector<double> Gd(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
    }

    extent<1> e(size);

    Concurrency::array<int, 1> aA(e, A.begin(), rv);
    Concurrency::array<s, 1> aG(e, G.begin(), rv);
    Concurrency::array<int, 1> aGi(e, Gi.begin(), rv);
    Concurrency::array<double, 1> aGd(e, Gd.begin(), rv);

    parallel_for_each(aA.get_extent(), [&](index<1>idx) __GPU
    {
        s* volatile ps = &aG[idx];
        int * volatile pi1 = &aGi[idx];
        double * volatile pd1 = &aGd[idx]; // not allowed here

        aA[idx] = 1;
    });
Esempio n. 2
0
bool test(accelerator_view &rv)
{
    const int size = 100;

    vector<int> A(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
    }

    extent<1> e(size);

    Concurrency::array<int, 1> aA(e, A.begin(), rv);

    parallel_for_each(aA.get_extent(), [&](index<1>idx) __GPU 
    {
        type v1;

        v1 = 0;

        type &p = v1;

        p = (type)1;

        if (!Equal(v1, (type)1))
            aA[idx] = 1;
    });
Esempio n. 3
0
bool test(accelerator_view &rv)
{
    const int size = 100;

    vector<int> A(size);
    vector<int> G(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
        G[i] = 1;
    }

    extent<1> e(size);

    array<int, 1> aA(e, A.begin(), rv);
    array<int, 1> *paG = new array<int, 1>(e, G.begin(), rv);

    parallel_for_each(aA.extent, [&](index<1>idx) __GPU
    {
        int i = (*paG)[idx]; // not allowed here

        if (i != 1)
            aA[idx] = 1;
    });
Esempio n. 4
0
bool test(accelerator_view &rv)
{
    const int size = 100;

    vector<int> A(size);
    vector<c2> Gc(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
        Gc[i].i = 1;
        Gc[i].d = 1;
        Gc[i].ul = 1;
        Gc[i].f = 1;
    }

    extent<1> e(size);

    array<int, 1> aA(e, A.begin(), rv);
    array<c2, 1> aGc(e, Gc.begin(), rv);

    parallel_for_each(aA.get_extent(), [&](index<1>idx) __GPU
    {
        int *pi = NULL;

        void *pv1 = pi;

        if (pv1 != NULL)
            aA[idx] = 1;

        c1 *p = &aGc[idx];

        if (!Equal(p->i, (int)1) || !Equal(p->d, (double)1) || !Equal(p->f, (float)1) || !Equal(p->ul, (unsigned long)1))
            aA[idx] = 1;
    });
Esempio n. 5
0
bool test(accelerator_view &rv)
{
    const int size = 100;

    vector<int> A(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
    }

    extent<1> e(size);

    array<int, 1> aA(e, A.begin(), rv);

    parallel_for_each(aA.get_extent().tile<1>(), [&](tiled_index<1>idx) __GPU_ONLY
    {
        tile_static int i1;
        i1 = 1;
        int *pi1 = &i1;
        bool *pb1 = (bool*)pi1;
        tile_static int i2;

        bool tb = *pb1;

        i2 = *(int *)pb1;

        if (i2 != 1)
            aA[idx] = 1;

        tile_static unsigned __int32 i3;
        i3 = 1;
        unsigned __int32 *pi2 = &i3;
        double * pd1 = (double *)pi2;
        double td = *pd1;
        tile_static unsigned __int32 i4;
        i4 = *(unsigned __int32 *)pd1;

        if (i4 != 1)
            aA[idx] = 1;

        tile_static c1 o;
        o.i = 1;
        o.d = 1;
        o.ul = 1;
        o.f = 1;
        tile_static bool b1;
        c2 *p = (c2 *)&o;

        if (!Equal(p->i, (int)1) || !Equal(p->d, (double)1) || !Equal(p->f, (float)1) || !Equal(p->ul, (unsigned long)1))
            aA[idx] = 1;
    });
Esempio n. 6
0
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;
    });
Esempio n. 7
0
File: test.cpp Progetto: 8l/kalmar
bool test(accelerator_view &rv)
{
    const int size = 100;

    vector<int> A(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
    }

    extent<1> e(size);

    array<int, 1> aA(e, A.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 = o2;

        s o3 = ps;

        if (!Equal(o3.i, 2) || !Equal(o3.d, (double)2) || !Equal(o3.ul, (unsigned long)2) || !Equal(o3.f, (float)2))
            aA[idx] = 1;

        const bool b1 = true;
        const bool &pb1 = b1;
        bool b2 = pb1;

        const int i1 = 1;
        const int &pi1 = i1;
        int i2 = pi1;

        const double d1 = 1;
        const double &pd1 = d1;
        double d2 = pd1;

        if (!Equal(b2, b1) || !Equal(i2, i1) || !Equal(d2, d1))
            aA[idx] = 1;
    });
Esempio n. 8
0
File: test.cpp Progetto: 8l/kalmar
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++;
        }
    });
Esempio n. 9
0
bool test(accelerator_view &rv)
{
    const int size = 100;

    vector<int> A(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
    }

    extent<1> e(size);

    array<int, 1> aA(e, A.begin(), rv);

    parallel_for_each(aA.extent, [&](index<1>idx) __GPU 
    {
        int *p = new int; // not allowed here
        delete p;
        aA[idx] = 1;
    });
Esempio n. 10
0
File: test.cpp Progetto: 8l/kalmar
bool test(accelerator_view &rv)
{
    const int size = 100;

    vector<int> A(size);
    vector<s> G(size);
    vector<int> Gi(size);
    vector<double> Gd(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
    }

    extent<1> e(size);

    array<int, 1> aA(e, A.begin(), rv);
    array<s, 1> aG(e, G.begin(), rv);
    array<int, 1> aGi(e, Gi.begin(), rv);
    array<double, 1> aGd(e, Gd.begin(), rv);

    parallel_for_each(aA.get_extent(), [&](index<1>idx) __GPU
    {
        const s o2 = aG[idx];

        const s* ps = &o2;

        ps->i = 1; // not allowed here
        ps->d = 1;
        ps->ul = 1;
        ps->f = 1;

        const int *pi1 = &aGi[idx];
        *pi1 = 2;
        const double d1 = 1;
        const double *pd1 = &aGd[idx];
        *pd1 = 2.0;

        aA[idx] = 1;
    });
Esempio n. 11
0
bool check_bidiag(viennacl::matrix<ScalarType>& A)
{
  const ScalarType EPS = 0.0001f;

  std::vector<ScalarType> aA(A.size1() * A.size2());
  viennacl::fast_copy(A, &aA[0]);

  for(std::size_t i = 0; i < A.size1(); i++)
  {
    for(std::size_t j = 0; j < A.size2(); j++)
    {
      ScalarType val = aA[i * A.size2() + j];
      if((fabs(val) > EPS) && (i != j) && ((i + 1) != j))
      {
        std::cout << "Failed at " << i << " " << j << " " << val << std::endl;
        return false;
      }
    }
  }

  return true;
}
Esempio n. 12
0
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));
    Concurrency::array<int, 1> aFlag(eflags, Flags.begin(), rv);

    const int size = 100;

    vector<int> A(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
    }

    extent<1> e(size);

    Concurrency::array<int, 1> aA(e, A.begin(), rv);

    parallel_for_each(aA.get_extent().tile<1>(), [&](tiled_index<1>idx) __GPU_ONLY
    {
        tile_static type v1, v2;

        v1 = 0;
        v2 = 0;

        type *p;
        if (aFlag[0] == 0)
            p = &v1;
        else 
            p = &v2;

        *p = (type)1;

        if (!Equal(v1, (type)1))
            aA[idx] = 1;
    });
Esempio n. 13
0
bool test(accelerator_view &rv)
{
    const int size = 100;

    vector<int> A(size);
    vector<int> G(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
        G[i] = 1;
    }

    extent<1> e(size);

    Concurrency::array<int, 1> aA(e, A.begin(), rv);

    type *p = NULL;
    parallel_for_each(aA.get_extent(), [&, p](index<1>idx) __GPU
    {
        type *p1 = p; // not allowed here
        aA[idx] = 1;
    });
Esempio n. 14
0
bool test(accelerator_view &rv)
{
    const int size = 100;

    vector<int> A(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
    }

    extent<1> e(size);

    Concurrency::array<int, 1> aA(e, A.begin(), rv);

    parallel_for_each(aA.get_extent(), [&](index<1>idx) __GPU
    {
        volatile s &ps = (volatile s &)aA[idx]; // not allowed here
        volatile bool &pb1 = (volatile bool&)aA[idx];
        volatile int &pi1 = (volatile int&)aA[idx];;
        volatile double &pd1 = (volatile double&)aA[idx];

        aA[idx] = 1;
    });
Esempio n. 15
0
bool test(accelerator_view &rv)
{

    const int size = 100;

    vector<int> A(size);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
    }

    extent<1> e(size);

    array<int, 1> aA(e, A.begin(), rv);

    parallel_for_each(aA.extent.tile<1>(), [&](tiled_index<1>idx) __GPU
    {
        tile_static c1 p1; // classes which have pointers are not allowed here
        tile_static s1 p2;
        tile_static u1 p3;

        aA[idx] = 1;
    });
Esempio n. 16
0
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);

    for(int i = 0; i < size; i++)
    {
        A[i] = INIT_VALUE;
    }

    extent<1> e(size);

    array<int, 1> aA(e, A.begin(), rv);

    parallel_for_each(aA.extent, [&](index<1>idx) __GPU
    {
        type arr[10];

        arr[0] = 0; arr[1] = 1; arr[2] = 2; arr[3] = 3; arr[4] = 4; 
        arr[5] = 5; arr[6] = 6; arr[7] = 7; arr[8] = 8; arr[9] = 9;

        type *p = NULL;

        if (aFlag[0] == 0)
            p = &arr[0];
        else
            p = &arr[1];

        p++;

        type *p2 = p;

        if (!Equal(*p2, (type)1))
            aA[idx] = 1;

        p2--;

        type *p3 = p2;

        if (!Equal(*p3, (type)0))
            aA[idx] = 1;

        p = &arr[0];

        if (aFlag[0] == 0)
            p2 = &arr[9];
        else
            p2 = &arr[8];

        int diff = p2 - p;

        if ((diff != 9) || (diff != (&arr[9] - &arr[0])))
            aA[idx] = 1;

        p2 = p + 9;

        if (!Equal(*p2, (type)9))
            aA[idx] = 1;
    });
Esempio n. 17
0
int main(){
  
  std::cout << "Pointer: starting unit test\n";
  // int
  Pointer<int> a(new int(100));
  Pointer<int> b(new int(200));
  if(a.count() != 1) std::cout << "Pointer: unit test 1.0 failing\n";
  if(b.count() != 1) std::cout << "Pointer: unit test 1.1 failing\n";
  if(*a != 100) std::cout << "Pointer: unit test 1.2 failing\n";
  if(*b != 200) std::cout << "Pointer: unit test 1.3 failing\n";
  Pointer<int> c(a);
  if(a.count() != 2) std::cout << "Pointer: unit test 1.4 failing\n";
  if(c.count() != 2) std::cout << "Pointer: unit test 1.5 failing\n";
  if(*a != 100) std::cout << "Pointer: unit test 1.6 failing\n";
  if(*c != 100) std::cout << "Pointer: unit test 1.7 failing\n";
  if(a.get() != c.get()) std::cout << "Pointer: unit test 1.8 failing\n";
  IPointer<int> *d = new Pointer<int>(a);
  if(a.count() != 3) std::cout << "Pointer: unit test 1.9 failing\n";
  if(**d !=100) std::cout << "Pointer: unit test 1.10 failing\n";
  delete d;
  if(a.count() != 2) std::cout << "Pointer: unit test 1.11 failing\n";
  c = b;
  if(a.count() != 1) std::cout << "Pointer: unit test 1.12 failing\n";
  if(b.count() != 2) std::cout << "Pointer: unit test 1.13 failing\n";
  if(c.count() != 2) std::cout << "Pointer: unit test 1.14 failing\n";
  if(*a != 100) std::cout << "Pointer: unit test 1.15 failing\n";
  if(*b != 200) std::cout << "Pointer: unit test 1.16 failing\n";
  if(*c != 200) std::cout << "Pointer: unit test 1.17 failing\n";
  if(b.get() != c.get()) std::cout << "Pointer: unit test 1.18 failing\n";
  a = b;
  if(a.count() != 3) std::cout << "Pointer: unit test 1.19 failing\n";
  if(b.count() != 3) std::cout << "Pointer: unit test 1.20 failing\n";
  if(c.count() != 3) std::cout << "Pointer: unit test 1.21 failing\n";
  if(*a != 200) std::cout << "Pointer: unit test 1.22 failing\n";
  if(*b != 200) std::cout << "Pointer: unit test 1.23 failing\n";
  if(*c != 200) std::cout << "Pointer: unit test 1.24 failing\n";
  if(b.get() != c.get()) std::cout << "Pointer: unit test 1.25 failing\n";
  if(b.get() != a.get()) std::cout << "Pointer: unit test 1.25 failing\n";
  // A
  Pointer<A> aA(new A(10));
  Pointer<A> bA(new A(20));
  if(aA.count() != 1) std::cout << "Pointer: unit test 2.0 failing\n";
  if(bA.count() != 1) std::cout << "Pointer: unit test 2.1 failing\n";
  if(foo(*aA) != 10) std::cout << "Pointer: unit test 2.2 failing\n";
  if(foo(*bA) != 20) std::cout << "Pointer: unit test 2.3 failing\n";
  if(aA->get() != 10) std::cout << "Pointer:unit test 2.4 failing\n";
  if(bA->get() != 20) std::cout << "Pointer::unit test 2.5 failing\n";
  Pointer<A> cA(aA);
  if(aA.count() != 2) std::cout << "Pointer: unit test 2.6 failing\n";
  if(cA.count() != 2) std::cout << "Pointer: unit test 2.7 failing\n";
  if(foo(*aA) != 10) std::cout << "Pointer: unit test 2.8 failing\n";
  if(foo(*cA) != 10) std::cout << "Pointer: unit test 2.9 failing\n";
  if(aA->get() != 10) std::cout << "Pointer:unit test 2.10 failing\n";
  if(cA->get() != 10) std::cout << "Pointer::unit test 2.11 failing\n";
  if(aA.get() != cA.get()) std::cout << "Pointer: unit test 2.12 failing\n";
  IPointer<A> *dA = new Pointer<A>(aA);
  if(aA.count() != 3) std::cout << "Pointer: unit test 2.13 failing\n";
  if(foo(**dA) != 10) std::cout << "Pointer: unit test 2.14 failing\n";
  if((*dA)->get() != 10) std::cout << "Pointer: unit test 2.15 failing\n";
  delete dA;
  if(aA.count() != 2) std::cout << "Pointer: unit test 2.16 failing\n";
  cA = bA;
  if(aA.count() != 1) std::cout << "Pointer: unit test 2.17 failing\n";
  if(bA.count() != 2) std::cout << "Pointer: unit test 2.18 failing\n";
  if(cA.count() != 2) std::cout << "Pointer: unit test 2.19 failing\n";
  if(foo(*aA) != 10) std::cout << "Pointer: unit test 2.20 failing\n";
  if(foo(*bA) != 20) std::cout << "Pointer: unit test 2.21 failing\n";
  if(foo(*cA) != 20) std::cout << "Pointer: unit test 2.22 failing\n";
  if(aA->get() != 10) std::cout << "Pointer: unit test 2.23 failing\n";
  if(bA->get() != 20) std::cout << "Pointer: unit test 2.24 failing\n";
  if(cA->get() != 20) std::cout << "Pointer: unit test 2.25 failing\n";
  if(bA.get() != cA.get()) std::cout << "Pointer: unit test 2.26 failing\n";
  aA = bA;
  if(aA.count() != 3) std::cout << "Pointer: unit test 2.27 failing\n";
  if(bA.count() != 3) std::cout << "Pointer: unit test 2.28 failing\n";
  if(cA.count() != 3) std::cout << "Pointer: unit test 2.29 failing\n";
  if(foo(*aA) != 20) std::cout << "Pointer: unit test 2.30 failing\n";
  if(foo(*bA) != 20) std::cout << "Pointer: unit test 2.31 failing\n";
  if(foo(*cA) != 20) std::cout << "Pointer: unit test 2.32 failing\n";
  if(aA->get() != 20) std::cout << "Pointer: unit test 2.33 failing\n";
  if(bA->get() != 20) std::cout << "Pointer: unit test 2.34 failing\n";
  if(cA->get() != 20) std::cout << "Pointer: unit test 2.35 failing\n";
  if(bA.get() != cA.get()) std::cout << "Pointer: unit test 2.36 failing\n";
  if(bA.get() != aA.get()) std::cout << "Pointer: unit test 2.37 failing\n";
 

  std::cout << "Pointer: unit test complete\n";
  return 0;
}