1주차 내용 관련하여 Pytorch Geometric과 Deep Graph Library의 간단한 GCN conv 예제 파일이 있습니다.
2주차 내용 관련하여 동일 구조의 3 layer GCN을 Cora dataset에 대하여 PyG와 DGL 플랫폼에서 구현한 후, profiling을 통하여 분석을 진행합니다. GNN의 구조는 다음과 같습니다.
GCNConv -> ReLU -> GCNConv -> ReLU -> GCNConv -> log_softmax
single epoch forwarding profiling result
cProfile을 이용한 profiling입니다. Pytorch geometric 실행시에는 gcn_conv.py가, deep graph library 실행시에는 graphconv.py가 호출되는 것을 확인할 수 있습니다.
Nvidia Nsight systems를 이용한 profiling입니다. nvtx를 이용하여 함수 영역 별 실행 시간을 구역별로 나누어져 관찰할 수 있으며, 관찰 결과 Convolution layer에서 cuBLAS의 cublasSgemm_v2를 호출하는 것을 확인할 수 있습니다.
pyprof, torch.autograd.profiler 라이브러리를 사용하고 nvprof를 호출하여 진행한 profiling입니다. 프로파일링 결과 volta_sgemm_128x64_(...)
이 두 플랫폼 모두에서 약 40%의 GPU 연산 시간을 차지했습니다.
3주차 내용 관련하여 각 dataset의 pyg, dgl 실행 코드와 그 실행 결과가 저장되어 있습니다.