26P by GN⁺ 2일전 | ★ favorite | 댓글 2개
  • CUDA 프로그래밍을 배우기 위해 어떤 책/과정/프로젝트를 수강해야 할지 궁금 (일하고자 하는 많은 회사들이 CUDA경험을 요구하기 때문)

HN의 답변들 정리

  • 학습 자료와 첫걸음

    • NVIDIA 공식 CUDA Programming GuideNVIDIA의 아카이브 도서 추천
    • 작은 예제 프로그램부터 시작해 점차 병렬화 연습, 기존 C/C++ 지식이 매우 중요
    • 오픈소스 코드(GitHub 등)와 LLM(예: ChatGPT) 활용하여 코드 구조를 해석하고 실습
    • 약 6~8주 계획으로 실습 위주로 접근 권장
  • 필요 하드웨어 및 환경

    • 최근 10년 이내 NVIDIA GPU(특히 Turing/RTX 20xx, Ampere/RTX 30xx 이상)라면 충분, 구형(Maxwell 이전)은 지원 및 성능 측면에서 한계
    • CUDA Toolkit 최신 버전 사용, GPU의 Compute Capability 확인 필수(지원 표 참고)
    • Windows, Linux 모두 가능하며, 환경에 따라 Docker 및 VPS도 활용 가능
    • GPU가 없는 경우 leetgpu.com과 같은 온라인 에뮬레이터로 체험 가능
  • 병렬 프로그래밍 기본기

    • CUDA 문법 자체보다 병렬 알고리즘, 하드웨어 아키텍처 이해가 더 중요
    • 대표 서적:
      • Programming Massively Parallel Processors (PMPP)
      • Foundations of Multithreaded, Parallel, and Distributed Programming
      • Scientific Parallel Computing
      • The Art of High Performance Computing (Victor Eijkhout, 무료)
    • CUDA의 실제 현업 요구는 cuBLAS, cuDNN 등 CUDA 기반 라이브러리 활용 및 병렬 성능 극대화에 집중
  • 학습 방법론

    • 단순 문법 학습보다 작은 CPU 코드를 CUDA로 포팅 → 성능 벤치마크 → 점진적 최적화 방식 권장
    • 처음에는 정확성 중심, 이후 성능 최적화(메모리 관리, shared memory, register 활용 등) 단계적 적용
    • 실습 예제: prefix scan, GEMM, n-body simulation 등 고전 병렬 알고리즘 추천
    • CUDA Thrust, CUTLASS, cub 등 고수준 추상화 라이브러리 우선 학습, 직접 구현은 나중에 도전
  • 실무와 커리어

    • CUDA 경험 요구는 대부분 딥러닝, 데이터 엔지니어링, HPC(과학계산), 게임 그래픽스 등에서 발생
    • 단순히 PyTorch/Tensorflow가 아닌, 핵심 CUDA 커널/라이브러리 최적화 경험을 요구하는 자리도 있음
    • 실무적 전문성을 쌓으려면 PTX, nvcc, cuobjdump, Nsight Systems/Compute 등 로우레벨 툴 활용 능력도 중요
    • 커뮤니티 참여: gpumode Discord, GPU Puzzles 등 활발한 커뮤니티에서 실전 코드 리뷰와 토론
  • 주의 및 현실적인 조언

    • 시작은 쉽지만, 하드웨어별(아키텍처/명령어셋) 최적화와 호환성 확보는 매우 어렵고, 진입장벽이 높음
    • 실제로는 직업 경험과 네트워크가 중요하며, 자기 주도 학습만으로는 현업 경력으로 대체될 수 없음
    • CUDA는 하드웨어/병렬컴퓨팅/알고리즘/최적화가 모두 맞물린 분야이므로 한 분야에 집중해서 깊이 파고드는 전략 추천

글쎄요. cuda를 직접 사용할 경우가 있긴 할련지. 특히 한국에서요

