CUDA Flux: CUDA 애플리케이션을 위한 경량 명령어 프로파일러
요약
CUDA Flux는 GPU 애플리케이션의 컴퓨트 커널 실행 빈도를 분석하는 경량 명령어 프로파일러입니다. LLVM과 CUDA SDK를 기반으로 하며, 사용자가 컴파일된 바이너리를 실행할 때 bbc.txt 파일을 생성하여 각 커널 블록별 상세 실행 카운터를 제공합니다.
핵심 포인트
- GPU 애플리케이션의 기본 블록 실행 빈도를 분석하는 프로파일러입니다.
- LLVM 11.0 및 CUDA SDK >= 9.0을 주요 의존성으로 사용합니다.
- 실행 결과로 bbc.txt 파일이 생성되며, 커널별 상세 카운터 정보를 담고 있습니다.
- 환경 변수 MEKONG_PROFILINGMODE를 통해 프로파일링 단위를 제어할 수 있습니다.
CUDA Flux: CUDA 애플리케이션을 위한 경량 명령어 프로파일러
CUDA Flux는 컴퓨트 커널의 기본 블록 실행 빈도(basic block executions frequencies)를 보고하는 GPU 애플리케이션용 프로파일러입니다.
의존성 (Dependencies)
-
LLVM:
CUDA Flux는 llvm 11.0을 사용하여 테스트 및 개발되었습니다.
git clone --branch release/11.x https://github.com/llvm/llvm-project.git
CMake 설정:
cmake -DLLVM_ENABLE_PROJECTS=clang -DCMAKE_INSTALL_PREFIX=/opt/llvm-11.0
-DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=ON
-DLLVM_ENABLE_DOXYGEN=OFF -DLLVM_BUILD_DOCS=OFF -GNinja
...
* re2c lexer generator - http://re2c.org/ (패키지 관리자를 먼저 확인하세요)
* CUDA SDK >= 9.0
* yaml 패키지가 설치된 Python (python3 권장)
* environment-modules (선택 사항이지만 권장됨)
## 설치 (Install)
LLVM과 CUDA가 경로에 있는지 확인하세요
git clone https://github.com/UniHD-CEG/cuda-flux.git
cd cuda-flux && mkdir build && cd build
...
## 사용법 (Usage)
cuda-flux 설치의 bin 폴더가 경로에 있는지 확인하세요.
더 좋은 방법: environment-module을 사용하여 cuda-flux를 로드하세요.
module load /opt/cuda-flux/module/cuda_flux # LLVM과 CUDA는 먼저 로드되어야 합니다!
CUDA 애플리케이션을 컴파일합니다:
clang_cf++ --cuda-gpu-arch=sm_35 -std=c++11 -lcudart test/saxpy.cu -o saxpy`
일반적으로 바이너리를 실행합니다: `./saxpy`
출력:
만약 커널이 실행되었다면 bbc.txt 파일이 생성됩니다. 각 커널 실행은 다음 정보를 포함하는 한 줄을 결과로 냅니다:
* 커널 이름 (kernel name)
* gridDim{X,Y,Z}
* blockDim{X,Y,Z}
* 공유 메모리 크기 (shared Memory size)
* 프로파일링 모드 (Profiling Mode) (full, CTA, warp)
* 각 블록에 대한 실행 카운터 목록 (List of executions counters for each block)
모든 커널의 PTX 명령어는 `PTX_Analysis.yml` 파일에 저장됩니다. 기본 블록(Basic Blocks)의 순서는 bbc.txt 파일의 카운터 순서와 일치합니다.
프로파일링 모드는 환경 변수 `MEKONG_PROFILINGMODE`로 제어됩니다. 이 변수가 설정되지 않았거나 0으로 설정되면 모든 스레드가 프로파일링되며, 이는 권장되는 설정입니다. `export MEKONG_PROFILINGMODE=1`은 하나의 CTA만 프로파일링하고, `export MEKONG_PROFILINGMODE=2`는 오직 하나의 워프(warp)만 프로파일링합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub ML Hardware의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기