KR20220054397A - 커널 조정 파라미터를 예측하기 위한 방법 및 장치 - Google Patents

커널 조정 파라미터를 예측하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20220054397A
KR20220054397A KR1020227010635A KR20227010635A KR20220054397A KR 20220054397 A KR20220054397 A KR 20220054397A KR 1020227010635 A KR1020227010635 A KR 1020227010635A KR 20227010635 A KR20227010635 A KR 20227010635A KR 20220054397 A KR20220054397 A KR 20220054397A
Authority
KR
South Korea
Prior art keywords
words
word
program
executing
combination
Prior art date
Application number
KR1020227010635A
Other languages
English (en)
Inventor
제한다드 칸
다니엘 이사무 로웰
Original Assignee
어드밴스드 마이크로 디바이시즈, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 어드밴스드 마이크로 디바이시즈, 인코포레이티드 filed Critical 어드밴스드 마이크로 디바이시즈, 인코포레이티드
Publication of KR20220054397A publication Critical patent/KR20220054397A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3485Performance evaluation by tracing or monitoring for I/O devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • G06N3/0445
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • G06N3/0454
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/865Monitoring of software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Machine Translation (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

데이터를 저장하도록 구성된 메모리 및 메모리와 통신하는 프로세서를 포함하는 처리 성능을 개선하는 처리 디바이스가 제공된다. 프로세서는 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위해, 각각이 숫자 값을 갖는 조정 파라미터(tuning parameter)를 수신하고 조정 파라미터의 숫자 값을 워드로 변환하도록 구성된다. 프로세서는 또한, 하나 이상의 기계어 학습 알고리즘을 사용하여, 성능 효율성에 기초하여 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위한 워드의 조합을 예측하고 워드의 예측된 조합을 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위한 대응하는 숫자 값으로 변환하도록 구성된다.

Description

커널 조정 파라미터를 예측하기 위한 방법 및 장치
관련된 출원에 대한 상호 참조
본 출원은 미국 정규 출원 번호 제16/560,954호(출원일: 2019년 9월 4일, 발명의 명칭: "METHOD AND APPARATUS FOR PREDICTING KERNEL TUNING PARAMETERS")의 이득을 주장하고, 이 기초 출원은 이에 의해 본 명세서에 전문이 참조에 의해 원용된다.
프로그램의 성능 효율성은 예를 들면, 프로그램의 명령어가 하드웨어(예컨대, 집적 회로(IC) 또는 칩)에서 실행되는 속도 또는 시간의 양에 의해 결정된다. 하드웨어의 물리적 특성 및 사양은 하드웨어의 상이한 세대 또는 버전 사이에 차이가 있다. 그에 따라, 프로그램의 성능 효율성은 전형적으로, 하드웨어 디바이스의 상이한 세대 사이에 크게 차이가 있다. 프로그램은 전형적으로, 상이한 하드웨어에 대한 프로그램의 성능 효율성을 변경하기 위해 사용되는 조정 파라미터(tuning parameter)를 포함한다.
첨부된 도면과 결부하여 예로서 주어진 다음의 설명으로부터 더 상세한 이해가 얻어질 수 있고, 여기서:
도 1은 본 발명의 하나 이상의 특징이 구현될 수 있는 일 예시적인 디바이스의 블록도;
도 2는 부가적인 상세를 도시하는, 도 1의 디바이스의 블록도;
도 3은 프로그램 조정 파라미터를 예측하는 일 예시적인 방법을 도시하는 블록도; 및
도 4는 도 3에 도시된 언어 학습 및 예측을 구현하는 일 예시적인 방법을 도시한 도면.
식별된 하드웨어 디바이스에서 실행을 위해 프로그램이 배치되기 이전에, 프로그램은 전형적으로, 프로그램 조정 파라미터의 상이한 조합을 사용하여 프로그램을 실행함으로써 식별된 하드웨어에 대해 프로파일링되어, 다양한 성능 효율성을 야기한다. 식별된 하드웨어에 대한 프로그램 조정 파라미터는 결과적인 성능 효율성에 기초하여 선택된다.
프로그램의 성능 효율성은 프로그램의 조정 파라미터의 값에 기초하여 달라진다. 프로그램은 전형적으로, 각각이 복수의 상이한 선택 가능한 값(예컨대, 10개의 값)을 갖는 다수의 조정 파라미터(예컨대, 10개의 파라미터)를 포함한다. 이 조정 파라미터 값의 상이한 조합이 정확한 결과를 계산하지만, 이 결과는 다양한 성능 효율성으로 생성된다.
종래의 프로파일링 시스템은 솔루션 공간을 가로지르는 검색 알고리즘을 통해 프로그램(예컨대, GPU 계산 커널)의 조정 파라미터 값을 결정한다. 예를 들면, 행렬 곱셈 명령어에 대해, 종래의 시스템은 곱해질 행렬 크기의 각각의 조합에 대해 저장된 조정 파라미터 값의 데이터 베이스를 통해 지속적으로 검색해야 한다.
이 검색 알고리즘은 비용이 많이 들고 시간이 많이 소요된다. 예를 들면, 이 종래의 검색 알고리즘은 전형적으로, 프로그램(예컨대, 커널)을 조정하기 위해 많은 비용이 드는 계산 리소스의 큰 세트 및 많은 양의 시간을 요구한다. 게다가, 선택된 프로그램에만 조정이 적용된다. 선택되지 않은 프로그램의 실행은 전형적으로, 성능이 저하되고 사용자가 자신의 커널을 조정하도록 선택하는 것은 오랜 지연을 경험할 것이다. 또한, 이 종래의 검색 알고리즘은 각각의 프로그램에 대한 상이한 입력 크기 및 프로그램이 해결하려고 시도하는 상이한 유형의 문제를 설명하는 조정 파라미터 값을 제공하지 않는다.
본 명세서에서 설명된 디바이스 및 방법은 입력 값(예컨대, 이미지의 차원, 행렬의 차원, 컬러 채널의 수, 실행할 연산의 수를 포함하는 입력 텐서 값(input tensor value))에 기초하여 조정 파라미터 값을 예측하기 위해 기계 학습 알고리즘을 사용함으로써 비효율적인 검색 알고리즘의 사용 없이 식별된 하드웨어에서 실행될 프로그램에 대한 조정 파라미터 값을 효율적으로 결정한다.
입력 숫자 값에 기초하여 숫자 값을 출력하는 종래의 기계 학습 모델과 달리, 본 명세서에서 설명된 기계 학습 알고리즘은 입력 숫자 값을 워드(즉, 언어의 하나 이상의 문자)로 변환하고 언어 모델을 사용하여 입력된 워드로부터 파라미터를 예측한다. 언어 학습 알고리즘은 소스 언어(예컨대, 하나 이상의 숫자 값으로부터 변환된 워드 시퀀스 또는 입력 워드)로부터 타깃 언어(예컨대, 출력 워드 시퀀스)로 번역하는 것을 학습한다. 출력 워드는 그 다음, 실행 가능한 조정 파라미터 값을 얻기 위해 숫자 값으로 다시 변환된다.
조정 파라미터 값은 (병렬 입력과 대조적으로) 시퀀스로 프로그램에 입력된 조정 파라미터 값에 기초하여 예측되고 조정 파라미터 값을 스칼라 숫자 대신에 이산 워드로서 인코딩한다. 이산 워드는 그 다음, 신경 기계어 번역 기술(예컨대, 다층 퍼셉트론(Multi-Layer Perceptron: MLP)과 컨볼루션(convolution), 활성화, 배치 정규화, 드롭아웃 및 순환 신경망(RNN)과 같은 다른 ML 기초 요소의 조합을 사용하여 하나의 언어로부터의 문장을 또 다른 언어로 번역하는 기술)을 사용하여 번역된다.
종래의 언어 모델과 대조적으로, 본 명세서에서 설명된 기계 학습 언어 알고리즘은 미리 결정된(즉, 실행 시간 이전에 결정됨) 제약 조건(예컨대, 파라미터 값의 조합이 유효하지 않음, 스레드 당 할당된 레지스터의 최대 수 및 스레드 당 액세스 가능한 메모리 양)에 기초하여 조정 파라미터 값을 예측한다. 제약 조건은 동시에 존재할 수 없거나 유효하지 않은 결과를 생성할 값이 조정 파라미터 값으로서 예측되는 것을 방지한다. 그에 따라, 제약 조건은 조정 파라미터 값이 더 작은 공간(즉, 더 적은 수의 잠재적 파라미터 값)으로부터 예측되기 때문에 더 효율적인 예측 프로세스를 용이하게 하고 또한, 선택된 조정 파라미터 값이 유효하지 않은 결과를 회피하기 때문에 더 정확한 예측을 제공한다.
데이터를 저장하도록 구성된 메모리 및 메모리와 통신하는 프로세서를 포함하는 처리 성능을 개선하는 처리 디바이스가 제공된다. 프로세서는 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위해, 각각이 숫자 값을 갖는 조정 파라미터를 수신하고 조정 파라미터의 숫자 값을 워드로 변환하도록 구성된다. 프로세서는 또한, 하나 이상의 기계어 학습 알고리즘을 사용하여, 성능 효율성에 기초하여 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위한 워드의 조합을 예측하고 워드의 예측된 조합을 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위한 대응하는 숫자 값으로 변환하도록 구성된다.
식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위해, 각각이 숫자 값을 갖는 조정 파라미터를 수신하는 단계 및 조정 파라미터의 숫자 값을 워드로 변환하는 단계를 포함하는 처리 성능을 개선하는 방법이 제공된다. 방법은 또한, 하나 이상의 기계어 학습 알고리즘을 사용하여, 성능 효율성에 기초하여 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위한 워드의 조합을 예측하는 단계 및 워드의 예측된 조합을 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위한 대응하는 숫자 값으로 변환하는 단계를 포함한다.
컴퓨터로 하여금, 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위해 각각이 숫자 값을 갖는 조정 파라미터를 수신하는 단계 및 조정 파라미터의 숫자 값을 워드로 변환하는 단계를 포함하는 방법을 실행하게 하기 위한 명령어를 포함하는 비일시적 컴퓨터 판독 가능한 저장 매체가 제공된다. 방법은 또한, 하나 이상의 기계어 학습 알고리즘을 사용하여, 성능 효율성에 기초하여 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위한 워드의 조합을 예측하는 단계 및 워드의 예측된 조합을 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위한 대응하는 숫자 값으로 변환하는 단계를 포함한다.
본 명세서에서 사용된 바와 같이, 프로그램은 절차 또는 루틴(예컨대, 연산, 계산, 기능, 프로세스, 작업)을 수행하기 위해 하나 이상의 프로세서를 사용하여 실행될 명령어의 임의의 시퀀스를 포함한다. 본 명세서에 사용된 바와 같이, 프로세서에서의 프로그래밍된 명령어(예컨대, 애플리케이션, 구동기, 운영 체제 또는 다른 소프트웨어)의 실행은 페칭(fetching), 디코딩, 실행을 위한 스케줄링, 프로그래밍된 명령어의 특정한 부분(예컨대, 전체 화면에서 비디오의 렌더링)의 실행 및 실행 시작과 같지만 이들로 제한되지 않는 복수의 단계 중 임의의 것을 포함한다. 프로그래밍된 명령어는 하드웨어 디바이스에서 실행되는 프로그램의 성능 효율성을 제어하기 위해 사용된 조정 가능한(즉, 변경 가능한) 값을 갖는 조정 파라미터 및 조정 파라미터 설정을 포함한다.
도 1은 본 발명의 하나 이상의 특징이 구현될 수 있는 일 예시적인 디바이스(100)의 블록도이다. 디바이스(100)는 예를 들면, 컴퓨터, 게이밍 디바이스, 핸드헬드 디바이스, 셋톱 박스, 텔레비전, 모바일 폰, 또는 태블릿 컴퓨터를 포함할 수 있다. 디바이스(100)는 프로세서(102), 메모리(104), 저장 장치(106), 하나 이상의 입력 디바이스(108) 및 하나 이상의 출력 디바이스(110)를 포함한다. 디바이스(100)는 또한, 선택적으로 입력 구동기(112) 및 출력 구동기(114)를 포함할 수 있다. 디바이스(100)가 도 1에 도시되지 않은 부가적인 구성요소를 포함할 수 있음이 이해된다.
다양한 대안에서, 프로세서(102)는 중앙 처리 장치(CPU), 그래픽 처리 장치(GPU), 동일한 다이에 위치된 CPU 및 GPU, 또는 하나 이상의 프로세서 코어를 포함하고, 각각의 프로세서 코어는 CPU 또는 GPU일 수 있다. 다양한 대안에서, 메모리(104)는 프로세서(102)와 동일한 다이에 위치되거나, 프로세서(102)와 별개로 위치된다. 메모리(104)는 휘발성 또는 비휘발성 메모리 예를 들면, 랜덤 액세스 메모리(RAM), 동적 RAM, 또는 캐시를 포함한다.
저장 장치(106)는 고정 또는 탈착 가능한 저장 장치 예를 들면, 하드 디스크 드라이브, 고체 상태 드라이브, 광 디스크, 또는 플래시 드라이브를 포함한다. 입력 디바이스(108)는 제한 없이, 키보드, 키패드, 터치 스크린, 터치 패드, 검출기, 마이크로폰, 가속도계, 자이로스코프, 생체 인식 스캐너, 또는 네트워크 연결부(예컨대, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)를 포함한다. 출력 디바이스(110)는 제한 없이, 디스플레이, 스피커, 프린터, 햅틱 피드백 디바이스, 하나 이상의 조명, 안테나, 또는 네트워크 연결부(예컨대, 무선 IEEE 802 신호의 송신 및/또는 수신을 위한 무선 로컬 영역 네트워크 카드)를 포함한다.
입력 구동기(112)는 프로세서(102) 및 입력 디바이스(108)와 통신하고, 프로세서(102)가 입력 디바이스(108)로부터 입력을 수신하는 것을 허용한다. 출력 구동기(114)는 프로세서(102) 및 출력 디바이스(110)와 통신하고, 프로세서(102)가 출력을 출력 디바이스(110)로 전송하는 것을 허용한다. 입력 구동기(112) 및 출력 구동기(114)가 선택적 구성요소이고, 입력 구동기(112) 및 출력 구동기(114)가 존재하지 않는 경우 디바이스(100)가 동일한 방식으로 동작할 것이라는 점에 유의한다. 출력 구동기(116)는 디스플레이 디바이스(118)에 결합되는 가속화된 처리 디바이스("APD")(116)를 포함한다. APD는 프로세서(102)로부터 계산 명령 및 그래픽 렌더링 명령을 수용하여, 그 계산 및 그래픽 렌더링 명령을 처리하고, 디스플레이를 위해 디스플레이 디바이스(118)에 픽셀 출력을 제공하도록 구성된다. 하기에서 더 상세하게 설명된 바와 같이, APD(116)는 단일 명령어 다중 데이터("SIMD") 패러다임에 따라 계산을 수행하도록 구성된 하나 이상의 병렬 처리 장치를 포함한다. 따라서, 다양한 기능이 APD(116)에 의해 또는 이와 결부하여 수행되는 것으로서 본 명세서에서 설명될지라도, 다양한 대안에서, APD(116)에 의해 수행되는 것으로서 설명된 기능은 호스트 프로세서(예컨대, 프로세서(102))에 의해 구동되지 않고 그래픽 출력을 디스플레이 디바이스(118)에 제공하도록 구성되는 유사한 능력을 갖는 다른 컴퓨팅 디바이스에 의해 부가적으로 또는 대안적으로 수행된다. 예를 들면, SIMD 패러다임에 따라 처리 작업을 수행하는 임의의 처리 시스템이 본 명세서에서 설명된 기능을 수행하도록 구성될 수 있음이 고려된다. 대안적으로, SIMD 패러다임에 따라 처리 작업을 수행하지 않는 컴퓨팅 시스템이 본 명세서에서 설명된 기능을 수행하는 것으로 고려된다.
도 2는, APD(116)에서의 처리 작업의 실행과 관련된 부가적인 상세를 도시하는, 디바이스(100)의 블록도이다. APD(116)는 복수의 계산 유닛(132), 처리 파이프라인(예컨대, 그래픽 처리 파이프라인)(134) 및 스케줄러(136)를 포함한다. 프로세서(102)는 시스템 메모리(104)에서, 프로세서(102)에 의한 실행을 위한 하나 이상의 제어 논리 모듈을 유지한다. 제어 논리 모듈은 운영 체제(120), 커널 모드 구동기(122) 및 애플리케이션(126)을 포함한다. 이 제어 논리 모듈은 프로세서(102) 및 APD(116)의 동작의 다양한 특징을 제어한다. 예를 들면, 운영 체제(120)는 하드웨어와 직접적으로 통신하고 프로세서(102)에서 실행되는 다른 소프트웨어를 위한 인터페이스를 하드웨어에 제공한다. 커널 모드 구동기(122)는 예를 들면, APD(116)의 다양한 기능에 액세스하기 위해 프로세서(102)에서 실행되는 소프트웨어(예컨대, 애플리케이션(126))에 애플리케이션 프로그래밍 인터페이스("API")를 제공함으로써 APD(116)의 동작을 제어한다. 커널 모드 구동기(122)는 또한, APD(116)의 처리 구성요소(예컨대, 하기에서 더 상세하게 논의된 SIMD 유닛(138)과 같음)에 의한 실행을 위해 프로그램을 컴파일링하는 적시 컴파일러(just-in-time complier)를 포함한다.
APD(116)는 병렬 처리를 위해 적합할 수 있는 그래픽 연산 및 비그래픽 연산과 같은 선택된 기능에 대한 명령 및 프로그램을 실행한다. APD(116)는 픽셀 연산, 기하학적 계산과 같은 그래픽 파이프라인 연산을 실행하고, 프로세서(102)로부터 수신된 명령에 기초하여 디스플레이 디바이스(118)에 이미지를 렌더링하기 위해 사용될 수 있다. APD(116)는 또한, 프로세서(102)로부터 수신된 명령에 기초한 비디오, 물리 시뮬레이션, 전산 유체 역학, 또는 다른 작업과 관련된 연산과 같은, 그래픽 연산과 직접적으로 관련되지 않은 계산 처리 연산을 실행한다.
APD(116)는 SIMD 패러다임에 따라 병렬 방식으로 프로세서(102)의 요청 시에 연산을 수행하도록 구성되는 하나 이상의 SIMD 유닛(138)을 포함하는 계산 유닛(132)을 포함한다. SIMD 패러다임은 다수의 처리 요소가 단일 프로그램 제어 흐름 유닛 및 프로그램 카운터를 공유하고 따라서, 동일한 프로그램을 실행하지만 상이한 데이터로 그 프로그램을 실행할 수 있다는 것이다. 하나의 예에서, 각각의 SIMD 유닛(138)은 16개의 레인을 포함하고, 여기서 각각의 레인은 SIMD 유닛(138)의 다른 레인과 동시에 동일한 명령어를 실행하지만 상이한 데이터로 그 명령어를 실행할 수 있다. 모든 레인이 주어진 명령어를 실행할 필요가 없는 경우 레인은 술어(predication)로 스위칭 오프될 수 있다. 술어는 또한 발산 제어 흐름으로 프로그램을 실행하기 위해 사용될 수 있다. 더 구체적으로, 제어 흐름이 개별적인 레인에 의해 수행된 산출에 기초하는 조건부 분기 또는 다른 명령어를 갖는 프로그램에 대해, 제어 흐름 경로에 대응하는 레인의 술어는 현재 실행되지 않고, 상이한 제어 흐름 경로의 직렬 실행은 임의의 제어 흐름을 허용한다.
계산 유닛(132)에서 실행의 기본 단위는 작업 항목이다. 각각의 작업 항목은 특정한 레인에서 동시에 실행될 프로그램의 단일 인스턴스 생성(instantiation)을 표현한다. 작업 항목은 단일 SIMD 처리 장치(138)에서 "웨이브프론트(wavefront)"로서 동시에 실행될 수 있다. 하나 이상의 웨이브프론트는 동일한 프로그램을 실행하도록 지정된 작업 항목의 컬렉션을 포함하는 "작업 그룹"에 포함된다. 작업 그룹을 구성하는 웨이브프론트의 각각을 실행함으로써 작업 그룹이 실행될 수 있다. 대안으로, 웨이브프론트는 단일 SIMD 유닛(138)에서 순차적으로 또는 상이한 SIMD 유닛(138)에서 부분적으로 또는 완전히 동시에 실행된다. 웨이브프론트는 단일 SIMD 유닛(138)에서 동시에 실행될 수 있는 작업 항목의 가장 큰 컬렉션으로서 간주될 수 있다. 따라서, 프로세서(102)로부터 수신된 명령이 프로그램이 단일 SIMD 유닛(138)에서 동시에 실행할 수 없는 정도로 특정한 프로그램이 병렬화되어야 함을 나타내는 경우, 그 프로그램은 2개 이상의 SIMD 유닛(138)에서 병렬화되거나 동일한 SIMD 유닛(138)에서 직렬화되는(또는 필요에 따라 병렬화와 직렬화 둘 다 되는) 웨이브프론트로 분산된다. 스케줄러(136)는 상이한 계산 유닛(132) 및 SIMD 유닛(138)에서 다양한 웨이브프론트를 스케줄링하는 것과 관련된 연산을 수행하도록 구성된다.
계산 유닛(132)에 의해 제공된 병렬성은 픽셀 값 산출, 정점 변환, 및 다른 그래픽 연산과 같은 그래픽 관련 연산을 위해 적합하다. 따라서, 일부 사례에서, 프로세서(102)로부터 그래픽 처리 명령을 수용하는 그래픽 파이프라인(134)은 동시에 실행하기 위해 계산 유닛(132)에 계산 작업을 제공한다.
계산 유닛(132)은 또한, 그래픽과 관련되지 않거나 그래픽 파이프라인(134)의 "정상" 동작의 일부로서 수행되지 않는 계산 작업(예컨대, 그래픽 파이프라인(134)의 동작을 위해 수행된 처리를 보완하기 위해 수행된 맞춤형 연산)을 수행하기 위해 사용된다. 프로세서(102)에서 실행되는 애플리케이션(126) 또는 다른 소프트웨어는 이러한 계산 작업을 정의하는 프로그램을 실행을 위해 APD(116)로 송신한다.
도 3은 식별된 하드웨어 디바이스에서 실행되는 프로그램에 대한 조정 파라미터를 예측하는 일 예시적인 방법(300)을 도시하는 블록도이다. 인코딩, 변환, 언어 학습, 비교 및 예측과 같은, 방법(300)의 각각의 부분은 예를 들면, APD(116)와 같은 프로세서에 의해 수행된다.
조정 파라미터는 본질적으로 범주형인 파라미터(예컨대, 프로그램의 성능 효율성을 변경하기 위해 프로그램에 제공된 옵션을 표현하는 파라미터), 뿐만 아니라 예를 들면, 메모리(예컨대, 메인 메모리)로부터 액세스될 데이터의 양, 수행될 링크에 걸친 병렬 메모리 액세스(예컨대, 판독, 기록)의 수, 입력 이미지의 채널의 수(예컨대, 이미지의 컬러 채널), 출력 채널(예컨대, 초분광 이미지의 출력 채널)의 수, 파이프라인의 깊이(예컨대, 입력 깊이 및 출력 깊이)와 같은 조정 특정한 파라미터에 대한 숫자 값을 갖는 파라미터를 포함한다. 조정 파라미터에 대한 타깃 값은 예를 들면, 이미지 높이, 이미지 폭, 입력 채널의 총 수, 출력 채널의 총 수 및 한 번에 처리될 이미지의 수와 같은 입력 파라미터에 따라 결정된다. 게다가, 조정 파라미터는 부분적으로, 프로그램 사이의 해석이 상이한 파라미터로 인해 달라진다.
도 3의 (302)에서 도시된 바와 같이, 방법(300)은 식별된 하드웨어 디바이스(예컨대, 식별된 버전의 하드웨어 디바이스)에서 실행될 프로그램의 복수의 조정 파라미터에 대한 숫자 값을 수신하는 단계를 포함한다. 각각의 숫자 조정 파라미터 값은 예를 들면, APD(116)에 의해 순차적으로(즉, 직렬로) 수신된다.
도 3의 (304)에서 도시된 바와 같이, 방법(300)은 조정 파라미터의 시퀀스에서 숫자 값들을 인코딩하는 단계를 포함한다. 인코딩은 숫자 값으로부터의 조정 파라미터 값을 언어의 워드로 변환함으로써 수행된다. 조정 파라미터 값의 변환은 하나의 숫자 값을 워드로 변환하는 것, 하나 이상의 숫자 값을 워드로 변환하는 것 및 하나의 숫자 값을 복수의 워드로 변환하는 것을 포함한다. 인코딩의 예는 원 핫 인코딩(one-hot encoding) 및 원 핫 인코딩으로부터 생성된 밀집 벡터를 포함한다.
각각의 변환된 워드는 기계어 모델(312)에 제공되고 언어 학습 및 예측 프로세스(306)의 일부로서 제약 조건(314)에 기초하여 예측되며, 이는 기계어 학습 및 예측 알고리즘을 사용하여 성능 효율성에 기초하여 식별된 하드웨어 디바이스에서 프로그램을 실행하기 위해 사용할 워드를 예측한다. 즉, 기계어 학습 알고리즘은 식별된 하드웨어 디바이스에서 프로그램의 일부를 효율적으로 실행하는 것을 야기할 워드의 조합(수치 조정 파라미터 값에 대응함)(예컨대, 워드의 어떤 조합이 워드의 다른 조합보다 빠르거나 워드의 다른 조합보다 짧은 시간에 프로그램의 일부의 실행을 야기할 것인지)을 예측한다.
기계어 모델(312)은 하나 이상의 기계 학습 기초 요소에 따라 조정 파라미터의 변환된 워드 값을 처리한다. 기계 학습 기초 요소의 예는, 컨볼루션 신경망(CNN); 컨볼루션 및 풀링 레이어(convolution and pooling layer); 단방향 및 양방향 장단기 메모리(LSTM) 셀 또는 게이트 순환 유닛(GRU)을 포함하는 순환 신경망(RNN); 및 드롭아웃 및 상이한 활성화 함수를 갖는 조밀하게 연결된 심층 신경망을 포함한다.
워드는 예를 들면, 유효하지 않은 파라미터 값의 조합, 스레드 당 할당된 레지스터의 최대 수 및 스레드당 액세스 가능한 메모리의 양을 포함하는 제약 조건(314)에 기초하여 예측된다. 제약 조건(314)은 하나 이상의 다른 조정 파라미터 값과 동시에 존재할 수 없거나 유효하지 않은 결과를 생성할 조정 파라미터 값의 예측을 방지한다. 제약 조건은 더 작은 공간에서 예측이 수행되기 때문에 효율성을 용이하게 한다. 게다가, 제약 조건은 예측된 조정 파라미터 값이 유효하지 않은 결과를 생성하지 않기 때문에 예측의 정확도를 개선한다.
도 3의 (308)에서 도시된 바와 같이, 방법(300)은 예측된 조정 파라미터 값을 디코딩하는 단계를 포함한다. 디코딩은 예측된 조정 파라미터 워드 값을 다시 숫자 값으로 변환함으로써 수행된다. 도 3의 (310)에서 도시된 바와 같이, 예측된 조정 파라미터 숫자 값은 그 다음, 예측된 실행 가능한 조정 파라미터 값으로서 제공된다. 프로그램의 일부는 예측된 실행 가능한 조정 파라미터 값을 사용하여 식별된 하드웨어 디바이스에서 실행된다.
이제 언어 학습 및 예측 프로세스(306)의 일례가 도 4와 관련하여 더 상세하게 설명된다. 상기 설명된 바와 같이, 복수의 조정 파라미터 값을 동시에 수신하는 조정 파라미터를 결정하기 위한 종래의 시스템과 달리, 조정 파라미터 값은 본 발명의 특징에 따라, 순차적으로 프로그램에 입력된 조정 파라미터 값에 기초하여 예측된다. 즉, 각각의 입력 조정 파라미터 값은 순차적으로(즉, 직렬로) 수신되고 조정 파라미터 값은 시퀀스로서 예측된다.
도 4는 도 3의 (306)에서 도시된 언어 학습 및 예측을 구현하는 일 예시적인 방법(400)을 도시하고, 여기서 각각의 입력 조정 파라미터 값은 순차적으로 수신된다. 하기에서 더 상세하게 설명된 바와 같이, 도 4는 시퀀스의 다음 조정 파라미터 값 후보를 예측하기 위해 제약 조건(314)을 사용하고 예측된 조정 파라미터 값 후보(예컨대, 다른 조정 파라미터 값 후보보다 양호한 성능 효율성으로 프로그램의 일부를 실행할 가능성이 더 높은 것으로서 결정된 후보)를 사용하는 중간 조정 파라미터 값 후보의 필터링을 포함하는, 예측 시퀀스의 단계를 도시한다. 인코딩, 변환, 언어 학습, 비교, 필터링, 결정 및 예측과 같은, 방법(400)의 각각의 부분은 예를 들면, APD(116)와 같은 프로세서에 의해 수행된다.
도 4에 도시된 바와 같이, 입력 워드 시퀀스(402)의 각각의 워드(402(1) 내지 402(n))가 수신된다. 표현 학습 프로세스(404)는 내부 표현(406)(예컨대, 기계어 모델(312) 내부에 있는 워드(402(1) 내지 402(n))의 압축된 표현)을 결정하기 위해 하나 이상의 기계 학습 기초 요소(예컨대, 상기 설명된 기계 학습 기초 요소 중 하나 이상)에 따라 각각의 워드(402(1) 내지 402(n))에 대해 수행된다. 표현 학습(404)의 각각의 블록은 예를 들면, 입력 워드 시퀀스(402)의 대응하는 워드의 내부 표현을 결정하기 위해 사용된 메모리 셀을 표현한다.
예를 들면, 표현 학습(404) 동안, 제1 워드(402(1))의 내부 표현은 제1 워드(402(1))의 내부 표현(406)으로서 출력(예컨대, 일시적으로 저장)된다. 제1 워드(402(1))의 내부 표현은 또한, (제1 워드(402(1))에 대한 메모리 셀 사이에서 좌측에서 우측 화살표로 표시되는) 업스트림으로 제2 워드(402(2))에 대한 메모리 셀에 제공되고 제2 워드 402(2)의 내부 표현을 결정하기 위해 사용된다.
제2 워드(402(2))의 중간 내부 표현은 제1 워드(402(1))뿐만 아니라, 제2 워드(402(2))의 내부 표현에 기초하여 결정된다. 제2 워드(402(2))의 중간 내부 표현은 그 다음, 제2 워드(402(2))의 내부 표현(406)으로서 출력된다(예컨대, 일시적으로 저장됨). 제2 워드(402(2))의 내부 표현은 또한, (제2 워드(402(2)) 및 제3 워드(402(3))에 대한 메모리 셀 사이에서 좌측에서 우측 화살표로 표시되는) 업스트림으로 제3 워드(402(3))에 대한 메모리 셀에 제공되고 제3 워드 402(3)의 내부 표현을 결정하기 위해 사용된다. 이 프로세스는 입력 워드 시퀀스(402)의 각각의 나머지 워드에 대해 업스트림으로(즉, 표현 학습(404)의 좌측에서 우측 화살표 방향으로) 계속된다.
도 4에서 도시된 예에서, 표현 학습(404)은 양방향 학습을 포함한다. 즉, 각각의 워드(402(1) 내지 402(n))의 내부 표현은 또한, 다운스트림으로(즉, 표현 학습(404)의 우측에서 좌측 화살표 방향으로) 제공된다. 그에 따라, 각각의 워드(402(1) 내지 402(n-1))의 내부 표현은 입력 워드 시퀀스(402)의 업스트림 워드에 기초하여(즉, 시퀀스의 다음 업스트림 워드에 직접적으로 기초하고 입력 워드 시퀀스(402)의 다른 업스트림 워드에 간접적으로 기초하여) 결정된다. 본 발명의 특징은 또한 예를 들면, 단방향(즉, 좌측에서 우측 화살표 방향으로) 학습을 통해 구현된다.
워드의 내부 표현(406)을 사용하여, 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위해 워드의 시퀀스가 예측된다. 예측 프로세스는 중간 워드 시퀀스(408) 및 출력 워드 시퀀스(410)를 생성하는 것을 포함한다. 하기에 설명된 바와 같이, 다른 후보보다 양호한 성능 효율을 야기할 가능성이 더 높은 것으로서 결정된 후보를 포함하는 복수의 조정 파라미터 후보가 실행을 위한 워드의 시퀀스를 예측하기 위해 사용된다. 예를 들면, 제1 후보가 하나 이상의 제약 조건(314)을 만족하지 않는 경우, 다음 가능성 있는 후보가 시퀀스의 워드를 예측하기 위해 사용된다.
하나의 예에서, 예측 프로세스 동안 사용된 수 조정 파라미터 후보는 미리 결정된다(즉, 실행 시간 이전에 결정된다). 예를 들면, 미리 결정된 수(k)의 예측이 전파되어, k개의 예측을 야기한다.
워드 시퀀스(402)에서 워드(402(1) 내지 402(n))의 내부 표현은 그 다음, 중간 워드 시퀀스(408)를 생성하기 위해 유사한 기계 학습 구조에 제공된다. 도 4의 중간 워드 시퀀스(408)의 각각의 블록은 예를 들면, 중간 워드 시퀀스(408)의 대응하는 워드(408(1) 내지 408(n)(즉, 조정 파라미터 값 후보))를 중간 예측하기 위해 사용된 메모리 셀을 표현한다.
중간 워드 시퀀스(408)의 제1 워드(408(1))(즉, 제1 후보)는 상기 설명된 하나 이상의 기계 학습 기초 요소에 기초하여 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위해 중간 예측된다. 제1 워드(408(1))의 내부 표현은 프로그램의 일부(예컨대, 커널의 일부)에 대한 하나 이상의 제약 조건(314)에 기초하여 분석된다. 즉, 제1 워드(408(1))가 하나 이상의 제약 조건(314)의 각각을 만족할 때, 제1 워드(408(1))는 출력 워드 시퀀스(410)에 대한 파라미터 값 후보로서 중간 예측된다. 제1 워드(408(1))가 하나 이상의 제약 조건(314)의 각각을 만족하지 않을 때, 제1 워드(408(1))는 출력 워드 시퀀스(410)의 파라미터 값 후보로서 선택되지 않는다.
제1 워드(408(1))의 내부 표현은 또한, 중간 워드 시퀀스(408)의 제2 워드(408(2))를 결정하기 위해 다음 메모리 셀(즉, 다음 업스트림 메모리 셀)에 제공된다. 제2 워드(408(2))가 제1 워드(408(1)) 대신에 하나 이상의 제약 조건(314)의 각각을 만족할 때, 제2 워드(408(2))는 출력 워드 시퀀스(410)에 대한 파라미터 값 후보로서 중간 예측된다. 제2 워드(408(2))가 하나 이상의 제약 조건(314)의 각각을 만족하지 않을 때, 제2 워드(408(2))는 출력 워드 시퀀스(410)의 파라미터 값 후보로서 선택되지 않는다. 프로세스는 중간 워드 시퀀스(408)의 나머지 워드의 각각에 대해 계속된다.
예측 프로세스는 또한, 조정 파라미터 값을 다른 조정 파라미터 값과 비교하여 조정 파라미터 값의 어떤 조합이 조정 파라미터 값 후보의 다른 조합보다 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위해 양호한 성능 효율성을 야기할 것인지 예측하는 주의 메커니즘을 포함한다.
예를 들면, 출력 워드 시퀀스(410)의 조정 파라미터 값 후보(410(1) 내지 410(n))는 다른 조정 파라미터 값 후보보다 양호한 성능 효율성으로 프로그램의 일부를 실행할 이의 가능성에 따라 비교되고 순위가 매겨진다. 출력 워드 시퀀스(410)의 조정 파라미터 값 후보 중 하나 이상(예컨대, 조정 파라미터 값 후보가 다른 후보보다 양호한 성능 효율성을 야기할 가능성이 있다고 결정됨)은 중간 워드 시퀀스(408)의 메모리 셀에 다시 제공되어 중간 워드 시퀀스(408)의 하나 이상의 워드(408(1) 내지 408(n))를 중간 예측한다. 그에 따라, 기계 학습 알고리즘은 입력 조정 파라미터 값(예컨대, 입력 워드 시퀀스(402)의 값) 뿐만 아니라, 기계 학습 알고리즘에 다시 공급된 예측된 조정 파라미터 값 후보에 기초하여 조정 파라미터 값을 예측하는 것을 학습한다.
출력 워드 시퀀스(410)의 예측된 조정 파라미터 값 후보(410(1) 내지 410(n))는 그 다음, 도 3의 블록(308)에서 도시된 바와 같이, 숫자 값으로 다시 변환되고 식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위해 도 3에서 도시된 예측된 실행 가능한 조정 파라미터 값(310)으로서 제공된다.
본 명세서의 개시에 기초하여 많은 변형이 가능하다는 것을 이해해야 한다. 특징 및 요소가 특정한 조합으로 상기 설명될지라도, 각각의 특징 또는 요소는 다른 특징 및 요소 없이 단독으로 또는 다른 특징 및 요소와 함께 또는 다른 특징 및 요소 없이 다양한 조합으로 사용될 수 있다.
제공된 방법은 범용 컴퓨터, 프로세서, 또는 프로세서 코어에서의 구현을 포함한다. 적합한 프로세서는 예로서, 범용 프로세서, 특수 목적 프로세서, 종래의 프로세서, 디지털 신호 프로세서(DSP), 복수의 마이크로프로세서, DSP 코어와 연관된 하나 이상의 마이크로프로세서, 제어기, 마이크로제어기, 주문형 반도체(Application Specific Integrated Circuit; ASIC), 필드 프로그래밍 가능한 게이트 어레이(Field Programmable Gate Array; FPGA) 회로, 다른 유형의 집적 회로(IC), 및/또는 상태 기계를 포함한다. 이러한 프로세서는 처리된 하드웨어 설명 언어(HDL) 명령어의 결과 및 넷리스트(컴퓨터 판독 가능한 매체에 저장될 수 있는 이러한 명령어)를 포함하는 다른 중간 데이터를 사용하여 제조 프로세스를 구성함으로써 제조될 수 있다. 이러한 처리의 결과는 전력 성능 관리를 위한 애플리케이션 프로파일링을 구현하는 프로세서를 제조하기 위해 반도체 제조 프로세스에서 그 다음 사용되는 마스크워크(maskwork)일 수 있다.
도면에 도시되고/되거나 본 명세서에서 설명된 다양한 기능 유닛(프로세서(102), 입력 구동기(112), 입력 디바이스(108), 출력 구동기(114), 출력 디바이스(110), 가속화된 처리 디바이스(116), 스케줄러(136), 그래픽 처리 파이프라인(134), 계산 유닛(132), SIMD 유닛(138)을 포함하지만, 이들로 제한되지 않음)은 범용 컴퓨터, 프로세서, 또는 프로세서 코어로서, 또는 범용 컴퓨터, 프로세서, 또는 프로세서 코어에 의해 실행 가능한, 비일시적 컴퓨터 판독 가능한 매체에 또는 또 다른 매체에 저장된 프로그램, 소프트웨어, 또는 펌웨어로서 구현될 수 있다.
본 명세서에 제공된 방법 또는 흐름도는 범용 컴퓨터 또는 프로세서에 의한 실행을 위해 비일시적 컴퓨터 판독 가능한 저장 매체에 통합된 컴퓨터 프로그램, 소프트웨어 또는 펌웨어로 구현될 수 있다. 비일시적 컴퓨터 판독 가능한 저장 매체의 예는 판독 전용 메모리(ROM), 랜덤 액세스 메모리(RAM), 레지스터, 캐시 메모리, 반도체 메모리 디바이스, 내부 하드 디스크 및 탈착 가능한 디스크와 같은 자기 매체, 자기 광학 매체, 및 CD-ROM 디스크, 및 디지털 다기능 디스크(DVD)와 같은 광학 매체를 포함한다.

Claims (20)

  1. 처리 성능을 개선하는 처리 디바이스로서,
    데이터를 저장하도록 구성된 메모리;
    상기 메모리와 통신하는 프로세서
    를 포함하되, 상기 프로세서는,
    식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위해, 각각이 숫자 값을 갖는 조정 파라미터(tuning parameters)를 수신하도록;
    상기 조정 파라미터의 숫자 값을 워드로 변환하도록;
    하나 이상의 기계어 학습 알고리즘을 사용하여, 성능 효율성에 기초하여 상기 식별된 하드웨어 디바이스에서 상기 프로그램의 일부를 실행하기 위한 상기 워드의 조합을 예측하도록; 그리고
    상기 식별된 하드웨어 디바이스에서 상기 프로그램의 일부를 실행하기 위해 상기 워드의 예측된 조합을 대응하는 숫자 값으로 변환하도록
    구성되는, 처리 디바이스.
  2. 제1항에 있어서, 상기 프로세서는 워드 시퀀스에서 입력된 상기 워드의 각각에 대한 기계어 학습 표현을 순차적으로 결정하도록 더 구성되는, 처리 디바이스.
  3. 제2항에 있어서, 상기 프로세서는 상기 워드 시퀀스의 또 다른 워드의 결정된 기계어 학습 표현에 기초하여 상기 워드 시퀀스의 워드에 대한 상기 기계어 학습 표현을 결정하도록 더 구성되는, 처리 디바이스.
  4. 제2항에 있어서, 상기 프로세서는,
    상기 워드의 각각에 대한 상기 기계어 학습 표현에 기초하여 워드의 중간 시퀀스를 예측하도록;
    상기 워드가 하나 이상의 미리 결정된 제약 조건의 각각을 만족할 때 상기 워드의 중간 시퀀스의 워드 중 하나를 상기 워드의 예측된 조합에 대한 후보 워드인 것으로 결정하도록; 그리고
    상기 워드가 상기 하나 이상의 미리 결정된 제약 조건의 각각을 만족하지 않을 때 상기 워드의 중간 시퀀스의 하나의 워드를 상기 워드의 예측된 조합에 대한 후보 워드가 아닌 것으로 결정하도록
    구성되는, 처리 디바이스.
  5. 제4항에 있어서, 상기 하나 이상의 미리 결정된 제약 조건의 각각은 상기 워드의 조합이 상기 프로그램의 일부를 실행하는 것으로부터 유효하지 않은 결과를 생성하는지의 여부를 나타내는, 처리 디바이스.
  6. 제4항에 있어서, 상기 프로세서는,
    상기 워드의 중간 시퀀스의 복수의 워드를 상기 워드의 예측된 조합에 대한 후보 워드인 것으로 결정하도록; 그리고
    다른 후보 워드보다 양호한 성능 효율성으로 상기 프로그램의 부분을 실행할 가능성이 더 큰 것으로 결정된 후보 워드에 기초하여 상기 워드의 중간 시퀀스에서 다음 워드를 예측하도록
    구성되는, 처리 디바이스.
  7. 제1항에 있어서, 상기 성능 효율성은 상기 프로그램의 일부를 실행하기 위한 속도 또는 시간의 양의 척도이고, 그리고
    상기 프로세서는 상기 워드의 어떤 조합이 상기 프로그램의 일부로 하여금 상기 워드의 다른 조합보다 빠르게 또는 짧은 시간에 실행하게 하는지를 예측함으로써 상기 성능 효율성에 기초하여 상기 식별된 하드웨어 디바이스에서 상기 프로그램을 실행하기 위한 상기 워드의 조합을 결정하도록 구성되는, 처리 디바이스.
  8. 제1항에 있어서, 상기 복수의 조정 파라미터에 대한 상기 수신된 숫자 값은 텐서 입력 값(tensor input value)인, 처리 디바이스.
  9. 제1항에 있어서, 상기 하나 이상의 기계어 학습 알고리즘은 컨볼루션 신경망(convolutional neural networks), 순환 신경망 및 연결된 신경망 중 적어도 하나를 포함하는, 처리 디바이스.
  10. 처리 성능을 개선하는 방법으로서,
    식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위해 각각이 숫자 값을 갖는 조정 파라미터를 수신하는 단계;
    상기 조정 파라미터의 숫자 값을 워드로 변환하는 단계;
    하나 이상의 기계어 학습 알고리즘을 사용하여, 성능 효율성에 기초하여 상기 식별된 하드웨어 디바이스에서 상기 프로그램의 일부를 실행하기 위한 상기 워드의 조합을 예측하는 단계; 및
    상기 식별된 하드웨어 디바이스에서 상기 프로그램의 일부를 실행하기 위해 상기 워드의 예측된 조합을 대응하는 숫자 값으로 변환하는 단계
    를 포함하는, 방법.
  11. 제10항에 있어서, 워드 시퀀스에서 입력된 상기 워드의 각각에 대한 기계어 학습 표현을 순차적으로 결정하는 단계를 더 포함하는, 방법.
  12. 제11항에 있어서, 상기 워드 시퀀스의 또 다른 워드의 결정된 기계어 학습 표현에 기초하여 상기 워드 시퀀스의 워드에 대한 상기 기계어 학습 표현을 결정하는 단계를 더 포함하는, 방법.
  13. 제10항에 있어서,
    상기 워드의 각각에 대한 상기 기계어 학습 표현에 기초하여 워드의 중간 시퀀스를 예측하는 단계;
    상기 워드가 하나 이상의 미리 결정된 제약 조건의 각각을 만족할 때 상기 워드의 중간 시퀀스의 워드 중 하나를 상기 워드의 예측된 조합에 대한 후보 워드인 것으로 결정하는 단계; 및
    상기 워드가 상기 하나 이상의 미리 결정된 제약 조건의 각각을 만족하지 않을 때 상기 워드의 중간 시퀀스의 하나의 워드를 상기 워드의 예측된 조합에 대한 후보 워드가 아닌 것으로 결정하는 단계
    를 더 포함하는, 방법.
  14. 제13항에 있어서, 상기 하나 이상의 미리 결정된 제약 조건의 각각은 상기 워드의 조합이 상기 프로그램의 일부를 실행하는 것으로부터 유효하지 않은 결과를 생성하는지의 여부를 나타내는, 방법.
  15. 제13항에 있어서,
    상기 워드의 중간 시퀀스의 복수의 워드를 상기 워드의 예측된 조합에 대한 후보 워드인 것으로 결정하는 단계; 및
    다른 후보 워드보다 양호한 성능 효율성으로 상기 프로그램의 부분을 실행할 가능성이 더 큰 것으로 결정된 후보 워드에 기초하여 상기 워드의 중간 시퀀스에서 다음 워드를 예측하는 단계
    를 더 포함하는, 처리 성능을 개선하는 방법.
  16. 제15항에 있어서, 상기 다른 후보 워드보다 양호한 성능 효율성으로 상기 프로그램의 일부를 실행할 후보 워드의 가능성에 따라 상기 워드의 중간 시퀀스의 복수의 워드의 각각의 순위를 매기는 단계를 더 포함하는, 처리 성능을 개선하는 방법.
  17. 제11항에 있어서, 상기 성능 효율성은 상기 프로그램의 일부를 실행하기 위한 속도 또는 시간의 양의 척도이고, 그리고
    상기 방법은 상기 워드의 어떤 조합이 상기 프로그램의 일부로 하여금 상기 워드의 다른 조합보다 빠르게 또는 짧은 시간에 실행하게 하는지를 예측함으로써 상기 성능 효율성에 기초하여 상기 식별된 하드웨어 디바이스에서 상기 프로그램을 실행하기 위한 상기 워드의 조합을 결정하는 단계를 더 포함하는, 처리 성능을 개선하는 방법.
  18. 제11항에 있어서, 상기 복수의 조정 파라미터에 대한 상기 수신된 숫자 값은 텐서 입력 값인, 처리 성능을 개선하는 방법.
  19. 제11항에 있어서, 상기 하나 이상의 기계어 학습 알고리즘은 컨볼루션 신경망, 순환 신경망 및 연결된 신경망 중 적어도 하나를 포함하는, 처리 성능을 개선하는 방법.
  20. 명령어를 갖는 비일시적 컴퓨터 판독 가능한 저장 매체로서, 상기 명령어는 컴퓨터로 하여금,
    식별된 하드웨어 디바이스에서 프로그램의 일부를 실행하기 위해 각각이 숫자 값을 갖는 조정 파라미터를 수신하는 단계;
    상기 조정 파라미터의 숫자 값을 워드로 변환하는 단계;
    하나 이상의 기계어 학습 알고리즘을 사용하여, 성능 효율성에 기초하여 상기 식별된 하드웨어 디바이스에서 상기 프로그램의 일부를 실행하기 위한 상기 워드의 조합을 예측하는 단계; 및
    상기 식별된 하드웨어 디바이스에서 상기 프로그램의 일부를 실행하기 위해 상기 워드의 예측된 조합을 대응하는 숫자 값으로 변환하는 단계
    를 포함하는 방법을 실행하게 하기 위한 것인, 비일시적 컴퓨터 판독 가능한 저장 매체.
KR1020227010635A 2019-09-04 2020-08-25 커널 조정 파라미터를 예측하기 위한 방법 및 장치 KR20220054397A (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US16/560,954 2019-09-04
US16/560,954 US20210065051A1 (en) 2019-09-04 2019-09-04 Method and apparatus for predicting kernel tuning parameters
PCT/US2020/047845 WO2021045935A1 (en) 2019-09-04 2020-08-25 Method and apparatus for predicting kernel tuning parameters

Publications (1)

Publication Number Publication Date
KR20220054397A true KR20220054397A (ko) 2022-05-02

Family

ID=74681531

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020227010635A KR20220054397A (ko) 2019-09-04 2020-08-25 커널 조정 파라미터를 예측하기 위한 방법 및 장치

Country Status (6)

Country Link
US (1) US20210065051A1 (ko)
EP (1) EP4026004A4 (ko)
JP (1) JP2022546271A (ko)
KR (1) KR20220054397A (ko)
CN (1) CN114286985A (ko)
WO (1) WO2021045935A1 (ko)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11605147B2 (en) * 2020-03-27 2023-03-14 Tata Consultancy Services Limited Method and system for tuning graphics processing unit (GPU) parameters of a GPU kernel
US11526930B2 (en) 2020-09-22 2022-12-13 International Business Machines Corporation Optimization of order fulfillment conditions
CN117057255B (zh) * 2023-10-10 2024-01-02 中核武汉核电运行技术股份有限公司 一种用于数字孪生模型在线同步的预训练模型获取方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10558924B2 (en) * 2014-05-23 2020-02-11 DataRobot, Inc. Systems for second-order predictive data analytics, and related methods and apparatus
EP3018843A1 (en) * 2014-11-04 2016-05-11 Sequans Communications Ltd. Fast calibration of electronic devices
US10460231B2 (en) * 2015-12-29 2019-10-29 Samsung Electronics Co., Ltd. Method and apparatus of neural network based image signal processor
EP3488381B1 (en) * 2016-07-21 2024-02-28 Siemens Healthineers AG Method and system for artificial intelligence based medical image segmentation
US10713593B2 (en) * 2016-11-04 2020-07-14 Google Llc Implicit bridging of machine learning tasks
US10032256B1 (en) * 2016-11-18 2018-07-24 The Florida State University Research Foundation, Inc. System and method for image processing using automatically estimated tuning parameters
EP3364343A1 (en) * 2017-02-17 2018-08-22 Cogisen SRL Method for image processing for object detection
WO2020210400A1 (en) * 2019-04-08 2020-10-15 Phenom People Knowledge engine using machine learning and predictive modeling for optimizing recruitment management systems

Also Published As

Publication number Publication date
JP2022546271A (ja) 2022-11-04
EP4026004A4 (en) 2023-07-19
WO2021045935A1 (en) 2021-03-11
CN114286985A (zh) 2022-04-05
US20210065051A1 (en) 2021-03-04
EP4026004A1 (en) 2022-07-13

Similar Documents

Publication Publication Date Title
Moolchandani et al. Accelerating CNN inference on ASICs: A survey
Zhang et al. DNNExplorer: a framework for modeling and exploring a novel paradigm of FPGA-based DNN accelerator
KR20220054397A (ko) 커널 조정 파라미터를 예측하기 위한 방법 및 장치
Zhao et al. Dnn-chip predictor: An analytical performance predictor for dnn accelerators with various dataflows and hardware architectures
CN110633153A (zh) 一种用多核处理器实现神经网络模型拆分方法及相关产品
US20200005135A1 (en) Optimizing inference for deep-learning neural networks in a heterogeneous system
Daghero et al. Energy-efficient deep learning inference on edge devices
KR20210032266A (ko) 전자 장치 및 이의 제어 방법
Xu et al. A dedicated hardware accelerator for real-time acceleration of YOLOv2
US20220075651A1 (en) Highly parallel processing architecture with compiler
de Prado et al. Automated design space exploration for optimized deployment of dnn on arm cortex-a cpus
CN116070557A (zh) 使用强化学习的数据路径电路设计
US20190286971A1 (en) Reconfigurable prediction engine for general processor counting
CN112149809A (zh) 模型超参数的确定方法及设备、计算设备和介质
Jahanshahi et al. Inf4Edge: Automatic resource-aware generation of energy-efficient CNN inference accelerator for edge embedded FPGAs
US20190228340A1 (en) Data flow graph computation for machine learning
Hosseiny et al. Hardware acceleration of YOLOv7-tiny using high-level synthesis tools
KR20220161339A (ko) 기계 학습 작업시 개선된 메모리 압축 전달을 위한 유사도에 기초한 특징 재정렬
US20200410330A1 (en) Composable neural network kernels
Diamantopoulos et al. Agile autotuning of a transprecision tensor accelerator overlay for TVM compiler stack
WO2023108894A1 (en) Compute-intensive kernel generator, micro-kernel code cache, fused kernel generator and cyclic dependence free graph partitioning for deep learning workloads
Shang et al. A high-performance convolution block oriented accelerator for MBConv-Based CNNs
Yao SE-CNN: convolution neural network acceleration via symbolic value prediction
US20220083844A1 (en) Spatial tiling of compute arrays with shared control
EP4244726A1 (en) Highly parallel processing architecture with compiler