1 |
1
신경망 연산을 수행하는 장치에 있어서,입력된 하드웨어의 명세 파일에 기초하여, 상기 신경망 연산에 대응하는 복수의 루프(loop) 구조들을 획득하고,상기 복수의 루프 구조들 각각에 대응하는 중간 표현 코드(intermediate representation code)를 생성하고,상기 복수의 루프 구조들에 대응하는 중간 표현 코드들 각각에 포함된 명령어들을 스케줄링(scheduling)하고,상기 중간 표현 코드들의 스케줄링에 따라 예측된 레이턴시(latency) 값들에 기초하여, 상기 중간 표현 코드들 중 어느 하나를 선택하고,상기 선택된 중간 표현 코드의 스케줄링에 기초하여, 상기 중간 표현 코드에 포함된 명령어들을 상기 장치에 포함된 하드웨어의 자원에 할당하는,적어도 하나의 프로세서를 포함하는,장치
|
2 |
2
제1항에 있어서,상기 복수의 루프 구조들은복수의 타일링 크기(tiling size)들 및 복수의 데이터 플로우들(dataflows)의 조합에 기초하여 결정되는,장치
|
3 |
3
제1항에 있어서,상기 프로세서는,상기 복수의 루프 구조들을 획득함에 있어서,상기 신경망 연산에 대응하는 복수의 타일링 크기들 및 복수의 데이터 플로우들을 획득하고,상기 하드웨어의 명세 파일에 기초하여, 상기 획득된 복수의 타일링 크기들을 프루닝(pruning)하며,상기 프루닝된 타일링 크기들 및 상기 복수의 데이터 플로우들의 조합들에 대응하는 상기 복수의 루프 구조들을 획득하는,장치
|
4 |
4
제3항에 있어서,상기 프로세서는,상기 획득된 복수의 타일링 크기들을 프루닝(pruning)함에 있어서,상기 하드웨어의 명세 파일에 포함된 컴퓨팅 어레이의 크기에 기초하여, 상기 컴퓨팅 어레이의 크기에 대응되지 않는 타일링 크기를 제거하는 동작; 및상기 하드웨어의 명세 파일에 포함된 타일링 방향에 관한 제한 조건에 기초하여, 상기 제한 조건에 대응되는 방향에 대응하는 타일링 크기를 제거하는 동작중 적어도 하나를 수행하는,장치
|
5 |
5
제1항에 있어서,상기 프로세서는,상기 중간 표현 코드를 생성함에 있어서,상기 루프 구조들 각각에 대응하여, 해당 루프 구조에 포함된 데이터 간의 종속 관계에 기초하여, 상기 해당 루프 구조에 대응하는 중간 표현 코드를 생성하는,장치
|
6 |
6
제1항에 있어서,상기 프로세서는,상기 중간 표현 코드들 각각에 포함된 명령어들을 스케줄링함에 있어서,리스트 스케줄링 알고리즘에 기초하여, 상기 명령어들을 스케줄링하는,장치
|
7 |
7
제1항에 있어서,상기 프로세서는,상기 하드웨어의 자원에 할당함에 있어서,선형 할당자(linear allocator)에 기초하여, 상기 선택된 중간 표현 코드에 포함된 명령어들에 대응하는 데이터를 메모리에 할당하는,를 포함하는,장치
|
8 |
8
제1항에 있어서,상기 하드웨어의 명세 파일은상기 장치에 포함된 하드웨어의 컴퓨팅 어레이의 구조에 관한 정보를 포함하는,장치
|
9 |
9
제1항에 있어서,상기 신경망 연산은CNN의 합성곱 레이어에서 수행되는 합성곱 연산을 포함하는,장치
|
10 |
10
신경망 연산의 스케줄링 방법에 있어서,상기 신경망 연산을 수행하는 하드웨어의 명세 파일에 기초하여, 상기 신경망 연산에 대응하는 복수의 루프(loop) 구조들을 획득하는 단계;상기 복수의 루프 구조들 각각에 대응하는 중간 표현 코드(intermediate representation code)를 생성하는 단계;상기 복수의 루프 구조들에 대응하는 중간 표현 코드들 각각에 포함된 명령어들을 스케줄링(scheduling)하는 단계;상기 중간 표현 코드들의 스케줄링에 따라 예측된 레이턴시(latency) 값들에 기초하여, 상기 중간 표현 코드들 중 어느 하나를 선택하는 단계; 및상기 선택된 중간 표현 코드의 스케줄링에 기초하여, 상기 중간 표현 코드에 포함된 명령어들을 상기 하드웨어의 자원에 할당하는 단계를 포함하는,스케줄링 방법
|
11 |
11
제10항에 있어서,상기 복수의 루프 구조들은복수의 타일링 크기(tiling size)들 및 복수의 데이터 플로우들(dataflows)의 조합에 기초하여 결정되는,스케줄링 방법
|
12 |
12
제10항에 있어서,상기 복수의 루프 구조들을 획득하는 단계는상기 신경망 연산에 대응하는 복수의 타일링 크기들 및 복수의 데이터 플로우들을 획득하는 단계;상기 하드웨어의 명세 파일에 기초하여, 상기 획득된 복수의 타일링 크기들을 프루닝(pruning)하는 단계; 및상기 프루닝된 타일링 크기들 및 상기 복수의 데이터 플로우들의 조합들에 대응하는 상기 복수의 루프 구조들을 획득하는 단계를 포함하는,스케줄링 방법
|
13 |
13
제12항에 있어서,상기 획득된 복수의 타일링 크기들을 프루닝(pruning)하는 단계는상기 하드웨어의 명세 파일에 포함된 컴퓨팅 어레이의 크기에 기초하여, 상기 컴퓨팅 어레이의 크기에 대응되지 않는 타일링 크기를 제거하는 단계; 및상기 하드웨어의 명세 파일에 포함된 타일링 방향에 관한 제한 조건에 기초하여, 상기 제한 조건에 대응되는 방향에 대응하는 타일링 크기를 제거하는 단계중 적어도 하나를 포함하는,스케줄링 방법
|
14 |
14
제12항에 있어서,상기 중간 표현 코드를 생성하는 단계는상기 루프 구조들 각각에 대응하여, 해당 루프 구조에 포함된 데이터 간의 종속 관계에 기초하여, 상기 해당 루프 구조에 대응하는 중간 표현 코드를 생성하는 단계를 포함하는,스케줄링 방법
|
15 |
15
제10항에 있어서,상기 중간 표현 코드들 각각에 포함된 명령어들을 스케줄링하는 단계는리스트 스케줄링 알고리즘에 기초하여, 상기 명령어들을 스케줄링하는 단계를 포함하는,스케줄링 방법
|
16 |
16
제10항에 있어서,상기 하드웨어의 자원에 할당하는 단계는선형 할당자(linear allocator)에 기초하여, 상기 선택된 중간 표현 코드에 포함된 명령어들에 대응하는 데이터를 메모리에 할당하는 단계를 포함하는,스케줄링 방법
|
17 |
17
제10항에 있어서,상기 하드웨어의 명세 파일은상기 하드웨어의 컴퓨팅 어레이의 구조에 관한 정보를 포함하는,스케줄링 방법
|
18 |
18
제10항에 있어서,상기 신경망 연산은 CNN의 합성곱 레이어에서 수행되는 합성곱 연산을 포함하는,스케줄링 방법
|
19 |
19
제10항에 있어서,상기 하드웨어는 합성곱 연산을 수행하는 CNN 가속기를 포함하는,스케줄링 방법
|
20 |
20
하드웨어와 결합되어 제10항 내지 제19항 중 어느 하나의 항의 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램
|