남을 행복하게 하는 것은 향수를 뿌리는 것과 같다. 뿌릴 때는 자기에게도 몇 방울 정도는 묻기 때문이다.
-탈무드-
5 MON (3h 35m)
💨 1시간 공부해야하더라도 일단 집 밖으로 나가자.
- SSAFY 면접 준비
- 지난 면접 스터디 질문에 대한 답변 정리
- 메타버스 PT 면접 준비
- 기계학습개론
- CNN
- receptive field
- padding(valid, same), stride
- filters
- feature maps. representation learning.
- pooling layer
- Goal: subsample
- introduces some level of invariance to small translations.
6 TUE (6h 26m)
🤫 면접 날짜와 기계학습개론 시험 날짜가 겹쳐 버렸네.
- SSAFY 면접 준비
- PT 면접 준비: 인사 → 주제강조 및 발표내용 요약 → 전략(간단하게) → 고려요인 → 전략(구체적으로) → 예상되는 어려움 → 극복방안 → 마무리 전체 요약
- 면접 관련 영상
대규모 병렬 컴퓨팅
[Floating Point Numbers]
- 실수의 표현
- 고정 소수점 방식 (fixed)
- 부동 소수점 방식 (IEEE 754)
- IEEE 754
- sign X mantissa X 2^exponent
- sign: 1bit
- exponent: excess-128 code
- mantissa: normalization, denormalization
- 정밀도 한계
- naïve getSum()
- imporved getSum()
- float-safe 최적화: float용 함수에 f 붙이기
- CUDA Runtime Math Library
- __funcname(): intrinsic functions(내장함수)
- -use_fast_math 컴파일러 옵션
- sincosf(): sin, cos 한 번에 계산하는 함수
__fmaf_rn()
: 반올림, __fmaf_rd()
: 반내림
[atomic Operations]
- 용도
- race conditions 해결
- 예제: 은행 통장 동시 update
- 전통적인 해결책: memory locking
- 새로운 해결책: atomic operations
- global communication
- 특징
- hardware에서 지원하는 single step 연산
- uninterruptable
- NVCC with ‘—arch sm_XX’ option
- atomic CAS operation
- compare and swap
int atomicCAS(int* address, int old_value, int new_value);
- int 형만 지원
- float 사용하려면 int와 비트 수가 같으니 이것을 간접 이용
- type reinterpretation intrinsic functions
__float_as_int()
, __int_as_float()
- type conversion intrinsic functions랑 다름 (
__int2float_rd()
같은 것)
- atomicAdd_system: system 내의 모든 GPU에 대해서 atomic
- atomicAdd_block: thread-block 내의 thread 들에 대해서만 atomic
7 WED (5h 37m)
🐥 저번보다 조금 더 안정적인 면접 진행했다. 스터디는 효과적.
- SSAFY 모의 면접
- 시선 처리 정확하게
- 제스쳐도 사용해보기
- 장점, 단점 생각하기
- 잘나면 들을 이유 없음. 부족한 점 어필하기
대규모 병렬 컴퓨팅
[histogram]
- Image to matrix
- histogram analysis (32-level)
- 1byte 단위가 아니라,
4byte
단위로 처리해야 빠름
- global memory에 바로 저장하는 것이 아닌, shared memory에 저장하여
atomicAdd_block()
함수를 사용하여 block version을 사용하면 빠름
[Reduction Problem]
- reduction operation
- 여러 숫자들을 종합해서 1개의 지표로 제시하는 것
- 통계 분야에서 자주 발생
- Sequential Reduction Algorithm
- 전통적인 계산 방법
- a single for-loop →
O(n)
- Parallel Reduction Tree Algorithm
- number of operations →
O(n)
- number of steps →
log(n)
-단, 무제한 core 필요
- work-efficient parallel algorithm
- 구현
- global memory에서는 atomicAdd()
- 쓰레드 블록 안에서 1024개 더할 때는 shared memory 안에서 토너먼트 알고리즘 적용
- stride 계산
8 THU (7h 12m)
9 FRI (6h 58m)
10 SAT (4h 8m)
🤕 머리 아프다.
- 대규모병렬컴퓨팅 시험
- SSAFY 면접 준비
- 알고리즘2 시험 공부
11 SUN (day off)