정상 CUDA 프로그램 :cudaDeviceSynchronize가 memcopy 시간을 줄일 수 있습니까?
- 는 이
- 콜 커널
- 메모리 복사 장치는
- 호스트 장치에 호스트에서 CUDA 장치에
- 메모리 복사본을 메모리 공간을 할당 ... 등
그래서 호스트를 장치 시간으로 측정 할 경우
time = clock();
2. mem host to device;
cudaDeviceSynchronize;
time = clock() - time ;
그리고 필자의 경우 0.1 초의 값을 얻습니다. 내 PCI 버스 속도는 실제로는 24GB/s로 1000 시간보다 작은 시간 값을 산출한다고 가정하기 때문에 PCI 버스를 활성화하는 데 사용되는 시간은 0.1 초라고 가정합니다.
그래서 나는 1000 시간의 장치 시간에 호스트를 루프하려고 시도했다. 처음에는 0.1 초를 보여 주었고 나머지 시간은 단지 0.000 초 (밀리 초를 초과 할 수 없다)였다. 1000 루프의 시간은 단지 0.12 초입니다.
그래서 장치 시간까지 호스트를 줄이기 위해 내 장치 PCI 버스를 활성화해야합니다. 다음과 같이 전 cudaDeviceSynchronize 사용하여 시도 :
cudaDeviceSynchronize; //---to keep PCI bus activate
time = clock();
2. mem host to device;
cudaDeviceSynchronize;
time = clock() - time ;
내가 얻는 시간은 호스트 장치에 소요되는 시간을 최소화 0.000s이다. 그 맞습니까? 0.1s = PCI 버스를 "활성화"할 시간입니까?
0.1 초는 아마도 CUDA 초기화 시간입니다. –