엔비디아 예제서 GPU 읽기 256건 모두 가속 경로 탔다

| 김하린 기자

엔비디아($NVDA)는 기술 블로그에서 22일 파이썬으로 파일 데이터를 GPU 메모리에 읽을 때 실제 전송 경로를 확인하는 방법을 튜토리얼로 공개했다. 예제에서 1GiB 읽기는 256개 요청으로 나뉘었고, 통계 도구 gds_stats에는 가속 경로인 nvfs가 256건, 호환 경로인 posix가 0건으로 집계됐다.

글을 쓴 앤드루 호일(Andrew Hoyle)은 자신이 엔비디아 GPUDirect Storage 팀에서 데이터 이동 기능과 소프트웨어 라이브러리 연동을 개발한다고 소개했다. 엔비디아 개발자 포럼에는 이 블로그를 소개하는 게시물이 22일 올라왔다.

◇ KvikIO는 고르고, cuFile은 결정한다

GPUDirect Storage(GDS)는 지원되는 저장장치와 GPU 메모리 사이에서 CPU 메모리를 거치는 중간 복사를 줄이는 기술이다. 엔비디아 GPUDirect Storage 개요 문서는 하드웨어, 파일시스템, 설정에 따라 직접 경로가 성립하지 않을 수 있다고 설명한다. 이 경우 호환 모드에서는 POSIX 호출을 쓴다.

튜토리얼의 핵심은 경로가 두 단계로 정해진다는 점이다. 파이썬·C++ 인터페이스인 KvikIO가 cuFile을 호출할지, 자체 POSIX 호환 경로를 쓸지 먼저 고른다. cuFile을 호출하더라도 지원 파일시스템과 시스템 구성, 설정에 따라 nvidia-fs 기반 GDS 경로와 CPU 메모리를 거치는 호환 경로 중 하나가 정해진다. GPU 메모리를 목적지로 지정하고 cuFile을 호출했다는 사실만으로는 GDS 가속을 썼다고 말할 수 없다는 뜻이다.

KvikIO의 기본 설정 compat_mode는 AUTO다. cuFile을 시도하다 쓸 수 없으면 KvikIO의 POSIX 백엔드로 넘어간다. 튜토리얼 시스템에서 gds_threshold는 16KiB였고, 이보다 작은 읽기는 KvikIO POSIX 경로를 직접 쓴다.

◇ 환경 변수에 따라 통계가 갈린다

경로 확인에는 CUFILE_STATS_LEVEL=3을 설정한 뒤 gds_stats를 쓴다. 엔비디아는 설정별로 통계가 달라지는 양상을 보여줬다.

△ KVIKIO_COMPAT_MODE=off: KvikIO가 cuFile을 사용하고, 통계가 nvfs에 잡혔다. △ CUFILE_FORCE_COMPAT_MODE=true: cuFile 호출은 유지되지만 작업이 posix로 집계된다. △ KVIKIO_COMPAT_MODE=on: KvikIO가 cuFile을 건너뛰고 별도 POSIX 경로를 쓴다. cuFile 통계에는 기록되지 않는다.

gdscheck.py는 설치 구성과 지원 여부를 점검하는 도구이고, gds_stats는 프로세스에서 nvfs와 posix가 각각 몇 건 처리됐는지 보여주는 도구로 소개됐다.

◇ 256개 요청의 의미

256이라는 숫자는 KvikIO의 기본 작업 크기 4MiB에서 나온다. 1GiB를 4MiB 단위로 나누면 256개 cuFile 요청이 된다. KVIKIO_TASK_SIZE를 1GiB로 바꾸면 KvikIO는 큰 요청 하나를 cuFile에 보내고, cuFile이 이를 256MiB씩 네 작업 단위로 나눠 스케줄링한다. 엔비디아는 이 단위가 스케줄링 단위이며 개별 저장장치 전송 크기와는 다르다고 설명했다.

목적 GPU 버퍼가 cuFile에 등록되지 않은 예제에서는 등록된 GPU 바운스 버퍼를 거쳐 목적 버퍼로 복사하는 절차도 설명됐다.

시험 환경은 x86_64 서버에 엔비디아 H100, CUDA 13.3, cuFile 1.18, ext4로 포맷된 로컬 NVMe였다. GPU와 NVMe는 PCIe 브리지를 최대 하나만 거치는 PIX 방식으로 연결됐다. IOMMU와 ACS는 끄고 nvidia-fs 커널 모듈을 올렸다. 엔비디아는 이 구성이 튜토리얼의 시험 환경일 뿐 모든 시스템의 보장 조건은 아니라고 밝혔다. 엔비디아 문제 해결 문서는 다른 시스템에서 지원 파일시스템, 드라이버·라이브러리 버전, cuFile 설정, 하드웨어 연결을 함께 점검해야 한다고 안내한다.

KvikIO는 엔비디아 쿠다-X 데이터 과학 라이브러리의 일부다. 공식 저장소는 이를 cuFile용 파이썬·C++ 바인딩으로 소개하며, GDS를 쓸 수 없는 환경에서도 호스트와 장치 데이터를 읽고 쓸 수 있다고 설명한다. 쿠다-X 라이브러리와 관련해서는 본지가 앞서 엔비디아가 7월 쿠다-X 라이브러리를 에이전트용 도구로 추가했다고 밝힌 내용을 전한 바 있다.

◇ 이번 글이 다루지 않은 것

저장장치 쪽에서는 본지가 앞서 마이크론이 PCIe Gen 6 기반 데이터센터용 NVMe SSD로 저장장치와 컴퓨트 자원 사이의 데이터 이동 한계를 낮춘다고 설명한 내용을 전했다. 이번 튜토리얼은 하드웨어 사양이 아니라 소프트웨어 설정과 통계로 실제 경로를 확인하는 방법을 다룬다.

가상자산·블록체인 활용 사례는 엔비디아 글과 KvikIO·GDS 공식 문서에 언급되지 않았다. 엔비디아는 이 글에서 성능 향상률이나 처리량 비교 수치도 제시하지 않았다. nvfs=256은 해당 실행에서의 요청 집계이며, 속도 개선폭을 뜻하지 않는다.

본 기사는 시장 데이터 및 차트 분석을 바탕으로 작성되었으며, 특정 종목에 대한 투자 권유가 아닙니다.

Most Popular

지금 꼭 알아야 할 리포트