#include <iostream>

#include <amp.h>

#include <vector>


int main()

{

    int m, n;

    std::cout << "Input m , n ";

    std::cin >> m >> n;


    int mn = m*n;

    if(!mn)

        return 0;


    std::vector<int> v(mn, 0);

    ::Concurrency::extent<1> e(mn);

    ::Concurrency::array_view<int, 1> av_data(e, v);

    for(;;)

    {

        int r;

        std::cout << "Input num random seed ";

        std::cin >> r;

        if(!r)

            break;


        std::vector<int> vR(r);

        

        for(int i=0; i<r; i++)

        {

            vR[i] = rand();

        }

        ::Concurrency::extent<1> eR(r);

        ::Concurrency::array_view<int, 1> av_R(eR, vR);


        DWORD ts = ::GetTickCount();

        ::Concurrency::parallel_for_each(e, [=](::Concurrency::index<1> idx) restrict(amp)

        {

            for(int i=0; i<r; i++)

                av_data[idx] += av_R[i];

        });

        av_data.synchronize();

        DWORD te = ::GetTickCount();

        printf("%u\n", te-ts);

    }

    return 0;

}


2초 끊으려면 반반 나눠 gpu랑 cpu 다 돌리면 되겠네

그런데 거기까진 귀찮아서 못하겠다