• 회원가입
  • |
  • 로그인
  • |
  • 장바구니
  • News
    뉴스 신제품 신간 Culture & Life
  • 강좌/특집
    특집 강좌 자료창고 갤러리
  • 리뷰
    리뷰
  • 매거진
    목차 및 부록보기 잡지 세션별 성격 뉴스레터 정기구독안내 정기구독하기 단행본 및 기타 구입
  • 행사/이벤트
    행사 전체보기 캐드앤그래픽스 행사
  • CNG TV
    방송리스트 방송 다시보기 공지사항
  • 커뮤니티
    업체홍보 공지사항 설문조사 자유게시판 Q&A게시판 구인구직/학원소식
  • 디렉토리
    디렉토리 전체보기 소프트웨어 공급업체 하드웨어 공급업체 기계관련 서비스 건축관련 업체 및 서비스 교육기관/학원 관련DB 추천 사이트
  • 회사소개
    회사소개 회사연혁 출판사업부 광고안내 제휴 및 협력제안 회사조직 및 연락처 오시는길
  • 고객지원센터
    고객지원 Q&A 이메일 문의 기사제보 및 기고 개인정보 취급방침 기타 결제 업체등록결제
  • 쇼핑몰
딥러닝 수치해석 데이터의 병렬처리를 지원하는 파이썬 넘바 라이브러리
2024-02-02 1,827 12

BIM 칼럼니스트 강태욱의 이슈 & 토크

 

이번 호에서는 GPU CUDA(쿠다) 병렬처리를 지원하는 넘바(Numba) 라이브러리를 간략히 소개한다. CUDA는 현재 딥러닝 기술의 기반처럼 사용되며, 사실상 산업 표준이다. 딥러닝은 모든 연산이 텐서 행렬 계산이므로, 엔비디아 GPU에 내장된 수많은 계산 유닛(실수 계산에 특화된 CPU)들을 사용한다. CUDA의 강력한 수치해석 데이터 병렬처리 기능은 딥러닝뿐 아니라 디지털 트윈의 핵심인 시뮬레이션, 모델 해석 등에 필수적인 수치계산 엔진으로 사용된다.

 

■ 강태욱
건설환경 공학을 전공하였고 소프트웨어 공학을 융합하여 세상이 돌아가는 원리를 분석하거나 성찰하기를 좋아한다. 건설과 소프트웨어 공학의 조화로운 융합을 추구하고 있다. 팟캐스트 방송을 통해 이와 관련된 작은 메시지를 만들어 나가고 있다. 현재 한국건설기술연구원에서 BIM/GIS/FM/BEMS/역설계 등과 관련해 연구를 하고 있으며, 연구위원으로 근무하고 있다.
페이스북 | www.facebook.com/laputa999
홈페이지 | https://dxbim.blogspot.com
팟캐스트 | http://www.facebook.com/groups/digestpodcast

 

CUDA는 내장된 수많은 계산 유닛에 입력 데이터를 할당하고, 행렬연산을 하여 출력된 데이터를 CPU 메모리가 접근할 수 있도록 데이터 고속 전송/교환하는 역할을 한다. 그러므로, 딥러닝 모델 학습 성능은 GPU CUDA 성능에 직접적 영향을 받는다. 이벙 호에서는 파이썬(Python)에서 CUDA를 이용해 수치해석 등 계산 성능을 극대화할 수 있는 방법과 간단한 예제를 살펴본다.

 


그림 1. CUDA 아키텍처(출처 : Multi-Process Service : GPU Deployment and Management Documentation)

 

GPU CUDA 소개

CUDA는 게임 화면에 렌더링되는 3차원 이미지를 2차원 픽셀에 매핑하기 위한 수많은 행렬을 실시간 처리할 수 있도록 개발되어 왔다. 이런 이유로, 행렬 고속 연산이 필요한 딥러닝 학습에 적극 사용된 것이다.

 


그림 2. CUDA 기반 실시간 텐서 행렬 연산 결과

 

CUDA는 오랫동안 개발자의 요구사항을 반영해 발전되어, 개발 플랫폼으로서 탄탄한 생태계를 구축했다.

 


그림 3. 엔비디아 개발자 사이트

 


그림 4. CUDA 기반 레이트레이싱 렌더링 결과(출처 : Ray Tracey's blog : GPU path tracing tutorial 3 : GPU)

 

사실, 많은 스타트업이 이런 기능을 지원하는 딥러닝용 AI 칩을 FPGA 기법 등을 이용해 개발, 홍보하고 있으나, 이런 개발자 지원도구와 플랫폼 생태계 없다면 산업계에서는 의미가 없다고 볼 수 있다.

 

넘바 소개

넘바는 파이썬 기반 CUDA GPU 프로그래밍을 지원한다. 넘바는 컴파일 기술을 지원하여 CPU와 GPU 모드에서 코딩되는 데이터 구조, 함수 호출을 추상화한다. 넘바는 엔비디아의 CUDA 함수와 설정을 래핑한 고수준의 함수 API를 제공한다. 이를 통해 개발자가 CUDA의 세부 설정에 신경쓸 필요 없이, 데이터 병렬 처리 개발에만 집중할 수 있다.

 

개발 환경

넘바의 개발 환경은 다음과 같다.

  • NVIDIA Compute Capability 5.0 이상 CUDA 지원 GPU 장착 PC(2023년 12월 시점)
  • NVIDIA CUDA 11.2 이상
  • NVIDIA TX1, TX2, 자비에, 젯슨 나노
  • GTX 9, 10, 16 시리즈. RTX 20, 30, 40 시리즈. H100 시리즈

CONDA 환경의 경우, 다음과 같이 터미널을 이용해 CUDA 툴킷을 자동 설치할 수 있다.

conda install cudatoolkit

넘바는 cuda python을 이용해 엔비디아 GPU CUDA와 바인딩한다.

conda install nvidia::cuda-python

설치 방법은 다음과 같다.

conda install numba


 

■ 상세한 기사 내용은 PDF로 제공됩니다.

강태욱 laputa99999@gmail.com


출처 : 캐드앤그래픽스 2024년 2월호

포인트 : 1,000P (정기구독자 무료 다운로드)

© 캐드앤그래픽스 무단전재 및 재배포금지, 기사 게재 희망시 당사 문의
  • kakao

댓글 0

로그인 후 댓글을 달수있습니다
등록된 코멘트가 없습니다.