본문 바로가기

SASS_Probe

ReLU 의 수학적 성질과 Lowering 표현의 대응 관찰

1. 문서의 목적

ReLU CUDA 커널의 명령어를 실행 순서대로 해설하는 것이 아님

ReLU 가 가진 수학적 특징들이 PTX, SASS 와 같ㅇ느 lowering 표현에서 어떠한 조합과 구조로 나타나는지를 관찰하는 것

수학적 성질은 lowering 표현에서 반드시 하나의 명령어와 일대일 대응하지 않음

 

2. 관찰 대상 CUDA 표현

float v = x[i]
y[i] = v > 0.0f ? v : 0.0f

소스 코드의 표면적인 구조는 비교와 선택이다. 

그러나 실제 lowering 에서는 비교와 선택이 각각 별개의 명령으로 유지되지 ㅇ낳았다.

PTX

max.ftz.f32 %f2, %f1, 0f00000000;

SASS

FMNMX.FTZ R7, RZ, R2, !PT;

CUDA 의 조건식은 다음과 같이 정규화 되었다.

  • max(0, x)

 

3. 비음수 공간으로의 사영

3.1 수학적 성질

실수 전체 공간을 비ㅡㅇㅁ수 공간으로 보낸다.

3.2 Lowering 표현

핵심 피연산자

  • R2 : 입력값
  • RZ : 제약 공간의 경계값 0
  • R7 : 결과값

사영의 의미는 FMNMX 라는 명령과 RZ 라는 zero operand 의 조합으로 구성된다. 

 

4. 입력 공간의 영역 분할

4.1 수학적 성질

두 영여긍로 공간을 나눔, 서로 다른 함수르 ㄹ선택한다.

4.2 Lowering 표현

CUDA 소스에서는 영역 구분이 특정 조건으로 명시되어 있다.

하지만 실제 PTX, SASS 에서는 부호를 판별하는 별도의 prediccate 명령이 나타나지 않았다. 

입력 부호에 따른 별도의 제어 흐름도 생성되지 않았음

대신 두 영역에 대한 선택이 다음 명령 내부에 포함되었따.

  • FMNMX.FTZ

즉, 수학적으로 존재하는 영역 분할이 기계어에서 반드시 두 개의 제어 흘므으로 나타나는 것은 아니다.

수학적 영역 분할 -> 단일 명령 내부의 값 선택

 

5. 조각별 선형성

5.1 수학적 성질

각 영역 안에서는 선형이지만, 전체 함수는 선형이 아니다.

 

5.2 Lowering 표현

조각별 함수라는 이유만으로 각 조각에 대응하는 별도의 basic block 이 생성되지는 않았다. 

대신 하나의 FMNMX 가 두 조각을 모두 포함한다.

따라서 이번 lowering 에서 조각별 선형성은 제어 흐름의 분할이 아니라 다음 형태로 나타난다.

  • 여러 선형 조각 - 조각 선택 의미를 가진 하나의 opcode

이는 수학적 조각의 개수와 기계어의 basic block 개수가 반드시 일치하지 ㅇ낳는다는 것을 보여준다.

 

6. 선택적 정보 보존

6.1 수학적 성질

모든 입력 정보를 동일하게 처리하지 않음

 

6.2 Lowering 표현

SASS 의 핵심 피연산자 관계는 다음과 같다

  • R2 = input x
  • RZ = 0
  • R7 = FMNMX(RZ, R2)

양수 영역에서는 입력값이 결과로 선택된다.

입력 레지스터의 값이 그대로 보존

음수 영역에서는 zero register 가 결과로 선택된다.

선택적 정보 보존은 데이터 의존성 중 하나를 선택하느 구조로 나타난다. 

 

7. 비가역석ㅇ

7.1 수학적 성질

음수 영역의 서로 다른 입력들을 모두 하나의 값으로 보낸다.

7.2 Lowering 표현

비가역성은 별도 SASS 명령으로 나타나지 않은낟. 

이는 opcode 의 이름이 아니라, opcode 가 정의하는 함수의 다대일 상태 변환에 존재한다.

 

8. 단조성

8.1 수학적 성질

단조 증가

 

8.2 Lowering 표현

단조성을 나타내는 별도의 modifier 나 명령이 존재하지 않음

단조성이 다음 명령의 함수 의미에 내포된다.

  • FMNMX.FTZ R7, RZ, R2, !PT

입력 증가에 따라 감소하지 않는다는 사실로부터 단조서응ㄹ 확인할 수 있다.

 

9. 비팽창성

9.1 수학적 성질

입력 사이의 거리를 확대하지 않는다.

 

9.2 Lowering 표현

비팽창성도 특정 opcode 나 레지스터 패턴으로 직접 표시되지 않는다. 

즉, 명령을 발견하는 것과 그 명령이 가진 수학적 성질을 확인하는 것은 서로 다른 단계다.

 

10. 원소별 독립성

10.1 수학적 성질

텐서에 대한 relu 는 각 원소에 독립적으로 적용된다. 

 

10.2 Lowering 표현

각 스레드의 핵심 연산 구조

  • LDG x[i]
  • FMNMX
  • STG y[i]

다음과 같은 스레드 간 연산은 나타나지 않는다.

  • shared memory exchange
  • warp shuffle
  • atomic operation
  • barrier
  • reduction

하나의 명령이 아닌 다으 ㅁ구조의 조합으로 나타난다.

  • 스레드별 독립 주소
  • 로컬 레지스터 연ㅇ산
  • 스레드 간 통신 부재

 

11. 조건부 의미와 분기 없는 실행

11.1 수학적 특징

수학적으로 조건부 함수라고 해서 반드시 하드웨어의 control-flow brnch 를 사용해야 하는 것은 아니다.

 

11.2 Lowering 표현

조건부 의미가 제어 흐름이 아니라 값 선택형 산술 명령으로 변환되었다. 

 

12. 이번 커널에서 직접 확인할 수 없는 성질

  • 멱등성
  • 양의 동차성
  • 기울기의 선택적 전달

 

13. 결론

PTX 에서 다음으로 정규화

  • max.ftz.f32

SASS

  • FMNMX.FTZ R7, RZ, R2, !PT

비음수 사영은 하나의 opcode 만으로 설명되는 것이 아니다.

세 요소의 조합으로 구성