JP6952138B2 - チップに基づく計算機能を生成する方法、装置、デバイス、および記憶媒体 - Google Patents

チップに基づく計算機能を生成する方法、装置、デバイス、および記憶媒体 Download PDF

Info

Publication number
JP6952138B2
JP6952138B2 JP2020002570A JP2020002570A JP6952138B2 JP 6952138 B2 JP6952138 B2 JP 6952138B2 JP 2020002570 A JP2020002570 A JP 2020002570A JP 2020002570 A JP2020002570 A JP 2020002570A JP 6952138 B2 JP6952138 B2 JP 6952138B2
Authority
JP
Japan
Prior art keywords
calculation function
function template
target
candidate
value
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
JP2020002570A
Other languages
English (en)
Other versions
JP2021005357A (ja
Inventor
ワン,ヨン
シー,ジャシン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2021005357A publication Critical patent/JP2021005357A/ja
Application granted granted Critical
Publication of JP6952138B2 publication Critical patent/JP6952138B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/448Execution paradigms, e.g. implementations of programming paradigms
    • G06F9/4482Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/337Design optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • G06F8/4441Reducing the execution time required by the program code
    • 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
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/02System on chip [SoC] design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2115/00Details relating to the type of the circuit
    • G06F2115/08Intellectual property [IP] blocks or IP cores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • G06F9/45516Runtime code conversion or optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Artificial Intelligence (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Medical Informatics (AREA)
  • Mathematical Physics (AREA)
  • Stored Programmes (AREA)

Description

本開示の実施例は、主にチップの分野に関し、より具体的には、チップに基づく計算機能を生成する方法、装置、デバイス、およびコンピュータ可読記憶媒体に関する。
近年、深層学習技術に代表される人工知能(Artificial Intelligence、AI)は、様々な分野(音声処理、画像処理、自然言語処理、ビデオ処理、自動制御など)で広く使用されており、人々のライフスタイルに大きな影響を与える。人工知能技術のさらなる発展に伴い、人々はより高いレベルの人工知能を期待している。人工知能のレベルは、主に深層学習の開発に依存するが、深層学習技術には、非常に高い計算能力が求められる。従来のプロセッサは、性能、コスト、消費電力などの様々な制限により、深層学習の要件を満たすことが困難になる。従って、深層学習技術の要件を満たすために、グラフィックスプロセッサ(GPU)や特定用途向け集積回路(ASIC)など、ソフトウェアとハードウェアとが緊密に統合された高性能AIチップをどのように設計するかは、現在解決すべき重要な問題となっている。
本開示の例示的な実施例によれば、チップに基づく計算機能を生成する手段が提供される。
本開示の第1の態様では、チップに基づく計算機能を生成する方法が提供される。この方法は、チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するステップと、入力パラメータ値に基づいて、計算機能に対応する少なくとも1つの候補計算機能テンプレートを決定するステップであって、候補計算機能テンプレートが候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、設定可能なパラメータが少なくとも1つの候補値を有するステップと、入力パラメータ値および候補計算機能テンプレートの設定可能なパラメータの候補値に基づいて、ターゲット計算機能テンプレートおよびターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するステップとを含む。
本開示の第1の態様では、チップに基づく計算機能を生成する装置が提供される。この装置は、チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するように構成された入力パラメータ値取得モジュールと、入力パラメータ値に基づいて、計算機能に対応する少なくとも1つの候補計算機能テンプレートを決定するように構成されたものであって、候補計算機能テンプレートが候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、設定可能なパラメータが少なくとも1つの候補値を有する、候補計算機能テンプレート決定モジュールと、入力パラメータ値および候補計算機能テンプレートの設定可能なパラメータの候補値に基づいて、ターゲット計算機能テンプレートおよびターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するように構成されたターゲット計算機能テンプレート決定モジュールとを含む。
本開示の第3の態様では、電子デバイスが提供される。この電子デバイスは、1つまたは複数のプロセッサと、1つまたは複数のプログラムを記憶するためのものであって、1つまたは複数のプログラムが1つまたは複数のプロセッサによって実行されるとき、1つまたは複数のプロセッサが本開示の第1の態様に係る方法を実施できるようにするメモリとを含む。
本開示の第4の態様では、本開示の第1の態様に係る方法を実施するためにプロセッサによって実行されるコンピュータプログラムを記憶したコンピュータ可読記憶媒体が提供される。
発明の概要に記載の内容は、本開示の実施例の主要または重要な特徴を限定するものではなく、本開示の範囲を限定するものではないことを理解されたい。本開示の他の特徴は、以下の説明からより明らかになるであろう。
本開示の各実施例の上記および他の特徴、利点、および態様は、図面および以下の詳細な説明からより明らかになるであろう。図面において、同一または類似の参照符号は、同一または類似の要素を示す。
本開示の複数の実施例に係る、チップに基づく計算機能を生成する手段の例示的な環境の概略図である。 本開示のいくつかの例示的な実施例に係る、チップに基づく計算機能を生成する方法のフローチャートである。 本開示の実施例に係る、チップに基づく計算機能を生成する装置の概略ブロック図である。 本開示の複数の実施例を実施することができる計算装置のブロック図である。
以下、図面を参照して本開示の実施例をより詳細に説明する。本開示の特定の実施例が図面に示されているが、なお、本開示は、様々な形態で実施されてもよく、本明細書に記載の実施例に限定されると解釈されるべきではなく、むしろ、これらの実施例は、本開示をより徹底的かつ完全に解釈するために提供される。本開示の図面および実施例は、単なる例示であり、本開示の保護範囲を限定するものではないことを理解されたい。
本開示の実施例の説明において、「含む」という用語および類似の用語は、無制限に含むこと、即ち「含むが、これらに限定されない」と理解されるべきである。「〜に基づく」という用語は、「〜に少なくとも部分的に基づく」と理解されるべきである。「一実施例」または「この実施例」という用語は、「少なくとも1つの実施例」と理解されるべきである。「第一」、「第二」などの用語は、異なるオブジェクトまたは同じオブジェクトを意味することができる。他の明示的および暗黙的な定義も以下に含まれ得る。
本明細書で使用される「チップ」という用語は、既存または将来開発されるソフトウェアまたはハードウェア技術によって実施される特定の機能を実施できるキャリアを意味する。いくつかのアプリケーションシナリオでは、それは、「結晶インゴット」、「ウェハ」、「ベアチップ」、「集積回路」、「モノリシックデバイス」、「半導体デバイス」、「マイクロ電子デバイス」などを含むが、これらに限定されない。
本明細書で使用される「演算子」という用語は、既存または将来開発されるソフトウェアまたはハードウェア技術によって実施できる、基本的な演算アルゴリズムまたは機能を実施するチップ内のユニットを意味する。演算子は、畳み込み、様々な数値演算、様々なベクトル演算、様々な行列演算、様々な文字演算などの様々な基本演算をチップ内で実施することができる。
本明細書で使用される「計算機能」という用語は、任意の計算/演算/アルゴリズムを実施するチップ内の論理ユニットを意味しており、単一の演算子によって実行され得るか、または複数の演算子によって実行され得るが、複数の演算子は、事前に設定された論理関係または動的に指定された論理関係に基づいて組み合わせることができる。
以上説明したように、深層学習技術向けの高性能チップを提供することは、現在解決すべき重要な問題となっている。従来の深層学習ユーザは、主にtensorflow、caffe、mxnet、pytorch、paddlepaddleなどの深層学習フレームワークを使用している。AIチップを深層学習分野に応用するために、フレームワークに集積しなければならず、コアタスクの1つとしては、フレームワーク内の様々な演算子(operator)を実施するために、演算子によって、畳み込み、様々な数値演算、様々なベクトル演算、様々な行列演算、様々な文字演算などの様々な基本演算をチップ内で実施するとともに、単一の演算子または演算子の組み合わせによって、チップの1つまたは複数の計算機能を実行する必要がある。チップの様々な計算機能の実行性能は、AIチップの性能を直接決定する。
主要なAIチップメーカーは、それぞれのフレームワークに基づいて、nvidia GPU、google TPU、Baidu Kunlunチップなどの対応するAIチップを開発しているが、上記AIチップには、それぞれの命令セットがあり、プログラミング言語(C/C++、C#、Pythonなど)でプログラミングできるCUDA、OPENCLなどのそれぞれのプログラミングフレームワークがある。
AIチップの様々な演算子または本開示に記載の計算機能はプログラムによって実施され得るが、チップの基礎となるフレームワークには、どのようにブロック化するか、どのように様々な記憶空間(レジスタ、バッファ、メモリ、共有メモリなど)を効果的に使用するか、どのようにプログラムを設定するか(スレッドの設定、プロセスの設定など)など、多くの設定可能なパラメータがある。多くのパラメータを合理的に設定するには、開発者がチップの基礎となるフレームワークに精通している必要があるが、高性能AIチップの設定に必要な開発サイクルが非常に長く、特に、AIチップソフトウェアの開発効率が非常に低い。また、アプリケーションシナリオ/演算規模が豊富であるため、特定のアプリケーションシナリオ/演算規模向けに設計されたチップは、演算規模が異なる条件下で最適な性能を実現することが困難である。
本発明者らにとっては、チップに基づく計算機能を生成することができる手段は、いくつかの一般的な演算子ライブラリを手動で実施して、演算子ライブラリにおいてチップの基本的なパラメータを設定するものであることに気付いた。以上説明したように、この手段は、チップに基づく計算機能を生成する難しさが高く、効率が低く、複数のアプリケーションシナリオ/演算規模に柔軟に適応することができない。別の可能なチップ設定手段は、高レベルの言語を用いて原言語を生成するとともに、手動符号化により、最適化されたいくつかの演算子テンプレートを実施するものであり、チップに基づく計算機能を半自動的に生成する手段は、チップ設計プロセス、特にチップソフトウェア開発の効率を高めるが、この手段がチップフレームワークの基礎となるハードウェアをシールドし、チップの性能が事前に符号化された最適化された演算子テンプレートに依存するため、高性能の演算子を実施することは困難である。また、本発明者らにとっては、チップに基づく計算機能も完全に自動化された手段によって生成でき、即ち、主に多面体コンパイル技術を用いてコードを生成するコンパイラに完全に依存することにも気付いた。この手段では、コンパイラがコードを自動的に生成できるため、ユーザはアルゴリズムを説明するだけでよいが、この手段は、チップソフトウェア開発の効率が高いが、チップフレームワークの基礎となるハードウェアを完全にシールドするので、高性能コードを実現する可能性を低減する。
本開示の実施例によれば、チップに基づく計算機能を生成する手段が提供される。この手段では、各チップによってサポートされる計算機能は少なくとも1つの候補計算機能テンプレートに対応し、この候補計算機能テンプレートは候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、設定可能なパラメータは少なくとも1つの候補値を有する。計算機能の入力パラメータ値を取得した後、入力パラメータ値に基づいて、少なくとも1つの候補計算機能テンプレートを決定し、入力パラメータ値および候補計算機能テンプレートの設定可能なパラメータの候補値に基づいて、ターゲット計算機能テンプレートおよびターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく計算機能を生成する。このようにして、計算機能テンプレートは、チップ内の設定可能なパラメータを上位の呼び出し側に提供し、上位の呼び出し側は、入力パラメータ値に基づいて、設定可能なパラメータの値を動的に設定することができるので、チップに基づく計算機能を生成するとき、異なるアプリケーションシナリオ/演算規模に動的に適応できる。
さらに、高性能の演算子または本開示に記載の計算機能をより効果的に実施するために、本開示の実施例を参照し、機械学習により、入力パラメータ値および候補計算機能テンプレートの設定可能なパラメータの候補値に基づいて、ターゲット計算機能テンプレートおよびターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定する。このようにして、設定可能なパラメータの動的設定を実現するとともに、計算機能テンプレートを手動で実施してチップの基本的なパラメータを設定する難しさを大幅に軽減する。また、機械学習によれば、検索範囲が広い場合でも、チップ設計を効果的に完了することができる。
また、候補計算機能テンプレートの実行性能をより効果的に推定するために、実行時(just−in−time、JIT)コンパイルを用いて測定を実行して、実行性能を取得する。このようにして、コードがコンパイル時ではなく実行時に生成されるので、チップ設計プロセス、特にチップソフトウェア開発の効率を高めるとともに、高性能コードの設計を確保する。
以下、図面を参照して本開示の実施例を具体的に説明する。なお、それは、単なる例示であり、本開示を何ら限定するものではなく、本開示のいくつかの例示的な実施例は、計算機能が単一の基本的な機能(即ち、1つの演算子の機能)を含むことを例にとるが、本開示の計算機能は、複数の演算子の機能の組み合わせを実現するために複数の演算子を含み得ることを理解されたい。
図1は、本開示の複数の実施例が実施され得る例示的な環境100の概略図を示している。この例示的な環境100では、計算装置130は、計算機能に関連付けられた1つまたは複数の入力パラメータ値110−1、110−2から110−Nを受信することができ、説明の便宜上、複数の入力パラメータ値110−1、110−2から110−Nは、入力パラメータ値110と総称される。いくつかの例示的な実施例では、入力パラメータ値110は、計算機能に関連付けられた任意のタイプのものであってよく、例えば、ベクトル乗算のための計算機能の場合、入力パラメータ値110は、「100」および「100」など、ベクトル乗算を実行する2つのベクトルを説明する長さ値であってもよい。いくつかの例示的な実施例では、入力パラメータ値110は、有線通信または無線通信によって計算装置130に送信され得る。いくつかの例示的な実施例では、計算装置130は、計算装置130に結合された入力装置(マウス、キーボード、タッチペン、タッチスクリーンなどを含むが、これらに限定されない)を介して、ユーザによって入力される入力パラメータ値110を受信することもできる。
図1に示すように、計算装置130は、計算機能に対応する1つまたは複数の候補計算機能テンプレート120−1、120−2から120−Mを取得することもできる。説明の便宜上、複数の候補計算機能テンプレート120−1、120−2から120−Mは候補計算機能テンプレート120と総称される。
いくつかの例示的な実施例では、計算装置130は、計算装置130の内部にある候補計算機能テンプレートデータベース/メモリ、または計算装置130の外部にある候補計算機能テンプレートデータベース/メモリから、計算機能の候補計算機能テンプレート120を取得することができる。例えば、ベクトル乗算のための計算機能の場合、図1に示される1つの候補計算機能テンプレート120−1は、ベクトル乗算を実施するための計算機能テンプレートであってもよく、その設定可能なパラメータは、ベクトル乗算を実行するときのセグメントサイズであってもよく、このセグメントサイズの候補値は、[3,4,5]であってもよく、別の候補計算機能テンプレート120−2は、ベクトル乗算を実施するための別の計算機能テンプレートであってもよく、その設定可能なパラメータは、ベクトル乗算を実行するときに呼び出されるプロセス数であってもよく、この呼び出し可能なプロセス数の候補値は、[1,2,4]であってもよい。
計算装置130は、受信された入力パラメータ値110および取得された候補計算機能テンプレート120に基づいて、この入力パラメータ値110に対応するターゲット計算機能テンプレート140、およびこのターゲット計算機能テンプレート140に対応する設定可能なパラメータのターゲット値を決定することができる。例えば、図1の例では、計算装置130は、本開示に係る、チップに基づく計算機能を生成する手段を用いることができるので、ベクトル乗算のための計算機能の場合、入力パラメータ値110が「100,100」であるという特定のアプリケーションシナリオ/演算規模に基づいて、ターゲット計算機能テンプレート140、およびこのターゲット計算機能テンプレート140に対応する設定可能なパラメータのターゲット値を決定することができ、例えば、候補計算機能テンプレート120−1をターゲット計算機能テンプレート140として決定するとともに、ベクトル乗算を実行するときのセグメントサイズを「4」として決定することができる。これらの示された入力パラメータ値、候補計算機能テンプレート、設定可能なパラメータ、および設定可能なパラメータの候補値は例としてのみ提供されることが理解され、入力パラメータ値、候補計算機能テンプレート、設定可能なパラメータ、および設定可能なパラメータの値は、実際の状況に応じて変化し得る。本開示の範囲はこの点で限定されない。
以下、図2を参照して、本開示に係る、チップに基づく計算機能を生成するプロセスをより詳細に説明する。図2は、本開示のいくつかの例示的な実施例に係る、チップに基づく計算機能を生成するプロセス200のフローチャートを示している。プロセス200は、図1の計算装置130によって実施され得る。説明の便宜上、図1を参照してプロセス200を説明する。
ブロック210において、計算装置130は、チップによってサポートされる計算機能に関連付けられた入力パラメータ値110を取得する。具体的には、チップは多くの計算機能をサポートすることができるが、非限定的な例としての本開示の実施例では、計算機能は基本演算(畳み込み、様々な数値演算、様々な文字演算、様々な行列演算、様々なベクトル演算、暗号化、復号など)を実施する基本的な計算機能である。入力パラメータ値110の数は、計算機能に応じて、1つであってもよいし、複数であってもよい。また、入力パラメータ値110は、ユーザ入力による方式、またはスクリプト/プロファイル/コマンドファイルの読み取りによる方式を含むが、これらに限定されない、任意の方式によって取得され得る。
本開示のいくつかの例示的な実施例では、入力パラメータ値110は、アプリケーションシナリオ/演算規模に関連付けることができる。具体的には、入力パラメータ値110は、実施される計算機能の演算規模を特定することができ、例えば、行列演算が実施される場合、入力パラメータ値110は、行列のサイズを特定することができ、暗号化演算が実施される場合、入力パラメータ値110は、暗号化アルゴリズムの暗号化の長さを特定することができ、ベクトル演算が実施される場合、入力パラメータ値110は、ベクトルの長さを特定することができる。なお、入力パラメータ値110についての以上の説明は例としてのみ提供されており、いくつかの他の実施形態では、入力パラメータ値110の値およびタイプが変化し得るので、入力パラメータ値110のタイプおよび/または値は、本開示の上記例の範囲内に限定されるべきではなく、入力パラメータ値110は、計算機能のアプリケーションシナリオ/演算規模に関連付けられた任意の適切なタイプおよび/または値のものであってもよい。
本開示のいくつかの例示的な実施例では、計算機能のアプリケーションシナリオ/演算規模に関連付けられた入力パラメータ値110は、計算装置130によって取得されており、チップに基づく計算機能を生成する方法が様々なアプリケーションシナリオ/演算規模に柔軟に適用できるようにするとともに、生成された計算機能がこの特定のアプリケーションシナリオ/演算規模により柔軟に適用できるようにする。
ブロック220において、計算装置130は、ブロック220で取得された入力パラメータ値110に基づいて、計算機能に対応する候補計算機能テンプレート120を決定する。計算装置130は、決定された候補計算機能テンプレート120を、ターゲット計算機能テンプレート140を検索するための探索空間として使用することができる。候補計算機能テンプレート120の数は、1つであってもよいし、複数であってもよい。
本開示のいくつかの例示的な実施例では、各計算機能は、少なくとも1つの候補計算機能テンプレート120に対応することができ、各候補計算機能テンプレート120は、ブロックサイズ、セグメントサイズ、スレッド数、プロセス数、レジスタ情報、メモリ情報、プロセッサ情報など、候補計算機能テンプレート120の実行性能に関連付けられた少なくとも1つの設定可能なパラメータを有する。各設定可能なパラメータは、少なくとも1つの候補値を有することができ、アプリケーションシナリオ/演算規模が異なる条件下で、設定可能なパラメータの候補値が異なると、設計されたチップの実行性能が変化し得る。これらの設定可能なパラメータは、通常、チップに基づく計算機能を生成するプロセスにおける計算機能の内部パラメータとして使用される。
本開示のいくつかの例示的な実施例では、少なくとも1つの候補計算機能テンプレート120は、手動符号化により、異なる計算機能に対して設計して実装することができ、手動符号化による候補計算機能テンプレート120の実装は、候補計算機能テンプレート120の実行論理をより正確にすることができるので、候補計算機能テンプレート120をチップの基礎となるフレームワークとより効果的に結合することをある程度確保する。しかし、候補計算機能テンプレート120の実装は、本開示に示される手動符号化による方式に限定されないことが理解されており、いくつかの他の例示的な実施例では、候補計算機能テンプレート120は、自動または半自動の方式により実装することができ、このような自動または半自動の方式により候補計算機能テンプレート120を実装する手段では、従来の最適化された計算機能テンプレートまたはターゲット計算機能テンプレート140/設定可能なパラメータの履歴データ/記録などを参照または結合ことができる。
本開示のいくつかの例示的な実施例では、候補計算機能テンプレート120は、機械指向プログラミング言語などの低レベルのプログラミング言語で実装される。追加または代替として、本開示のいくつかの例示的な実施例では、計算装置130によって実行されるプロセス200は、機械指向プログラミング言語などの低レベルのプログラミング言語で実施される。
低レベルのプログラミング言語は、高レベルのプログラミング言語と比べて、基礎となるハードウェアとより効果的に対話することができるので、ハードウェアの性能をより効果的に発揮するために役立ち、高性能チップの計算機能の実施を確保する。
本開示のいくつかの例示的な実施例では、複数の候補計算機能テンプレート120は、異なるアプリケーションシナリオ/演算規模に関連付けることができる。例えば、行列乗算の計算機能の場合、候補計算機能テンプレート120−1は、アプリケーションシナリオ1(例えば、乗算の行列サイズが50*50未満である)において良好な性能を発揮することができ、候補計算機能テンプレート120−2は、アプリケーションシナリオ2(例えば、乗算の行列サイズが50*50より大きい)において良好な性能を発揮することができる。異なる計算機能に対して、異なるアプリケーションシナリオ/演算規模に対応する候補計算機能テンプレート120を設計して実装し、異なるアプリケーションシナリオ/演算規模に対応するカスタマイズを実現することができる。
本開示のいくつかの例示的な実施例では、複数の候補計算機能テンプレート120が有する設定可能なパラメータの数および値は、任意であってもよく、それぞれの内部処理ロジックを有する。各候補計算機能テンプレート120は、それぞれの内部設計に基づいて、チップ内の複雑な設定可能なパラメータを上位レベルの呼び出し側(例えば、計算装置130)に提供することができるので、上位レベルの呼び出し側は、少なくとも部分的に、設定可能なパラメータに基づいて、候補計算機能テンプレート120の検索、設定、測定などを行うことができる。このようにして、チップに基づく計算機能を生成するプロセスの柔軟性を向上させるとともに、チップの内部パラメータの手動設定を回避し、チップ設計プロセス、特にチップソフトウェア開発の難しさを軽減し、チップの設定可能なパラメータを設定するプロセスの合理性と精度を向上させる。
本開示のいくつかの例示的な実施例では、候補計算機能テンプレート120は、この候補計算機能テンプレート120の適応範囲を限定することができる制限条件をさらに有する。本開示のいくつかの例示的な実施例では、制限条件は、入力パラメータ値110に関連付けることができ、例えば、行列演算が実施される場合、制限条件は、行列サイズが50*50未満であることであってもよい。
追加または代替として、本開示のいくつかの例示的な実施例では、制限条件は、候補計算機能テンプレート120の設定可能なパラメータの候補値を限定することもでき、例えば、行列演算が実行され、設定可能なパラメータがブロックサイズである場合、制限条件は、ブロックサイズの値が[2,4,6]であることであってもよい。
追加または代替として、本開示のいくつかの例示的な実施例では、制限条件は、入力パラメータ値110と設定可能なパラメータの両方に関連付けることができ、例えば、制限条件は、入力パラメータ値110および設定可能なパラメータの値を入力とする関数の演算結果が所定の条件を満たすことなどであってもよい。
本開示に記載の制限条件の例は単なる例示であり、制限条件を限定するものとして解釈されるべきではなく、制限条件は、異なる候補計算機能テンプレート120の特定の実装に応じて、任意の形式および任意の値であってもよい。
追加または代替として、計算装置130は、入力パラメータ値110および制限条件に基づいて、計算機能に対応する少なくとも1つの候補計算機能テンプレート120を決定する。入力パラメータ値110および/または制限条件が両方とも特定のアプリケーションシナリオ/演算規模をある程度反映できるので、入力パラメータ値110および制限条件に基づいて、計算機能に対応する少なくとも1つの候補計算機能テンプレート120を決定することは、検索対象となる候補計算機能テンプレート120の範囲を効果的に縮小し、チップ設計プロセス、特にチップソフトウェア開発の効率を高めることができる。
さらに図2を参照すると、ブロック230において、計算装置130は、入力パラメータ値110および候補計算機能テンプレート120(ブロック220で決定された候補計算機能テンプレート120の範囲内にある)の設定可能なパラメータの異なる候補値に基づいて、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現する。
本開示のいくつかの例示的な実施例では、計算装置130は、機械学習により、入力パラメータ値110および候補計算機能テンプレート120の設定可能なパラメータの複数の異なる候補値に基づいて、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値を決定する。
本開示のいくつかの例示的な実施例では、計算装置130は、この候補計算機能テンプレート120の設定可能なパラメータの候補値が異なる条件下で、候補計算機能テンプレート120の実行性能を推定し、推定された実行性能に基づいて、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値を決定する。
例示的で非限定的な例では、計算装置130は、入力パラメータ値110および/またはブロック220で決定された少なくとも1つの候補計算機能テンプレート120の設定可能なパラメータの値を含み得る初期測定セットを生成する。例えば、2つのベクトルの乗算を例にとると、入力パラメータ値110は、ベクトルの長さを特定することであって、例えば(50,50)であってもよく、長さ50の2つのベクトルを乗算する特定のアプリケーションシナリオを特定する。候補計算機能テンプレート120−1の設定可能なパラメータはベクトルセグメント長であり、セグメント長の候補値は[2,3,4]であり、制限条件は演算ベクトル長が100未満であることであるが、候補計算機能テンプレート120−2の設定可能なパラメータはベクトルセグメント長およびプロセス数であり、セグメント長の候補値は[3,4,5]であり、プロセス数の候補値は[3,4]であり、制限条件は演算ベクトル長が80未満であることである。初期値は[50,50,3,3]であってもよく、長さ50の2つのベクトルを乗算する特定のアプリケーションシナリオを特定することであり、演算時に使用されるセグメント長のパラメータは3であり、使用されるプロセス数は3である。
なお、上記初期測定セットの値の選択は単なる例示であり、初期測定セットの値における設定可能なパラメータの数は、必要に応じて調整することができるが、いくつかの例示的な実施例では、それは、ブロック220で決定されたすべての候補計算機能テンプレート120に関連付けられたすべての設定可能なパラメータを含み得るが、いくつかの他の例示的な実施例では、それは、ブロック220で決定されたすべての候補計算機能テンプレート120に関連付けられたすべての設定可能なパラメータの一部のみを含み得る。同様に、初期測定セットの値は、候補計算機能テンプレート120に基づいて合理的に設定され得る。本開示はこれを限定するものではない。例えば、候補計算機能テンプレート120の別の例では、2つのベクトル長がそれぞれ(1000,1000)である、つまり、各ベクトルが1000個の値を含むアプリケーションシナリオに対して、候補計算機能テンプレート120の設定可能なパラメータは、開始される計算コアの数(候補値がmであり、mが正の整数である)、および各計算コアによって計算される値の数(候補値がnであり、nが正の整数である)であり、対応する制限条件は、m*n≦1000であってもよい。
計算装置130は、初期測定セットに基づいて、この初期測定セットの条件下で、少なくとも1つの候補計算機能テンプレート120の実行性能を推定する。具体的には、上記のベクトル乗算の例を引き続き参照すると、計算装置130は、初期測定セット[50,50,3,3]の条件下で、テンプレート120−1および120−2のそれぞれの実行性能を推定する。
計算装置130は、機械学習により、次の測定パラメータセットを生成する。本開示のいくつかの例示的な実施例では、次の測定パラメータセットの選択は、前の測定パラメータセットの測定結果に基づいて実行され得る。また、次の測定パラメータセットの設定可能なパラメータの数と値の選択は、初期測定パラメータセットの場合と一致しており、簡潔にするため、ここでその説明を省略する。本操作は、既存または将来開発される任意の機械学習技術を含むことを理解されたい。機械学習により次の測定パラメータセットを生成して、次の測定パラメータセットの選択をより合理的にし、設定可能なパラメータのすべての候補値に対応する検索空間を走査する必要性を排除し、チップに基づく計算機能を生成する方法の効率を高める。
検索が終了する前に、次の測定パラメータセットを生成し、生成された測定パラメータセットに対して候補計算機能テンプレート120の実行性能を測定するステップが繰り返し実行される。測定された実行性能に基づいて、ターゲット計算機能テンプレート140およびこのターゲット計算機能テンプレート140に対応する設定可能なパラメータの値が決定される。例えば、測定結果は、最適な実行性能を備えた結果が、候補計算機能テンプレート120−1のセグメント長が3である場合に対応し、計算装置130が、候補計算機能テンプレート120−1をターゲットテンプレートとして決定し、候補計算機能テンプレート120−1の設定可能なパラメータ(即ち、ベクトルセグメント長)の候補値3をターゲット値として決定することを示している。
本開示のいくつかの例示的な実施例では、計算装置130は、ターゲット計算機能テンプレート140、およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値を決定するとき、候補計算機能テンプレートの制限条件も考慮する。具体的には、初期測定パラメータセットおよび次の測定パラメータセットを決定するとき、および、初期測定パラメータセットおよび次の測定パラメータセットを候補計算機能テンプレート120に応用するとき、候補計算機能テンプレート120の制限条件を考慮する。上記の方式により、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値を、より効果的かつ正確に決定することができる。
以上の方式により、チップ内の設定可能なパラメータが、上位レベルの呼び出し側に提供されており、チップソフトウェア開発プロセスにおいて、実行性能の測定結果に基づいて動的に設定できるので、チップ内の設定可能なパラメータを設定する難しさを軽減し、高性能チップの設計を確保する。
また、本開示のいくつかの例示的な実施例では、計算装置130は、JITコンパイルを用いて測定を実行して、候補計算機能テンプレート120の実行性能を取得することができる。具体的には、計算装置130は、生成された測定パラメータを候補計算機能テンプレート120に応用し、JIT方式を用いて、最終コードを生成し、候補計算機能テンプレート120の性能を測定する。このようにして、コードがコンパイル時ではなく実行時に生成されるので、チップ設計プロセス、特にチップソフトウェア開発の効率を高めるとともに、高性能チップに基づく計算機能の生成を確保する。
本開示のいくつかの例示的な実施例では、計算装置130は、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するが、具体的には、計算装置130は、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値に対応するコードを出力する。
また、様々な方式によりチップソフトウェア開発プロセスを制御して、チップソフトウェア開発プロセスの効率をさらに高めることができる。本開示のいくつかの例示的な実施例では、チップに基づく計算機能を生成するプロセスは、実行性能の閾値を設定することにより制御され得る。具体的には、ターゲット計算機能テンプレート140およびそのターゲット値を決定するプロセスにおいて、推定された実行性能が実行性能の閾値よりも優れている場合、この実行性能に対応する候補計算機能テンプレート120および候補計算機能テンプレート120の設定可能なパラメータの候補値を、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値として決定する。
実行性能の閾値は、様々な方式により設定され得るが、本開示のいくつかの例示的な実施例では、実行性能の閾値は、ユーザによって入力され得る。いくつかの他の例示的な実施例では、実行性能の閾値は、事前に設定されたデフォルト値であってもよく、計算装置130に事前に記憶され得る。
追加または代替として、本開示のいくつかの例示的な実施例では、チップに基づく計算機能を生成するプロセスは、所定の期間内に限定され得る。具体的には、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値は、所定の期間内に決定される。
所定の期間は、様々な方式により設定され得る。例えば、それは、ユーザ入力によって設定されてもよく、具体的には、ユーザは、チップの設計時間に関連付けられた期間を計算装置130に送信する。
追加または代替として、所定の期間はまた、入力パラメータ値110に基づいて決定され得る。例えば、計算装置130は、異なるアプリケーションシナリオ/演算規模に対して異なる所定の期間を設定することができる。追加または代替として、所定の期間はまた、計算装置130内にデフォルトで設定され得る。
以上の方式により、チップに基づく計算機能を生成するプロセスを柔軟に制御して、性能と効率とのバランスをより効果的に実現することができる。
また、本開示のいくつかの例示的な実施例では、計算装置130は、ターゲット計算機能テンプレート140およびターゲット値を決定した後、入力パラメータ値110と、入力パラメータ値110に対応する決定されたターゲット計算機能テンプレート140、およびこのターゲット計算機能テンプレート140に対応する設定可能なパラメータのターゲット値との対応関係を記憶する。
また、本開示のいくつかの例示的な実施例では、計算装置130は、入力パラメータ値110(ブロック210に示す)を受信した後、記憶された対応関係において検索を実行して、入力パラメータ値110に対応する対応関係が存在するか否かを判定し、入力パラメータ値110に対応する対応関係が存在すると判定される場合、この対応関係に基づいて、入力パラメータ値110に対応するターゲット計算機能テンプレート140、およびターゲット計算機能テンプレート140に対応する設定可能なパラメータのターゲット値を直接決定して、チップに基づく前記計算機能を実現する。
以上の方式により、生成された、チップに基づく計算機能は、様々なアプリケーションシナリオ/演算規模に動的に適用でき、設定された設定可能なパラメータは、推定された実行性能に基づいて決定され、信頼性がより高いが、機械学習により、測定パラメータセットを選択し、ターゲット演算子テンプレートおよびターゲット値を決定して、パラメータを手動で設定する難しさを軽減し、チップに基づく計算機能を効果的に生成することができる。
図3は、本開示の実施例に係る、チップに基づく計算機能を生成する装置300のブロック図を示している。装置300は、図1の計算装置130に含まれるか、または計算装置130として実装され得る。図3に示すように、装置300は、チップによってサポートされる計算機能に関連付けられた入力パラメータ値110を取得するように構成された入力パラメータ値取得モジュール310を含む。装置300は、入力パラメータ値110に基づいて、計算機能に対応する少なくとも1つの候補計算機能テンプレート120を決定するように構成されたものであって、候補計算機能テンプレート120が候補計算機能テンプレート120の実行性能に関連付けられた設定可能なパラメータを有し、設定可能なパラメータが少なくとも1つの候補値を有する、候補計算機能テンプレート決定モジュール320をさらに含む。さらに、装置300は、入力パラメータ値110および候補計算機能テンプレート120の設定可能なパラメータの異なる候補値に基づいて、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するように構成されたターゲット計算機能テンプレート決定モジュール330をさらに含む。
本開示のいくつかの例示的な実施例では、ターゲット計算機能テンプレート決定モジュール330は、機械学習により、入力パラメータ値110および候補計算機能テンプレート120の設定可能なパラメータの複数の異なる候補値に基づいて、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値を決定するように構成された機械学習モジュールを含む。
本開示のいくつかの例示的な実施例では、ターゲット計算機能テンプレート決定モジュール330は、候補計算機能テンプレート120の設定可能なパラメータの候補値が異なる条件下で、候補計算機能テンプレート120の実行性能を推定するように構成された性能推定モジュールと、推定された実行性能に基づいて、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値を決定するように構成された第二ターゲット計算機能テンプレート決定モジュールとを含む。
本開示のいくつかの例示的な実施例では、第二ターゲット計算機能テンプレート決定モジュールは、推定された実行性能が実行性能の閾値よりも優れているか否かを判定するように構成された閾値判定モジュールと、推定された実行性能が実行性能の閾値よりも優れている場合、推定された実行性能に対応する候補計算機能テンプレート120および候補計算機能テンプレート120の設定可能なパラメータの候補値を、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値として決定するように構成された第三ターゲット計算機能テンプレート決定モジュールと、を含む。
本開示のいくつかの例示的な実施例では、実行性能の閾値は、ユーザによって入力されるか、または計算装置130によって事前に設定される。
本開示のいくつかの例示的な実施例では、性能推定モジュールは、入力パラメータ値110、および少なくとも1つの設定可能なパラメータの少なくとも1つの候補値を、少なくとも1つの候補計算機能テンプレート120に応用するように構成されたパラメータ応用モジュールと、実行時コンパイルにより、少なくとも1つの候補計算機能テンプレート120のコードを生成し、少なくとも1つの候補計算機能テンプレート120の実行性能を推定するように構成されたコンパイルモジュールと、を含む。
本開示のいくつかの例示的な実施例では、候補計算機能テンプレート120は、入力パラメータ値110に関連付けられた制限条件、および/または候補計算機能テンプレート120の実行性能に関連付けられた設定可能なパラメータに関連付けられた制限条件をさらに有するが、候補計算機能テンプレート決定モジュール320は、入力パラメータ値110および制限条件に基づいて、計算機能に対応する少なくとも1つの候補計算機能テンプレート120を決定するように構成された第一候補計算機能テンプレート決定モジュールを含む。
本開示のいくつかの例示的な実施例では、装置300は、入力パラメータ値110と、入力パラメータ値110に対応する決定されたターゲット計算機能テンプレート140、およびターゲット計算機能テンプレート140に対応する設定可能なパラメータのターゲット値との対応関係を記憶するように構成された記憶モジュールをさらに含む。
本開示のいくつかの例示的な実施例では、装置130は、入力パラメータ値110に基づいて、計算機能に対応する少なくとも1つの候補計算機能テンプレート120を決定する前に、記憶された対応関係には入力パラメータ値110に対応する対応関係が存在するか否かを判定するように構成された対応関係判定モジュールと、入力パラメータ値110に対応する対応関係が存在すると判定される場合、対応関係に基づいて、入力パラメータ値110に対応するターゲット計算機能テンプレート140、およびターゲット計算機能テンプレート140に対応する設定可能なパラメータのターゲット値を決定するように構成された第四ターゲット計算機能テンプレート決定モジュールとをさらに含む。
本開示のいくつかの例示的な実施例では、ターゲット計算機能テンプレート決定モジュール330は、所定の期間内に、ターゲット計算機能テンプレート140およびターゲット計算機能テンプレート140の設定可能なパラメータのターゲット値を決定するように構成された第五ターゲット計算機能テンプレート決定モジュールを含む。
本開示のいくつかの例示的な実施例では、所定の期間は、ユーザによって入力されたチップの設計時間に関連付けられた期間、入力パラメータ値110、および計算装置130によって事前に設定されたチップの設計時間に関連付けられた期間のうちの少なくとも1つに基づいて決定される。
本開示のいくつかの例示的な実施例では、少なくとも1つの候補計算機能テンプレート120は、機械指向プログラミング言語で実装される。
本開示のいくつかの例示的な実施例では、計算機能のそれぞれは、複数の候補計算機能テンプレート120に対応し、複数の候補計算機能テンプレート120は、異なるアプリケーションシナリオに対応する。
本開示のいくつかの例示的な実施例では、入力パラメータ値110は、アプリケーションシナリオに関連付けられる。
図4は、本開示の実施例を実施することができる例示的な装置400の概略ブロック図を示している。装置400は、図1の計算装置130を実装するために使用され得る。図示されるように、装置400は、リードオンリメモリ(ROM)402に記憶されたコンピュータプログラム命令、または記憶ユニット408からランダムアクセスメモリ(RAM)403にロードされたコンピュータプログラム命令に従って、各種の適切な動作および処理を実行することができる、計算ユニット401を含む。RAM403には、装置400の動作に必要な各種のプログラムやデータも記憶され得る。計算ユニット401、ROM402、およびRAM403は、バス404を介して相互に接続されている。入力/出力(I/O)インターフェース405もバス404に接続されている。
装置400内の複数の部品は、I/Oインターフェース404に接続されたものであって、キーボード、マウスなどの入力ユニット406と、各種のディスプレイ、スピーカーなどの出力ユニット407と、磁気ディスク、光ディスクなどの記憶ユニット408と、ネットワークカード、モデム、無線通信トランシーバなどの通信ユニット409と、を含む。通信ユニット409は、装置400が、インターネットなどのコンピュータネットワーク、および/または様々な通信ネットワークを介して、他の装置との間で情報/データを交換することを可能にする。
計算ユニット401は、処理能力および計算能力を有する様々な汎用および/または専用の処理ユニットであってもよい。計算ユニット401のいくつかの例は、中央処理装置(CPU)、グラフィック処理装置(GPU)、様々な専用の人工知能(AI)計算チップ、機械学習モデルアルゴリズムを実行する様々な計算ユニット、デジタル信号プロセッサ(DSP)、任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。計算ユニット401は、プロセス200など、上述した様々な方法および処理を実行する。例えば、いくつかの例示的な実施例では、プロセス200は、記憶ユニット408などの機械可読媒体上で有形的に具現化されるコンピュータソフトウェアプログラムとして実装され得る。いくつかの例示的な実施例では、コンピュータプログラムの一部または全部は、ROM402および/または通信ユニット409を介して、装置400にロードおよび/またはインストールされ得る。コンピュータプログラムがRAM403にロードされ、計算ユニット401によって実行されると、上記プロセス200の1つまたは複数のステップが実行され得る。あるいは、他の実施例では、計算ユニット401は、任意の他の適切な手段(例えば、ファームウェア)によりプロセス200を実行するように構成されてもよい。
本明細書で上述した機能は、少なくとも部分的に、1つまたは複数のハードウェア論理ユニットによって実行され得る。例えば、使用できる例示的なハードウェア論理ユニットは、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップ(SOC)、コンプレックス・プログラマブル・ロジック・デバイス(CPLD)などを含むが、これらに限定されない。
本開示の方法を実施するためのプログラムコードは、1つまたは複数のプログラミング言語の任意の組み合わせで書かれてもよい。これらのプログラムコードは、プロセッサまたはコントローラによって実行されるとき、フローチャートおよび/またはブロック図で指定された機能/動作が実行されるように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサまたはコントローラに提供される。プログラムコードは、完全にマシン上で実行され得るか、または部分的にマシン上で実行され得るか、または独立したソフトウェアパッケージとして、部分的にマシン上で、部分的にリモートマシン上で実行され得るか、または完全にリモートマシンまたはサーバ上で実行され得る。
本開示の文脈において、機械可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれらと組み合わせて使用するためのプログラムを含むかまたは記憶することができる有形媒体であってもよい。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であってもよい。例えば、機械可読媒体は、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、またはこれらの任意の適切な組み合わせを含み得るが、これらに限定されない。機械可読記憶媒体のより具体的な例は、1本または複数本の導線を備えた電気コネクタ、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、消去可能なプログラマブルリードオンリメモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブル・コンパクト・ディスク・リードオンリメモリ(CD−ROM)、光学メモリ、磁気メモリ、またはこれらの任意の適切な組み合わせを含む。
また、各操作が特定の順序で説明されるが、これは、このような操作が示された特定の順序または逐次的な順序で実行されること、または望ましい結果を達成するためにすべての示された操作が実行されることを必要とするものとして理解されるべきである。特定の状況では、マルチタスク処理および並列処理が有利な場合がある。同様に、以上の説明がいくつかの特定の実施形態の詳細を含むが、これらは、本開示の範囲を限定するものとして解釈されるべきではない。別個の実施例の文脈において説明される特定の特徴は、単一の実施形態において組み合わせて実施することもできる。逆に、別個の実施形態の文脈において説明される様々な特徴は、複数の実施形態において個別に、または任意の適切な部分的組み合わせによって実施することもできる。
本主題を構造的特徴および/または方法論的動作に固有の言語で説明したが、添付の特許請求の範囲において定義される主題は、必ずしも上記の特定の特徴または動作に限定されないことを理解されたい。むしろ、上記の特定の特徴および動作は、特許請求の範囲を実施する例示的な形態として開示されている。
なお、出願当初の特許請求の範囲の記載は以下の通りである。
請求項1:
チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するステップと、
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも1つの候補計算機能テンプレートを決定するステップであって、前記候補計算機能テンプレートが前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、前記設定可能なパラメータが少なくとも1つの候補値を有するステップと、
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するステップと
を含む、チップに基づく計算機能を生成する方法。
請求項2:
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
機械学習により、前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの複数の異なる前記候補値に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップ
を含む、請求項1に記載の方法。
請求項3:
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するステップと、
推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップと
を含む、請求項1に記載の方法。
請求項4:
推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップは、
推定された前記実行性能が実行性能の閾値よりも優れているか否かを判定するステップと、
推定された前記実行性能が実行性能の閾値よりも優れている場合、推定された前記実行性能に対応する前記候補計算機能テンプレートおよび前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値を、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値として決定するステップと
を含む、請求項3に記載の方法。
請求項5:
前記実行性能の閾値は、ユーザによって入力されるか、またはチップ設計装置によって事前に設定される、
請求項4に記載の方法。
請求項6:
前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するステップは、
前記入力パラメータ値、および少なくとも1つの前記設定可能なパラメータの少なくとも1つの前記候補値を、前記少なくとも1つの候補計算機能テンプレートに応用するステップと、
実行時コンパイルにより、前記少なくとも1つの候補計算機能テンプレートのコードを生成し、前記少なくとも1つの候補計算機能テンプレートの前記実行性能を推定するステップと
を含む、請求項3に記載の方法。
請求項7:
前記候補計算機能テンプレートは、前記入力パラメータ値に関連付けられた制限条件、および/または前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータに関連付けられた制限条件をさらに有し、
前記計算機能に対応する少なくとも1つの計算機能テンプレートを決定するステップは、
前記入力パラメータ値および前記制限条件に基づいて、前記計算機能に対応する前記少なくとも1つの候補計算機能テンプレートを決定するステップ
を含む、請求項1に記載の方法。
請求項8:
前記入力パラメータ値と、前記入力パラメータ値に対応する決定された前記ターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値との対応関係を記憶するステップをさらに含む、請求項1に記載の方法。
請求項9:
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも1つの候補計算機能テンプレートを決定する前に、記憶された前記対応関係には前記入力パラメータ値に対応する対応関係が存在するか否かを判定するステップをさらに含むことであって、
ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
前記入力パラメータ値に対応する対応関係が存在すると判定される場合、前記対応関係に基づいて、前記入力パラメータ値に対応するターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値を決定するステップ
を含む、請求項8に記載の方法。
請求項10:
ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
所定の期間内に、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップ
を含む、請求項1に記載の方法。
請求項11:
前記所定の期間は、
ユーザによって入力された前記チップの設計時間に関連付けられた期間、前記入力パラメータ値、およびチップ設計装置によって事前に設定された前記チップの設計時間に関連付けられた期間のうちの少なくとも1つに基づいて決定される
請求項10に記載の方法。
請求項12:
前記計算機能のそれぞれが複数の前記候補計算機能テンプレートに対応し、前記複数の候補計算機能テンプレートが異なるアプリケーションシナリオに対応し、前記入力パラメータ値がアプリケーションシナリオに関連付けられる
請求項1に記載の方法。
請求項13:
チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するように構成された入力パラメータ値取得モジュールと、
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも1つの候補計算機能テンプレートを決定するように構成されたものであって、前記候補計算機能テンプレートが前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、前記設定可能なパラメータが少なくとも1つの候補値を有する、候補計算機能テンプレート決定モジュールと、
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するように構成されたターゲット計算機能テンプレート決定モジュールと
を含む、チップ設計装置。
請求項14:
前記ターゲット計算機能テンプレート決定モジュールは、
機械学習により、前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの複数の異なる前記候補値に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された機械学習モジュール
を含む、請求項13に記載の装置。
請求項15:
前記ターゲット計算機能テンプレート決定モジュールは、
前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するように構成された性能推定モジュールと、
推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された第二ターゲット計算機能テンプレート決定モジュールと
を含む、請求項13に記載の装置。
請求項16:
第二ターゲット計算機能テンプレート決定モジュールは、
推定された前記実行性能が実行性能の閾値よりも優れているか否かを判定するように構成された閾値判定モジュールと、
推定された前記実行性能が実行性能の閾値よりも優れている場合、推定された前記実行性能に対応する前記候補計算機能テンプレートおよび前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値を、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値として決定するように構成された第三ターゲット計算機能テンプレート決定モジュールと
を含む、請求項15に記載の装置。
請求項17:
前記実行性能の閾値は、ユーザによって入力されるか、またはチップ設計装置によって事前に設定される、
請求項16に記載の装置。
請求項18:
性能推定モジュールは、
前記入力パラメータ値、および少なくとも1つの前記設定可能なパラメータの少なくとも1つの前記候補値を、前記少なくとも1つの候補計算機能テンプレートに応用するように構成されたパラメータ応用モジュールと、
実行時コンパイルにより、前記少なくとも1つの候補計算機能テンプレートのコードを生成し、前記少なくとも1つの候補計算機能テンプレートの前記実行性能を推定するように構成されたコンパイルモジュールと
を含む、請求項15に記載の装置。
請求項19:
前記候補計算機能テンプレートは、前記入力パラメータ値に関連付けられた制限条件、および/または前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータに関連付けられた制限条件をさらに有し、
前記候補計算機能テンプレート決定モジュールは、
前記入力パラメータ値および前記制限条件に基づいて、前記計算機能に対応する前記少なくとも1つの候補計算機能テンプレートを決定するように構成された第一候補計算機能テンプレート決定モジュール
を含む、請求項13に記載の装置。
請求項20:
前記入力パラメータ値と、前記入力パラメータ値に対応する決定された前記ターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値との対応関係を記憶するように構成された記憶モジュールをさらに含む、請求項13に記載の装置。
請求項21:
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも1つの候補計算機能テンプレートを決定する前に、記憶された前記対応関係には前記入力パラメータ値に対応する対応関係が存在するか否かを判定するように構成された対応関係判定モジュールと、
前記入力パラメータ値に対応する対応関係が存在すると判定される場合、前記対応関係に基づいて、前記入力パラメータ値に対応するターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値を決定するように構成された第四ターゲット計算機能テンプレート決定モジュールと
をさらに含む、請求項20に記載の装置。
請求項22:
ターゲット計算機能テンプレート決定モジュールは、
所定の期間内に、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された第五ターゲット計算機能テンプレート決定モジュール
を含む、請求項13に記載の装置。
請求項23:
前記所定の期間は、
ユーザによって入力された前記チップの設計時間に関連付けられた期間、前記入力パラメータ値、およびチップ設計装置によって事前に設定された前記チップの設計時間に関連付けられた期間のうちの少なくとも1つに基づいて決定される、
請求項22に記載の装置。
請求項24:
前記計算機能のそれぞれが複数の前記候補計算機能テンプレートに対応し、前記複数の候補計算機能テンプレートが異なるアプリケーションシナリオに対応し、前記入力パラメータ値が前記アプリケーションシナリオに関連付けられる、
請求項13に記載の装置。
請求項25:
1つまたは複数のプロセッサと、
1つまたは複数のプログラムを記憶するためのものであって、前記1つまたは複数のプログラムが前記1つまたは複数のプロセッサによって実行されるとき、電子デバイスが請求項1〜12のいずれか一項に記載の方法を実施できるようにするメモリと
を含む、電子デバイス。
請求項26:
請求項1〜12のいずれか一項に記載の方法を実施するためにプロセッサによって実行されるコンピュータプログラムを記憶したコンピュータ可読記憶媒体。

Claims (27)

  1. チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するステップと、
    前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも1つの候補計算機能テンプレートを決定するステップであって、前記候補計算機能テンプレートが前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、前記設定可能なパラメータが少なくとも1つの候補値を有するステップと、
    前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するステップと
    を含む、チップに基づく計算機能を生成する方法。
  2. 前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
    機械学習により、前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの複数の異なる前記候補値に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップ
    を含む、請求項1に記載の方法。
  3. 前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
    前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するステップと、
    推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップと
    を含む、請求項1に記載の方法。
  4. 推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップは、
    推定された前記実行性能が実行性能の閾値よりも優れているか否かを判定するステップと、
    推定された前記実行性能が実行性能の閾値よりも優れている場合、推定された前記実行性能に対応する前記候補計算機能テンプレートおよび前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値を、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値として決定するステップと
    を含む、請求項3に記載の方法。
  5. 前記実行性能の閾値は、ユーザによって入力されるか、またはチップ設計装置によって事前に設定される、
    請求項4に記載の方法。
  6. 前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するステップは、
    前記入力パラメータ値、および少なくとも1つの前記設定可能なパラメータの少なくとも1つの前記候補値を、前記少なくとも1つの候補計算機能テンプレートに応用するステップと、
    実行時コンパイルにより、前記少なくとも1つの候補計算機能テンプレートのコードを生成し、前記少なくとも1つの候補計算機能テンプレートの前記実行性能を推定するステップと
    を含む、請求項3に記載の方法。
  7. 前記候補計算機能テンプレートは、前記入力パラメータ値に関連付けられた制限条件、および/または前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータに関連付けられた制限条件をさらに有し、
    前記計算機能に対応する少なくとも1つの計算機能テンプレートを決定するステップは、
    前記入力パラメータ値および前記制限条件に基づいて、前記計算機能に対応する前記少なくとも1つの候補計算機能テンプレートを決定するステップ
    を含む、請求項1に記載の方法。
  8. 前記入力パラメータ値と、前記入力パラメータ値に対応する決定された前記ターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値との対応関係を記憶するステップをさらに含む、請求項1に記載の方法。
  9. 前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも1つの候補計算機能テンプレートを決定する前に、記憶された前記対応関係には前記入力パラメータ値に対応する対応関係が存在するか否かを判定するステップをさらに含むことであって、
    ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
    前記入力パラメータ値に対応する対応関係が存在すると判定される場合、前記対応関係に基づいて、前記入力パラメータ値に対応するターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値を決定するステップ
    を含む、請求項8に記載の方法。
  10. ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
    所定の期間内に、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップ
    を含む、請求項1に記載の方法。
  11. 前記所定の期間は、
    ユーザによって入力された前記チップの設計時間に関連付けられた期間、前記入力パラメータ値、およびチップ設計装置によって事前に設定された前記チップの設計時間に関連付けられた期間のうちの少なくとも1つに基づいて決定される
    請求項10に記載の方法。
  12. 前記計算機能のそれぞれが複数の前記候補計算機能テンプレートに対応し、前記複数の候補計算機能テンプレートが異なるアプリケーションシナリオに対応し、前記入力パラメータ値がアプリケーションシナリオに関連付けられる
    請求項1に記載の方法。
  13. チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するように構成された入力パラメータ値取得モジュールと、
    前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも1つの候補計算機能テンプレートを決定するように構成されたものであって、前記候補計算機能テンプレートが前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、前記設定可能なパラメータが少なくとも1つの候補値を有する、候補計算機能テンプレート決定モジュールと、
    前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するように構成されたターゲット計算機能テンプレート決定モジュールと
    を含む、チップ設計装置。
  14. 前記ターゲット計算機能テンプレート決定モジュールは、
    機械学習により、前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの複数の異なる前記候補値に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された機械学習モジュール
    を含む、請求項13に記載の装置。
  15. 前記ターゲット計算機能テンプレート決定モジュールは、
    前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するように構成された性能推定モジュールと、
    推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された第二ターゲット計算機能テンプレート決定モジュールと
    を含む、請求項13に記載の装置。
  16. 第二ターゲット計算機能テンプレート決定モジュールは、
    推定された前記実行性能が実行性能の閾値よりも優れているか否かを判定するように構成された閾値判定モジュールと、
    推定された前記実行性能が実行性能の閾値よりも優れている場合、推定された前記実行性能に対応する前記候補計算機能テンプレートおよび前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値を、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値として決定するように構成された第三ターゲット計算機能テンプレート決定モジュールと
    を含む、請求項15に記載の装置。
  17. 前記実行性能の閾値は、ユーザによって入力されるか、またはチップ設計装置によって事前に設定される、
    請求項16に記載の装置。
  18. 性能推定モジュールは、
    前記入力パラメータ値、および少なくとも1つの前記設定可能なパラメータの少なくとも1つの前記候補値を、前記少なくとも1つの候補計算機能テンプレートに応用するように構成されたパラメータ応用モジュールと、
    実行時コンパイルにより、前記少なくとも1つの候補計算機能テンプレートのコードを生成し、前記少なくとも1つの候補計算機能テンプレートの前記実行性能を推定するように構成されたコンパイルモジュールと
    を含む、請求項15に記載の装置。
  19. 前記候補計算機能テンプレートは、前記入力パラメータ値に関連付けられた制限条件、および/または前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータに関連付けられた制限条件をさらに有し、
    前記候補計算機能テンプレート決定モジュールは、
    前記入力パラメータ値および前記制限条件に基づいて、前記計算機能に対応する前記少なくとも1つの候補計算機能テンプレートを決定するように構成された第一候補計算機能テンプレート決定モジュール
    を含む、請求項13に記載の装置。
  20. 前記入力パラメータ値と、前記入力パラメータ値に対応する決定された前記ターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値との対応関係を記憶するように構成された記憶モジュールをさらに含む、請求項13に記載の装置。
  21. 前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも1つの候補計算機能テンプレートを決定する前に、記憶された前記対応関係には前記入力パラメータ値に対応する対応関係が存在するか否かを判定するように構成された対応関係判定モジュールと、
    前記入力パラメータ値に対応する対応関係が存在すると判定される場合、前記対応関係に基づいて、前記入力パラメータ値に対応するターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値を決定するように構成された第四ターゲット計算機能テンプレート決定モジュールと
    をさらに含む、請求項20に記載の装置。
  22. ターゲット計算機能テンプレート決定モジュールは、
    所定の期間内に、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された第五ターゲット計算機能テンプレート決定モジュール
    を含む、請求項13に記載の装置。
  23. 前記所定の期間は、
    ユーザによって入力された前記チップの設計時間に関連付けられた期間、前記入力パラメータ値、およびチップ設計装置によって事前に設定された前記チップの設計時間に関連付けられた期間のうちの少なくとも1つに基づいて決定される、
    請求項22に記載の装置。
  24. 前記計算機能のそれぞれが複数の前記候補計算機能テンプレートに対応し、前記複数の候補計算機能テンプレートが異なるアプリケーションシナリオに対応し、前記入力パラメータ値が前記アプリケーションシナリオに関連付けられる、
    請求項13に記載の装置。
  25. 1つまたは複数のプロセッサと、
    1つまたは複数のプログラムを記憶するためのものであって、前記1つまたは複数のプログラムが前記1つまたは複数のプロセッサによって実行されるとき、電子デバイスが請求項1〜12のいずれか一項に記載の方法を実施できるようにするメモリと
    を含む、電子デバイス。
  26. 請求項1〜12のいずれか一項に記載の方法を実施するためにプロセッサによって実行されるコンピュータプログラムを記憶したコンピュータ可読記憶媒体。
  27. コンピュータプログラムであって、
    前記コンピュータプログラムがプロセッサにより実行されると、請求項1〜12のいずれか1項に記載の方法を実現させるコンピュータプログラム。
JP2020002570A 2019-06-26 2020-01-10 チップに基づく計算機能を生成する方法、装置、デバイス、および記憶媒体 Active JP6952138B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201910559200.3A CN112148391A (zh) 2019-06-26 2019-06-26 生成基于芯片的计算功能的方法、装置、设备和存储介质
CN201910559200.3 2019-06-26

Publications (2)

Publication Number Publication Date
JP2021005357A JP2021005357A (ja) 2021-01-14
JP6952138B2 true JP6952138B2 (ja) 2021-10-20

Family

ID=68841033

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020002570A Active JP6952138B2 (ja) 2019-06-26 2020-01-10 チップに基づく計算機能を生成する方法、装置、デバイス、および記憶媒体

Country Status (5)

Country Link
US (1) US11507348B2 (ja)
EP (1) EP3757760A1 (ja)
JP (1) JP6952138B2 (ja)
KR (1) KR102333845B1 (ja)
CN (1) CN112148391A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113342346B (zh) * 2021-05-18 2022-03-25 北京百度网讯科技有限公司 深度学习框架的算子注册方法、装置、设备和存储介质
CN113419207B (zh) * 2021-08-24 2021-11-05 湖南省计量检测研究院 一种基于物联网的计量芯片异常检测及诊断系统
CN113705017B (zh) * 2021-09-08 2022-09-16 清华大学无锡应用技术研究院 芯片设计方法、装置、芯片、电子设备及存储介质
WO2023129491A1 (en) * 2021-12-31 2023-07-06 Ascenium, Inc. Compute element processing using control word templates

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6850252B1 (en) * 1999-10-05 2005-02-01 Steven M. Hoffberg Intelligent electronic appliance system and method
US6768515B1 (en) * 1999-03-05 2004-07-27 Clarity Technologies, Inc. Two architectures for integrated realization of sensing and processing in a single device
US6871341B1 (en) * 2000-03-24 2005-03-22 Intel Corporation Adaptive scheduling of function cells in dynamic reconfigurable logic
US6594724B1 (en) * 2000-03-30 2003-07-15 Hitachi Global Storage Technologies Netherlands B.V. Enhanced DASD with smaller supplementary DASD
US7437335B2 (en) * 2004-12-07 2008-10-14 Eric Baum Method and system for constructing cognitive programs
US8725667B2 (en) * 2008-03-08 2014-05-13 Tokyo Electron Limited Method and system for detection of tool performance degradation and mismatch
US8782622B2 (en) * 2008-11-07 2014-07-15 Advanced Micro Devices, Inc. Optimistic selection of best performing generated code of multiple ISA systems
US8621301B2 (en) 2009-03-04 2013-12-31 Alcatel Lucent Method and apparatus for virtual in-circuit emulation
US8879663B1 (en) * 2012-06-26 2014-11-04 L-3 Communications Corp. Adaptive filtering for canceling distortion in radio frequency signals
US10203934B2 (en) 2012-07-11 2019-02-12 Intel Corporation Parallell processing of a single data buffer
US10769122B2 (en) 2014-03-13 2020-09-08 Ab Initio Technology Llc Specifying and applying logical validation rules to data
US10488865B2 (en) * 2014-12-16 2019-11-26 Al Incorporated Methods and systems for robotic surface coverage
US10733350B1 (en) * 2015-12-30 2020-08-04 Sharat C Prasad On-chip and system-area multi-processor interconnection networks in advanced processes for maximizing performance minimizing cost and energy
US10477271B1 (en) * 2016-10-12 2019-11-12 Opine Inc. System and method for generating real-time, event and user-based responses and analytics
GB2568776B (en) * 2017-08-11 2020-10-28 Google Llc Neural network accelerator with parameters resident on chip
US10756982B2 (en) * 2018-05-17 2020-08-25 Microsoft Technology Licensing, Llc Machine learning microservice architecture design tools and methods
CN109359732B (zh) * 2018-09-30 2020-06-09 阿里巴巴集团控股有限公司 一种芯片及基于其的数据处理方法

Also Published As

Publication number Publication date
KR102333845B1 (ko) 2021-12-06
KR20210001871A (ko) 2021-01-06
US11507348B2 (en) 2022-11-22
EP3757760A1 (en) 2020-12-30
JP2021005357A (ja) 2021-01-14
US20200409662A1 (en) 2020-12-31
CN112148391A (zh) 2020-12-29

Similar Documents

Publication Publication Date Title
JP6952138B2 (ja) チップに基づく計算機能を生成する方法、装置、デバイス、および記憶媒体
Dastgeer et al. Auto-tuning SkePU: a multi-backend skeleton programming framework for multi-GPU systems
US9218223B2 (en) Barrier synchronization with dynamic width calculation
CN112292667B (zh) 选择处理器的方法和装置
US20140237460A1 (en) Vectorization in an optimizing compiler
US10241766B2 (en) Application binary interface cross compilation
EP2805232B1 (en) Predication of control flow instructions having associated texture load instructions for a graphics processing unit
US8359291B2 (en) Architecture-aware field affinity estimation
US20210224130A1 (en) Method and system for opportunistic load balancing in neural networks using metadata
WO2023107789A1 (en) Deterministic replay of a multi-threaded trace on a multi-threaded processor
WO2012154606A1 (en) Efficient conditional flow control compilation
US10353591B2 (en) Fused shader programs
WO2018076979A1 (zh) 一种指令间数据依赖的检测方法和装置
Goossens Dataflow management, dynamic load balancing, and concurrent processing for real‐time embedded vision applications using Quasar
US11573777B2 (en) Method and apparatus for enabling autonomous acceleration of dataflow AI applications
US20180253288A1 (en) Dynamically predict and enhance energy efficiency
US11221851B2 (en) Method executed by computing device, apparatus, device and computer-readable storage medium
CN112465116A (zh) 运算方法、装置、电子设备和存储介质
KR20200083025A (ko) 런타임 수행특성을 도출하는 그래픽스 프로세싱 유닛 및 이의 동작방법
Li et al. Path Forward Beyond Simulators: Fast and Accurate GPU Execution Time Prediction for DNN Workloads
CN112214443B (zh) 设置于图形处理器中的二次卸载装置和方法
CN112230931B (zh) 适用于图形处理器的二次卸载的编译方法、装置和介质
Ul Mustafa et al. Exploiting architectural features of a computer vision platform towards reducing memory stalls
Gusenbauer A Novel Mapping of Arbitrary Precision Integer Operations to the GPU
CN118093349A (zh) 一种基于计算任务重构的gpu计算单元数量自动度量方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200703

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200703

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210714

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20210831

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210927

R150 Certificate of patent or registration of utility model

Ref document number: 6952138

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313114

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350