1 |
1
적어도 하나의 프로세서에 의해 수행되는, 가속기(accelerator)에서 실행되는 프로그램에 대한 중간표현을 생성하는 방법에 있어서,프로그램에서 명령에 대한 정보를 후킹(hooking)하는 단계;상기 후킹된 명령에 대한 정보가 가속기와 연관되어 있는지 여부를 판정하는 단계;상기 명령에 대한 정보가 가속기와 연관되어 있다고 판정된 경우, 상기 명령에 포함된 입출력 데이터에 대한 정보 및 연산에 대한 정보를 이용하여 상기 명령에 대한 제1 중간표현을 생성하는 단계; 및상기 제1 중간표현을 이용하여 하나 이상의 가속기를 위한 상기 프로그램에 대한 제2 중간표현을 생성하는 단계를 포함하고,상기 제1 중간표현 및 상기 제2 중간표현은 복수의 데이터 노드(nodes), 하나 이상의 연산 노드 및 상기 복수의 데이터 노드와 상기 하나 이상의 연산 노드의 입출력 관계를 나타내는 복수의 엣지(edges)를 포함하고,상기 제1 중간표현을 이용하여 하나 이상의 가속기를 위한 상기 프로그램에 대한 제2 중간표현을 생성하는 단계는,상기 제1 중간표현에 포함된 복수의 데이터 노드가 상기 하나 이상의 가속기에 저장되는 형태를 결정하는 단계 - 상기 하나 이상의 가속기에 저장되는 형태는 분산 형태 또는 병합 형태를 포함함 - ; 및상기 제1 중간표현에 포함된 복수의 데이터 노드가 상기 하나 이상의 가속기에 저장되는 형태에 대한 정보를 상기 제1 중간표현에 포함된 복수의 데이터 노드에 대응되는 제2 중간표현에 저장하는 단계를 포함하고,상기 제1 중간표현을 이용하여 하나 이상의 가속기를 위한 상기 프로그램에 대한 제2 중간표현을 생성하는 단계는,상기 하나 이상의 가속기에 저장되는 형태에 대한 정보를 기초로, 상기 제1 중간표현에 포함된 복수의 데이터 노드, 하나 이상의 연산 노드 또는 복수의 엣지 중 적어도 하나를 변경함으로써, 제2 중간표현을 생성하는 단계를 더 포함하고,상기 제1 중간표현에 포함된 복수의 데이터 노드, 하나 이상의 연산 노드 또는 복수의 엣지 중 적어도 하나를 변경함으로써, 제2 중간표현을 생성하는 단계는,상기 제1 중간표현에 포함된 복수의 데이터 노드 중 일부에 대한 상기 하나 이상의 가속기에 저장되는 형태가 분산 형태이고 상기 제1 중간표현에 포함된 복수의 데이터 노드 중 일부의 후속 데이터 노드에 대한 상기 하나 이상의 가속기에 저장되는 형태가 병합 형태인 경우, 상기 후속 데이터 노드와 연관된 연산 노드를 분산 형태의 정보를 합쳐 병합 병태로 변경하는 연산 노드로 변경함으로써, 제2 중간표현을 생성하는 단계를 포함하고, 상기 제1 중간표현 및 상기 제2 중간표현은, 상기 프로그램에서 상기 명령에 대한 정보와 연관된 연산 결과를 호출하는 요청에 응답하여 실행되는, 프로그램에 대한 중간표현을 생성하는 방법
|
2 |
2
제1항에 있어서,상기 프로그램은 딥 러닝(deep learning) 프로그램을 포함하고,상기 프로그램의 데이터는 텐서(tensor) 타입의 데이터를 포함하는, 프로그램에 대한 중간표현을 생성하는 방법
|
3 |
3
제1항에 있어서,상기 명령에 대한 정보가 상기 가속기와 연관되어 있지 않다고 판정된 경우, 상기 후킹된 명령에 대한 정보를 상기 프로그램으로 반환하는 단계를 더 포함하는, 프로그램에 대한 중간표현을 생성하는 방법
|
4 |
4
삭제
|
5 |
5
삭제
|
6 |
6
제1항에 있어서,상기 제1 중간표현을 이용하여 하나 이상의 가속기를 위한 상기 프로그램에 대한 제2 중간표현을 생성하는 단계는,상기 제1 중간표현에 포함되지 않은 데이터 노드, 연산 노드 또는 엣지 중 적어도 하나를 추가함으로써, 제2 중간표현을 생성하는 단계를 포함하는, 프로그램에 대한 중간표현을 생성하는 방법
|
7 |
7
제1항에 있어서,상기 하나 이상의 가속기는 복수의 가속기를 포함하고, 상기 프로그램에 대한 제2 중간표현은 상기 복수의 가속기에서 실행되기 위한 병렬화 방식에 대한 정보를 포함하는, 프로그램에 대한 중간표현을 생성하는 방법
|
8 |
8
제1항에 있어서,상기 프로그램에 대한 제2 중간표현은 상기 하나 이상의 가속기에서 실행되는 연산에 대한 정보를 포함하는, 프로그램에 대한 중간표현을 생성하는 방법
|
9 |
9
제1항 내지 제3항 및 제6항 내지 제8항 중 어느 한 항에 따른 방법을 컴퓨터에서 실행하기 위해 컴퓨터 판독 가능한 기록 매체에 저장된 컴퓨터 프로그램
|
10 |
10
정보 처리 시스템으로서,메모리; 및상기 메모리와 연결되고, 상기 메모리에 포함된 컴퓨터 판독 가능한 적어도 하나의 프로그램을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고,상기 적어도 하나의 프로그램은,프로그램에서 명령에 대한 정보를 후킹하고,상기 후킹된 명령에 대한 정보가 가속기와 연관되어 있는지 여부를 판정하고,상기 명령에 대한 정보가 가속기와 연관되어 있다고 판정된 경우, 상기 명령에 포함된 입출력 데이터에 대한 정보 및 연산에 대한 정보를 이용하여 상기 명령에 대한 제1 중간표현을 생성하고,상기 제1 중간표현을 이용하여 하나 이상의 가속기를 위한 상기 프로그램에 대한 제2 중간표현을 생성하기 위한 명령어들을 포함하고,상기 제1 중간표현 및 상기 제2 중간표현은 복수의 데이터 노드, 하나 이상의 연산 노드 및 상기 복수의 데이터 노드와 상기 하나 이상의 연산 노드의 입출력 관계를 나타내는 복수의 엣지를 포함하고,상기 제1 중간표현을 이용하여 하나 이상의 가속기를 위한 상기 프로그램에 대한 제2 중간표현을 생성하는 것은,상기 제1 중간표현에 포함된 복수의 데이터 노드가 상기 하나 이상의 가속기에 저장되는 형태를 결정하는 것 - 상기 하나 이상의 가속기에 저장되는 형태는 분산 형태 또는 병합 형태를 포함함 - ,상기 제1 중간표현에 포함된 복수의 데이터 노드가 상기 하나 이상의 가속기에 저장되는 형태에 대한 정보를 상기 제1 중간표현에 포함된 복수의 데이터 노드에 대응되는 제2 중간표현에 저장하는 것을 포함하고,상기 제1 중간표현을 이용하여 하나 이상의 가속기를 위한 상기 프로그램에 대한 제2 중간표현을 생성하는 것은,상기 하나 이상의 가속기에 저장되는 형태에 대한 정보를 기초로, 상기 제1 중간표현에 포함된 복수의 데이터 노드, 하나 이상의 연산 노드 또는 복수의 엣지 중 적어도 하나를 변경함으로써, 제2 중간표현을 생성하는 것을 더 포함하고,상기 제1 중간표현에 포함된 복수의 데이터 노드, 하나 이상의 연산 노드 또는 복수의 엣지 중 적어도 하나를 변경함으로써, 제2 중간표현을 생성하는 것은,상기 제1 중간표현에 포함된 복수의 데이터 노드 중 일부에 대한 상기 하나 이상의 가속기에 저장되는 형태가 분산 형태이고, 상기 제1 중간표현에 포함된 복수의 데이터 노드 중 일부의 후속 데이터 노드에 대한 상기 하나 이상의 가속기에 저장되는 형태가 병합 형태인 경우, 상기 후속 데이터 노드와 연관된 연산 노드를 분산 형태의 정보를 합쳐 병합 병태로 변경하는 연산 노드로 변경함으로써, 제2 중간표현을 생성하는 것을 포함하고,상기 제1 중간표현 및 상기 제2 중간표현은, 상기 프로그램에서 상기 명령에 대한 정보와 연관된 연산 결과를 호출하는 요청에 응답하여 실행되는, 정보 처리 시스템
|