#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 다 돌리면 되겠네
그런데 거기까진 귀찮아서 못하겠다
점점빨라짐 ㅋㅋㅋ
내 글마다 비추누르는거 대체 누구냐...
갈때까지 가보자
그런데 질문이 솔직히 1000 * 1000 * n 이 아니라 총 탐색횟수 같지 않냐? 1000*1000 100만을 10만이라고 적은거 같은데
acm 이런거 기준으로 1억번이 1초로 생각하셈
내가 개추 눌러줌
저도 글케 생각하긴 하는데
저게 먼가 2초가 겁나 애매해서 -_-
1000 * 1000 * 10만이면 1000억이야
내가 테스트해본건 500억
gpu 좋은 놈이 돌리면 2초 찍을거 같다 내꺼 구닥다리라 느린듯
자기컴터 빨라도 대회 채점서버가 똥이라...
상수 +1 로 바꾸면 컴파일러가 r*1 로 알아서 바꿔 주느듯 0.015초 나오넹