KalelPark's LAB

[Pytorch] processing time 정확히 측정하기 - torch.cuda.synchronize() 본문

Python/Pytorch

[Pytorch] processing time 정확히 측정하기 - torch.cuda.synchronize()

kalelpark 2023. 3. 22. 01:42

Pytorch에서 CUDA 호출은 asynchronize이기 때문에, 코드를 동기화 해줘야 합니다.

시간을 측정할 때, 사용됩니다. torch.cuda.Event()는 device의 progress를 모니터링하는데

사용할 수 있는 synchronization markers입니다. -> CUDA stream 내부 명령 흐름 중 특정 지점에 표시를 남기는 것입니다.

 

정확하기 시간을 측정하고자 한다면, synchronize를 해야한다고, 공식 문서에서 언급했습니다.

이벤트가 처음 record되거나, 다른 프로세스를 내보낼 때, 기본 CUDA 이벤트가 느리게 초기화 됩니다.

 

생성 후에는 동일한 장치의 stream만 event로 기록할 수 있습니다. 그러나 모든 장치의 stream은 이벤트를 기다릴 수 있습니다.

start = torch.cuda.Event(enable_timing=True)
end = torch.cuda.Event(enable_timing=True)

start.record()
z = x + y
end.record()

# Waits for everything to finish running
torch.cuda.synchronize()

print(start.elapsed_time(end))

 

Reference

https://www.notion.so/torch-processing-time-torch-cuda-synchronize-f42f766017624efb8c9d21129f3732b3

 

torch에서 processing time 측정하기 - torch.cuda.synchronize()

pytorch 튜토리얼에서 학습시작시에 해주는 torch.cuda.synchrosize() 에 대해 알아봤다.

www.notion.so

 

Comments