Hacker News 의견
  • 2008년 NVidia cudacontest 참가자로서, 인도에서 제출한 몇 안 되는 사람 중 한 명으로 BlackEdition Card 참가상도 받은 경험을 바탕으로 내가 따라온 방법 공유함

    • NVidia CUDA Programming Guide 참고
    • NVidia에서 배포한 CUDA Programming 관련 도서 활용(developer.nvidia.com/cuda-books-archive 참조)
    • 기존 구현 기반으로 작은 프로그램부터 작성(강력한 C 언어 구현력 필수이므로 필요하다면 복습 권장)
    • 필요한 Toolchain, 컴파일러 설치 및 작업용 하드웨어 확보 가정
    • Github의 CUDA 프로젝트 코드 분석 및 최신에는 LLM 활용해서 코드 설명 요청 가능
    • 작지만 병렬처리 기반 프로그램부터 점차 확대
    • 1~2개월 차분히 진행하면 충분히 CUDA 프로그래밍 시작 가능
    • 요즘은 2007/08년보다 자료와 리소스가 풍부한 환경
    • 6~8주 학습 계획 수립 후 실행 추천
    • 언제든 질문 남기면 도울 수 있는 부분 최대한 안내 가능
      • 필요한 하드웨어 관련해서 구체적으로 궁금함. 5년 전쯤 나오 nvidia 그래픽카드만 있으면 충분한지, 아니면 더 특별한 사양이 필요한지 질문
      • 어떤 개발 환경을 사용하는지 궁금함. 아직도 Windows가 CUDA 주 개발 환경인지 확인 원함
  • Leela Chess Zero의 CUDA 코드 직접 살펴보니 이해할 만한 수준이었음

    • 당시 Leela는 transformer 대신 DCNN 구조를 사용했는데, fast.ai 영상 통해 DCNN 기초 쉽게 배움
    • Transformer는 더 복잡해 아직 학습 시작을 못함
    • CUDA 언어 자체는 C++ 기반이므로 C++ 경험 있으면 어렵지 않게 접근 가능
    • 다만 CUDA 개발자가 되고 싶다면 AI 프로그래밍 수준까지 도달 필요성 큼—AI는 CUDA보다 훨씬 깊고 방대한 영역이라 많은 시간과 실전 경험 필요
    • 그래도 실력 갖추게 되면 시장 수요 매우 높음
    • fast.ai 영상 강력 추천
    • 게임 분야라면 3D 그래픽스까지 얘기가 이어지는데, 최근은 훨씬 더 복잡해진 상황이라 입문 경로를 모르겠음
      • CUDA 개발자로 구직하는 게 현재 다른 소프트웨어 엔지니어 분야에 비해 부담이 적은지 질문. 현재 Java 미들웨어 개발자로서 CUDA와 AI 쪽이 커리어 전환에 좋을 것 같다는 의견
      • 이 코드가 여기 맞는지 확인 요청 및 두 가지 초보 질문
        • 왜 C++/CUDA를 직접 썼는지, 단순히 pytorch나 tensorflow로는 Leela 학습 속도가 부족한 건지
        • 그리고 tensorflow 코드도 있는데 그 이유에 대한 궁금증
  • 돈이 동기라면 HPC 및 수학적인 영역은 패스 추천

    • 해당 분야는 박사급이 아니면 실력이 아무리 좋아도 관심 받기 어려움
    • 진짜 돈이 되는 역량은 PTX, nvcc, cuobjdump, Nsight Systems, Nsight Compute 등 툴 마스터, 그리고 CUTLASS 같은 오픈소스 코드베이스 분석
    • 관련 실전 노트 참고 추천
    • 무엇보다 HN에만 머물지 말고 진짜 개발자 모여 있는 discord gpu mode 커뮤니티 참여 권장
      • 멋지고 실제적이지만 매우 틈새 분야로 보임
      • 진입 자체가 어려우며 게임 산업, 드라이버 등 한정된 분야에서만 쓰임
      • 처음부터 바로 그 단계까지 가려면 상당한 재능 필요성 언급
  • gpumode.com 리소스 및 디스코드 커뮤니티 수개월 동안 공부 거리를 충분히 제공

    • Programming massively parallel processors 책
    • nvidia cuda 공식 문서는 매우 포괄적
    • GPU-Puzzles도 도전 추천
      • ThunderKittens flashattention-2 예시 코드 보며 말로 설명하기 어려운 코드 복잡성 느낌
      • 이런 퍼즐은 '승자 독식' 구조라 실질적인 성취 차이는 1% 이내이며, 실습 자체가 큰 의미 없다는 생각
  • 학습 범위 쪼개서 접근성 높이기 추천

      1. CUDA 자체(프레임워크/라이브러리/추상화 레이어) 학습
      1. 고성능 컴퓨팅 기본(이것은 GPU, Nvlink 개념 넘어서 HPC 아키텍처 전반에 통용)
      1. 응용 분야 특화(Transformer면 Torch, Tensorflow 등 최신 고수준 추상화에서 출발)
    • 실제 CUDA 마스터 원한다면, 대규모 병렬처리 프로그래밍 원리 체험과 이해가 핵심이며 상당 부분 이식 가능한 스킬
      • 전직 GPU 개발자로서 나 역시 같은 조언, 특히 2번과 3번 강조
      • 취업 목표에 따라 달라지겠지만, 정말 필요한 것은 CUDA 라이브러리(cuDNN, cuBLAS, cuFFT 등) 경험일 수도 있음
      • 병렬 프로그래밍 원리 이해가 무엇보다 우선
      • 이 접근법이 정답이며, 2번 없이 1번부터 바로 배우면 더 큰 혼란만 초래
      • 추천 도서 안내
  • 개인적인 CUDA 학습 과정 경험 공유

    • 체계적이진 않으나 학계 및 연구에 도움된 방식
    • 박사 프로젝트 때문에 CUDA 직접 학습 필요
    • 연구실 내에 경험자 전무하여 NVIDIA 기본 과정(Getting Started with Accelerated Computing with CUDA C/C++ 및 python 버전)으로 개념 기초 익힘
    • 공식 튜토리얼 외 실제로는 시행착오 중심 학습 많았음
    • 온라인 튜토리얼, 책 활용했으나 함수나 API가 금방 바뀌어 구버전/신버전 혼동 많고, 내 GPU와 실 환경의 호환성 이슈까지 신경 써야 했음
    • 가장 어려웠던 점은 대부분 시간을 디버깅(생각보다 느린 원인 추적) 및 도구(예: "compute-sanitizer", Nsight) 사용에 쏟았던 부분
    • 조급해하지 말고, CPU에서 동작하는 간단한 프로젝트를 CUDA로 포팅 후 benchmark하면서 최적화 경험 쌓기 추천
    • 최적화는 맨 마지막에, 일단 올바른 동작 구현을 우선시
    • 동작은 느려도 메모리 손상 없는 커널이 최적화된 커널보다 더 가치 있음
      • 비슷한 박사과정 경험 공유—flashrnn 실습 결과물
      • 기본 원리와 GPU 구조 이해했다면 추천하는 워크플로우
        1. 커널 테스트 가능한 환경 세팅, 상위 레벨 언어로 된 Baseline과 비교
        2. 급한 프로젝트 없으면 기존 유명 문제(MatMul 등) 복습 또는 재구현—모든 케이스 다 하려 하지 말고 기능별로 집중
        3. 점진적으로 복잡도 높이기—루프, 그리드 병렬화, 전역/공유/레지스터 메모리 차례로 사용, 단순 행렬곱에서 TensorCore(MMA)까지 확장
        4. CUDA C Programming Guide 반복 탐독—실습하면서만 제대로 체득
        5. CUTLASS, ThunderKitten 등 상위 추상화도 케이스 따라 추천, JAX/Torch 환경이면 triton 우선 활용
      • PTX까지 마스터하려면 시간은 더 오래 걸리지만 실전에서 몸으로 익히는 과정 강조
      • CUDA 성능 디버깅 고통에 깊이 공감
  • 고등학생에게 CUDA 가르칠 때 활용한 자료 소개—혼자 전체 마스터엔 부족하지만 첫 시작에 도움이 되는 강좌

  • 아직 써보진 않았지만 꽤 괜찮아 보여서 추천하고 싶은 leetgpu.com 플랫폼

  • CUDA 엔지니어 채용하는 직무, 포지션, 기업군에 대한 현업 의견 요청

    • 현재는 많은 회사가 PyTorch처럼 CUDA 기반 라이브러리를 이용하지만, Native CUDA 개발 자체가 많은 회사에 필요한지 모르겠음
    • 직접 CUDA 중심으로 일하는 조직이나 역할 발굴을 기대
      • 우리 팀의 경우, 지리정보(geospatial) 데이터 분석에 CUDA 직접 활용
      • slippy map 타일을 래스터화하고 GPU로 래스터 요약 처리
      • 대부분 픽셀 단위 독립적 처리라 GPU에 적합
      • 행 단위로 요약 병렬처리 후 마지막에 모아서 처리
      • 다만 GPU로 데이터 복사 부분이 현재 병목
  • 시대 변화에 맞춰, Claude 등 LLM에 질문해서 결과 코드와 설명 한꺼번에 받는 방법 활용

    • 2025년엔 이렇게 해도 통할 수 있지만, 2026년은 한 단계 더 요구할 것이라는 의견