Torch sparse coo tensor 가지고 만들어놓은 행렬 A
일반 텐서 x
둘다 gpu 상에 있는데
반복 matmul 시켜보면
2080ti에서 cuda 점유율 60 찍히고 있고
cpu는 10%쯤 점유율 올라감
A를 to_dense 해서 dense mat로 만들고 동일한 연산해보면
Cpu 0 cuda 100 찍힘. 계산도 5배 이상 빠름.
A의 크기는 (128)*(16384) 정도고 non zero는 6000 ~ 40000 개 정도임. 대충 1~2% 차지함.
A=A.to_dense().to_sparse() 해서 토치가 알아서 재배열 시키면
Cuda 100% 찍힐 때도 있고 아닐 때도 있음.
Gpu 자체가 Sparse 연산용이 아니긴 하지만
이 정도로 성능 왔다갔다 심한 건 첨 보는데
이유를 모르겠음.......
코드 별 것도 없음 걍 for loop 안에 y=A@x 가 다임.
어딘가 cpu를 쓰는 연산이 섞여있는 거 같은데
일반 텐서 x
둘다 gpu 상에 있는데
반복 matmul 시켜보면
2080ti에서 cuda 점유율 60 찍히고 있고
cpu는 10%쯤 점유율 올라감
A를 to_dense 해서 dense mat로 만들고 동일한 연산해보면
Cpu 0 cuda 100 찍힘. 계산도 5배 이상 빠름.
A의 크기는 (128)*(16384) 정도고 non zero는 6000 ~ 40000 개 정도임. 대충 1~2% 차지함.
A=A.to_dense().to_sparse() 해서 토치가 알아서 재배열 시키면
Cuda 100% 찍힐 때도 있고 아닐 때도 있음.
Gpu 자체가 Sparse 연산용이 아니긴 하지만
이 정도로 성능 왔다갔다 심한 건 첨 보는데
이유를 모르겠음.......
코드 별 것도 없음 걍 for loop 안에 y=A@x 가 다임.
어딘가 cpu를 쓰는 연산이 섞여있는 거 같은데
댓글 0