본문 바로가기
Dev/Ops

Context Switching, Optimazation

by jusep 2022. 12. 5.

Context switching은 왜 필요할까?

: 한번에 하나의 task만 처리한다면 해당 task가 끝날때까지 다음 task를 기다려야 하고 매우 느리고 불편하다.

 빠른 속도로 task를 바꿔가며 실행하면 (사람에게) 실시간처럼 실행되는거 같은 장점이 있다.

 

Context Switching

: 현재 진행하고 있는 task (process, thread)의 상태를 저장하고 다음 진행할 task의 상태 값을 읽어 적용하는 과정

 

Latency Hiding

: CPU에서 context switching을 상당이 높은 코스트 작업이지만 GPU에서는 한없이 작은 코스트이다. GPU에서는 memory I/O 대기중인 작업을 실행열에서 빼고 다른 작업을 넣는다. 즉 하나의 작업을 기다리게 하고 다른 작업을 먼저 실행한다.

 

Occupancy

:메모리 접근 등 코스트가 높은 연산같은 경우 모든 작업이 memory access에 들어갓는데 처음 시작한 작업이 memory ㅁaccess가 안 끝나는 경우가 생기고 그러면 GPU는 놀게 되어 낭비가 생긴다. 

GPU는 캐시가 매우 작아 global memoy에 접근할때 속도가 많이 느리다. 이것을 보안하기 위해 메모리에 접근하는 동안 실행되는 warp를 교체(context switch)한다. 

'Dev > Ops' 카테고리의 다른 글

docker container 생성할때  (2) 2023.02.24
[Linux] 일반 계정에 sudo 권한 추가 / 삭제  (0) 2022.12.13
cv2 install error  (1) 2022.06.17
주피터랩 띄울때  (1) 2022.03.21
도커 nvidia toolkit 실행시 에러  (0) 2022.03.21

댓글