#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 r ";
std::cin >> r;
if(!r)
break;
::Concurrency::parallel_for_each(e, [=](::Concurrency::index<1> idx) restrict(amp)
{
av_data[idx] += r;
});
av_data.synchronize();
}
return 0;
}
2초안에 나옴?
데이터 클수록 더 빠름
1000 * 1000 0.016 초 gpu 따라 다름
10000 * 10000 0.265초
그거 한 바퀴도는데 0.016초에 10만번 돌면 1600초네
뭔가 문제가 좀 다른 거라든지... 아니면 뭔가 놓친게 있을려나 절대 2초안에 안되는데
1000*1000 을 10만번 돌린건 아닐꺼야
volatile int64 만들고 100번 돌며서 ++ 해봐 언제 끝나는지
100번이 아니라 100억