SW·AI 연구활동 발표대회

  • 고성능 컴퓨팅

    팀장
    김동현 (식품공학과 | 4)
좋아요 4
CUDA 플랫폼에서 희소 행렬 포맷에 따른 SpMM 분석
  • 참여 목적 및 참여 당시 활동 목표
  • 평소 저는 최적화 기술에 대해 관심이 있었으며, 이에 대한 공부와 연구를 해보고 싶었습니다.

    고성능 컴퓨팅 연구실에서 컴파일러, 행렬 및 텐서 연산, 머신 러닝 알고리즘 등 최적화에 관련된 연구를 하는 것을

    알게 되었고, 2022-동계(1-2월) SW연구생에 지원하여 참여하는 기회를 얻게 되었습니다.

    참여 당시, 부족한 사항이 많았기 때문에 김진성 교수님의 지도아래 GPUs기반 NVIDIA CUDA 플랫폼에서 이용하여 커널 함수 작성 및 CUDA 라이브러리의 사용법에 익숙해 지는 것이 목표였습니다. 


  • 연구ㆍ학습활동 결과
  •  ​NVIDIA의 CUDA플랫폼에서 희소-행렬, 밀집-행렬을 입력 값으로 받아 결과로 밀집-행렬을 출력하는 SpMM(Sparse-matrix dense-matrix multiplication) 연산을 위한 cuSPARSE라이브러리를 제공하며, 이는 심층 신경망, 그래프 신경망, 데이터 분석등과 같은 다양한 분야에서 핵심 연산이기 때문에 이러한 SpMM연산에 관한 많은 연구들이 있습니다. 또한, 희소 행렬은 대부분 원소들의 값이 0이기 때문에, 메모리 낭비와 행렬곱 계산에서 비효율적입니다. cuSPARSE 라이브러리에서는 희소 행렬의 0이 아닌 원소들의 값들만을 표현하기 위해, 희소 행렬의 COO, CSR, CSC 포맷 변환과 이러한 포맷에 대한 SpMM연산을 지원합니다. 

     최근, 기계 학습 등에서는 밀집 행렬의 원소 중 약 50%의 원소가 0인 값을 가지는 경우를 위해서 NVIDIA에서는 cuSPARSELt 라이브러리를 제공합니다. cuSPARSELt에서는 희소 행렬에서 일련의 4개의 원소 중 최소한 2개의 원소가 0을 가지는 2:4패턴(50% 희소성)의 SpMM연산을 지원하며, 2:4패턴을 위해 상대적으로 중요도가 낮은 원소들의 값을 0으로 바꾸는 가지치기 알고리즘을 제공합니다.

     희소 행렬의 COO, CSR, CSC 포맷에 대해 SpMM연산 성능과 2:4패턴(50% 희소성)에서 cuSPARSELt와 cuSPARSE라이브러리를 비교 분석 하고자 하였습니다.

     결과적으로 2:4패턴으로 가지치기된 희소 행렬에서는 cuSPARSELt가 cuSPARSE보다 훨씬 더 좋은 성능을 보여주었으며, cuSPARSE의 COO, CSR, CSC 포맷에 대한 SpMM 성능 차이는 거의 없었습니다.   

  • 참여 소감 및 향후 계획
  • GPUs를 활용하여 NVIDIA CUDA플랫폼에서 제공하는 라이브러리를 사용해보며 익숙해 질 수 있었습니다.

    CPU에서 직렬로 처리하는 방식과는 다르게 병렬로 처리함에 따라 속도 향상을 확인하고, CPU+GPU 이기종 아키텍처를

    잘 활용하면 소프트웨어 프로그램에서 좋은 성능을 낼 수 있을 것입니다.

    앞으로, 잘 만든 커널 함수를 작성해보고 GPUs 아키텍처에 따라 작업량을 잘 분배할 수 있는 연구와 컴파일러를 최적화 하는 연구를 해보고 싶습니다.

  • 증빙자료
  • 기타파일에 연구 논문 제출하겠습니다.

기타파일

첨부파일

중앙대학교 다빈치 sw tech fair 참가신청 닫기