임베디드시스템

Profiling + Batch

비숑주인 2024. 11. 13. 12:45

Profiling과 배치 처리: 성능 최적화를 위한 접근법

1. 정적 분석(Static Analysis)와 동적 분석(Dynamic Analysis)

  • 정적 분석은 코드를 실행하지 않고 코드를 검토하여 애플리케이션의 동작을 평가하는 방법이다.
  • 동적 분석은 애플리케이션 실행 중에 성능을 테스트하고 평가하는 방법이다.

2. 프로파일링이란?

  • 프로파일링은 애플리케이션 실행 중 성능 병목현상을 식별하고 최적화하기 위해 실행 동작을 측정하는 과정이다.
  • 주요 목표:
    • 성능 병목 제거를 통한 효율성 향상
    • CPU, 메모리, I/O 자원 최적화
    • 증가하는 부하를 처리할 수 있는 확장성 보장
    • 사용자 경험 개선

3. 프로파일링 도구 종류

  • CPU 프로파일링 도구: gprof, Perf, Intel VTune 등
  • GPU 프로파일링 도구: Nsight Systems, Nsight Compute 등
  • I/O 프로파일링 도구: Iostat, Dstat 등

4. Nsight Compute: GPU 분석 도구

  • 기능: 연산과 메모리 리소스 활용 시각화
  • 활용:Roofline 분석: 성능 병목현상 분석 (빨간색에 가까울수록 리소스가 몰렸고 아닐수록 여유롭다)

    • 처리량 분석: GPU 구성 요소 활용률 세부 분석
    • 워크로드 분석: 연산 및 메모리 자원 사용량 평가
  • GUI와 CLI(Command-Line Interface) 두 가지 방식으로 사용 가능:
    • CLI는 GUI보다 빠르며 디스플레이 설정이 필요하지 않다.
  • Instrument Code(optional) 
  • ex) 시작과 끝에 시간을 측정하는 코드 추가 등

5. 최적화 포인트

  • ex) 이 커널의 그리드가 장치에서 사용 가능한 리소스를 완전히 활용하기에는 너무 작다.
  • 해결 방법: 문제 크기 증가
    • 배치 처리(Batch Processing):
      • 여러 입력 데이터를 동시에 처리하여 리소스 활용도를 극대화한다.
      • 이를 통해 문제는 행렬 곱셈 및 누적으로 전환된다.

6. 배치 처리의 이점

  • 단일 데이터 샘플을 처리할 때보다 병렬성을 활용하여 성능이 향상된다.
  • 프로파일링 결과를 통해 비배치 처리와 비교해 시간 차이를 분석할 수 있다.