(57)【特許請求の範囲】
【請求項１】
チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するステップと、
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも１つの候補計算機能テンプレートを決定するステップであって、前記候補計算機能テンプレートが前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、前記設定可能なパラメータが少なくとも１つの候補値を有するステップと、
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するステップと
を含む、チップに基づく計算機能を生成する方法。
【請求項２】
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
機械学習により、前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの複数の異なる前記候補値に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップ
を含む、請求項１に記載の方法。
【請求項３】
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するステップと、
推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップと
を含む、請求項１に記載の方法。
【請求項４】
推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップは、
推定された前記実行性能が実行性能の閾値よりも優れているか否かを判定するステップと、
推定された前記実行性能が実行性能の閾値よりも優れている場合、推定された前記実行性能に対応する前記候補計算機能テンプレートおよび前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値を、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値として決定するステップと
を含む、請求項３に記載の方法。
【請求項５】
前記実行性能の閾値は、ユーザによって入力されるか、またはチップ設計装置によって事前に設定される、
請求項４に記載の方法。
【請求項６】
前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するステップは、
前記入力パラメータ値、および少なくとも１つの前記設定可能なパラメータの少なくとも１つの前記候補値を、前記少なくとも１つの候補計算機能テンプレートに応用するステップと、
実行時コンパイルにより、前記少なくとも１つの候補計算機能テンプレートのコードを生成し、前記少なくとも１つの候補計算機能テンプレートの前記実行性能を推定するステップと
を含む、請求項３に記載の方法。
【請求項７】
前記候補計算機能テンプレートは、前記入力パラメータ値に関連付けられた制限条件、および／または前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータに関連付けられた制限条件をさらに有し、
前記計算機能に対応する少なくとも１つの計算機能テンプレートを決定するステップは、
前記入力パラメータ値および前記制限条件に基づいて、前記計算機能に対応する前記少なくとも１つの候補計算機能テンプレートを決定するステップ
を含む、請求項１に記載の方法。
【請求項８】
前記入力パラメータ値と、前記入力パラメータ値に対応する決定された前記ターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値との対応関係を記憶するステップをさらに含む、請求項１に記載の方法。
【請求項９】
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも１つの候補計算機能テンプレートを決定する前に、記憶された前記対応関係には前記入力パラメータ値に対応する対応関係が存在するか否かを判定するステップをさらに含むことであって、
ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
前記入力パラメータ値に対応する対応関係が存在すると判定される場合、前記対応関係に基づいて、前記入力パラメータ値に対応するターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値を決定するステップ
を含む、請求項８に記載の方法。
【請求項１０】
ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
所定の期間内に、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップ
を含む、請求項１に記載の方法。
【請求項１１】
前記所定の期間は、
ユーザによって入力された前記チップの設計時間に関連付けられた期間、前記入力パラメータ値、およびチップ設計装置によって事前に設定された前記チップの設計時間に関連付けられた期間のうちの少なくとも１つに基づいて決定される
請求項１０に記載の方法。
【請求項１２】
前記計算機能のそれぞれが複数の前記候補計算機能テンプレートに対応し、前記複数の候補計算機能テンプレートが異なるアプリケーションシナリオに対応し、前記入力パラメータ値がアプリケーションシナリオに関連付けられる
請求項１に記載の方法。
【請求項１３】
チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するように構成された入力パラメータ値取得モジュールと、
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも１つの候補計算機能テンプレートを決定するように構成されたものであって、前記候補計算機能テンプレートが前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、前記設定可能なパラメータが少なくとも１つの候補値を有する、候補計算機能テンプレート決定モジュールと、
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するように構成されたターゲット計算機能テンプレート決定モジュールと
を含む、チップ設計装置。
【請求項１４】
前記ターゲット計算機能テンプレート決定モジュールは、
機械学習により、前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの複数の異なる前記候補値に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された機械学習モジュール
を含む、請求項１３に記載の装置。
【請求項１５】
前記ターゲット計算機能テンプレート決定モジュールは、
前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するように構成された性能推定モジュールと、
推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された第二ターゲット計算機能テンプレート決定モジュールと
を含む、請求項１３に記載の装置。
【請求項１６】
第二ターゲット計算機能テンプレート決定モジュールは、
推定された前記実行性能が実行性能の閾値よりも優れているか否かを判定するように構成された閾値判定モジュールと、
推定された前記実行性能が実行性能の閾値よりも優れている場合、推定された前記実行性能に対応する前記候補計算機能テンプレートおよび前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値を、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値として決定するように構成された第三ターゲット計算機能テンプレート決定モジュールと
を含む、請求項１５に記載の装置。
【請求項１７】
前記実行性能の閾値は、ユーザによって入力されるか、またはチップ設計装置によって事前に設定される、
請求項１６に記載の装置。
【請求項１８】
性能推定モジュールは、
前記入力パラメータ値、および少なくとも１つの前記設定可能なパラメータの少なくとも１つの前記候補値を、前記少なくとも１つの候補計算機能テンプレートに応用するように構成されたパラメータ応用モジュールと、
実行時コンパイルにより、前記少なくとも１つの候補計算機能テンプレートのコードを生成し、前記少なくとも１つの候補計算機能テンプレートの前記実行性能を推定するように構成されたコンパイルモジュールと
を含む、請求項１５に記載の装置。
【請求項１９】
前記候補計算機能テンプレートは、前記入力パラメータ値に関連付けられた制限条件、および／または前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータに関連付けられた制限条件をさらに有し、
前記候補計算機能テンプレート決定モジュールは、
前記入力パラメータ値および前記制限条件に基づいて、前記計算機能に対応する前記少なくとも１つの候補計算機能テンプレートを決定するように構成された第一候補計算機能テンプレート決定モジュール
を含む、請求項１３に記載の装置。
【請求項２０】
前記入力パラメータ値と、前記入力パラメータ値に対応する決定された前記ターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値との対応関係を記憶するように構成された記憶モジュールをさらに含む、請求項１３に記載の装置。
【請求項２１】
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも１つの候補計算機能テンプレートを決定する前に、記憶された前記対応関係には前記入力パラメータ値に対応する対応関係が存在するか否かを判定するように構成された対応関係判定モジュールと、
前記入力パラメータ値に対応する対応関係が存在すると判定される場合、前記対応関係に基づいて、前記入力パラメータ値に対応するターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値を決定するように構成された第四ターゲット計算機能テンプレート決定モジュールと
をさらに含む、請求項２０に記載の装置。
【請求項２２】
ターゲット計算機能テンプレート決定モジュールは、
所定の期間内に、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された第五ターゲット計算機能テンプレート決定モジュール
を含む、請求項１３に記載の装置。
【請求項２３】
前記所定の期間は、
ユーザによって入力された前記チップの設計時間に関連付けられた期間、前記入力パラメータ値、およびチップ設計装置によって事前に設定された前記チップの設計時間に関連付けられた期間のうちの少なくとも１つに基づいて決定される、
請求項２２に記載の装置。
【請求項２４】
前記計算機能のそれぞれが複数の前記候補計算機能テンプレートに対応し、前記複数の候補計算機能テンプレートが異なるアプリケーションシナリオに対応し、前記入力パラメータ値が前記アプリケーションシナリオに関連付けられる、
請求項１３に記載の装置。
【請求項２５】
１つまたは複数のプロセッサと、
１つまたは複数のプログラムを記憶するためのものであって、前記１つまたは複数のプログラムが前記１つまたは複数のプロセッサによって実行されるとき、電子デバイスが請求項１〜１２のいずれか一項に記載の方法を実施できるようにするメモリと
を含む、電子デバイス。
【請求項２６】
請求項１〜１２のいずれか一項に記載の方法を実施するためにプロセッサによって実行されるコンピュータプログラムを記憶したコンピュータ可読記憶媒体。
【請求項２７】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項１〜１２のいずれか１項に記載の方法を実現させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施例は、主にチップの分野に関し、より具体的には、チップに基づく計算機能を生成する方法、装置、デバイス、およびコンピュータ可読記憶媒体に関する。
【背景技術】
【０００２】
近年、深層学習技術に代表される人工知能（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ、ＡＩ）は、様々な分野（音声処理、画像処理、自然言語処理、ビデオ処理、自動制御など）で広く使用されており、人々のライフスタイルに大きな影響を与える。人工知能技術のさらなる発展に伴い、人々はより高いレベルの人工知能を期待している。人工知能のレベルは、主に深層学習の開発に依存するが、深層学習技術には、非常に高い計算能力が求められる。従来のプロセッサは、性能、コスト、消費電力などの様々な制限により、深層学習の要件を満たすことが困難になる。従って、深層学習技術の要件を満たすために、グラフィックスプロセッサ（ＧＰＵ）や特定用途向け集積回路（ＡＳＩＣ）など、ソフトウェアとハードウェアとが緊密に統合された高性能ＡＩチップをどのように設計するかは、現在解決すべき重要な問題となっている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本開示の例示的な実施例によれば、チップに基づく計算機能を生成する手段が提供される。
【課題を解決するための手段】
【０００４】
本開示の第１の態様では、チップに基づく計算機能を生成する方法が提供される。この方法は、チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するステップと、入力パラメータ値に基づいて、計算機能に対応する少なくとも１つの候補計算機能テンプレートを決定するステップであって、候補計算機能テンプレートが候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、設定可能なパラメータが少なくとも１つの候補値を有するステップと、入力パラメータ値および候補計算機能テンプレートの設定可能なパラメータの候補値に基づいて、ターゲット計算機能テンプレートおよびターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するステップとを含む。
【０００５】
本開示の第１の態様では、チップに基づく計算機能を生成する装置が提供される。この装置は、チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するように構成された入力パラメータ値取得モジュールと、入力パラメータ値に基づいて、計算機能に対応する少なくとも１つの候補計算機能テンプレートを決定するように構成されたものであって、候補計算機能テンプレートが候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、設定可能なパラメータが少なくとも１つの候補値を有する、候補計算機能テンプレート決定モジュールと、入力パラメータ値および候補計算機能テンプレートの設定可能なパラメータの候補値に基づいて、ターゲット計算機能テンプレートおよびターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するように構成されたターゲット計算機能テンプレート決定モジュールとを含む。
【０００６】
本開示の第３の態様では、電子デバイスが提供される。この電子デバイスは、１つまたは複数のプロセッサと、１つまたは複数のプログラムを記憶するためのものであって、１つまたは複数のプログラムが１つまたは複数のプロセッサによって実行されるとき、１つまたは複数のプロセッサが本開示の第１の態様に係る方法を実施できるようにするメモリとを含む。
【０００７】
本開示の第４の態様では、本開示の第１の態様に係る方法を実施するためにプロセッサによって実行されるコンピュータプログラムを記憶したコンピュータ可読記憶媒体が提供される。
【０００８】
発明の概要に記載の内容は、本開示の実施例の主要または重要な特徴を限定するものではなく、本開示の範囲を限定するものではないことを理解されたい。本開示の他の特徴は、以下の説明からより明らかになるであろう。
【０００９】
本開示の各実施例の上記および他の特徴、利点、および態様は、図面および以下の詳細な説明からより明らかになるであろう。図面において、同一または類似の参照符号は、同一または類似の要素を示す。
【図面の簡単な説明】
【００１０】
【図１】本開示の複数の実施例に係る、チップに基づく計算機能を生成する手段の例示的な環境の概略図である。
【図２】本開示のいくつかの例示的な実施例に係る、チップに基づく計算機能を生成する方法のフローチャートである。
【図３】本開示の実施例に係る、チップに基づく計算機能を生成する装置の概略ブロック図である。
【図４】本開示の複数の実施例を実施することができる計算装置のブロック図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本開示の実施例をより詳細に説明する。本開示の特定の実施例が図面に示されているが、なお、本開示は、様々な形態で実施されてもよく、本明細書に記載の実施例に限定されると解釈されるべきではなく、むしろ、これらの実施例は、本開示をより徹底的かつ完全に解釈するために提供される。本開示の図面および実施例は、単なる例示であり、本開示の保護範囲を限定するものではないことを理解されたい。
【００１２】
本開示の実施例の説明において、「含む」という用語および類似の用語は、無制限に含むこと、即ち「含むが、これらに限定されない」と理解されるべきである。「〜に基づく」という用語は、「〜に少なくとも部分的に基づく」と理解されるべきである。「一実施例」または「この実施例」という用語は、「少なくとも１つの実施例」と理解されるべきである。「第一」、「第二」などの用語は、異なるオブジェクトまたは同じオブジェクトを意味することができる。他の明示的および暗黙的な定義も以下に含まれ得る。
【００１３】
本明細書で使用される「チップ」という用語は、既存または将来開発されるソフトウェアまたはハードウェア技術によって実施される特定の機能を実施できるキャリアを意味する。いくつかのアプリケーションシナリオでは、それは、「結晶インゴット」、「ウェハ」、「ベアチップ」、「集積回路」、「モノリシックデバイス」、「半導体デバイス」、「マイクロ電子デバイス」などを含むが、これらに限定されない。
【００１４】
本明細書で使用される「演算子」という用語は、既存または将来開発されるソフトウェアまたはハードウェア技術によって実施できる、基本的な演算アルゴリズムまたは機能を実施するチップ内のユニットを意味する。演算子は、畳み込み、様々な数値演算、様々なベクトル演算、様々な行列演算、様々な文字演算などの様々な基本演算をチップ内で実施することができる。
【００１５】
本明細書で使用される「計算機能」という用語は、任意の計算／演算／アルゴリズムを実施するチップ内の論理ユニットを意味しており、単一の演算子によって実行され得るか、または複数の演算子によって実行され得るが、複数の演算子は、事前に設定された論理関係または動的に指定された論理関係に基づいて組み合わせることができる。
【００１６】
以上説明したように、深層学習技術向けの高性能チップを提供することは、現在解決すべき重要な問題となっている。従来の深層学習ユーザは、主にｔｅｎｓｏｒｆｌｏｗ、ｃａｆｆｅ、ｍｘｎｅｔ、ｐｙｔｏｒｃｈ、ｐａｄｄｌｅｐａｄｄｌｅなどの深層学習フレームワークを使用している。ＡＩチップを深層学習分野に応用するために、フレームワークに集積しなければならず、コアタスクの１つとしては、フレームワーク内の様々な演算子（ｏｐｅｒａｔｏｒ）を実施するために、演算子によって、畳み込み、様々な数値演算、様々なベクトル演算、様々な行列演算、様々な文字演算などの様々な基本演算をチップ内で実施するとともに、単一の演算子または演算子の組み合わせによって、チップの１つまたは複数の計算機能を実行する必要がある。チップの様々な計算機能の実行性能は、ＡＩチップの性能を直接決定する。
【００１７】
主要なＡＩチップメーカーは、それぞれのフレームワークに基づいて、ｎｖｉｄｉａ  ＧＰＵ、ｇｏｏｇｌｅ  ＴＰＵ、Ｂａｉｄｕ  Ｋｕｎｌｕｎチップなどの対応するＡＩチップを開発しているが、上記ＡＩチップには、それぞれの命令セットがあり、プログラミング言語（Ｃ／Ｃ＋＋、Ｃ＃、Ｐｙｔｈｏｎなど）でプログラミングできるＣＵＤＡ、ＯＰＥＮＣＬなどのそれぞれのプログラミングフレームワークがある。
【００１８】
ＡＩチップの様々な演算子または本開示に記載の計算機能はプログラムによって実施され得るが、チップの基礎となるフレームワークには、どのようにブロック化するか、どのように様々な記憶空間（レジスタ、バッファ、メモリ、共有メモリなど）を効果的に使用するか、どのようにプログラムを設定するか（スレッドの設定、プロセスの設定など）など、多くの設定可能なパラメータがある。多くのパラメータを合理的に設定するには、開発者がチップの基礎となるフレームワークに精通している必要があるが、高性能ＡＩチップの設定に必要な開発サイクルが非常に長く、特に、ＡＩチップソフトウェアの開発効率が非常に低い。また、アプリケーションシナリオ／演算規模が豊富であるため、特定のアプリケーションシナリオ／演算規模向けに設計されたチップは、演算規模が異なる条件下で最適な性能を実現することが困難である。
【００１９】
本発明者らにとっては、チップに基づく計算機能を生成することができる手段は、いくつかの一般的な演算子ライブラリを手動で実施して、演算子ライブラリにおいてチップの基本的なパラメータを設定するものであることに気付いた。以上説明したように、この手段は、チップに基づく計算機能を生成する難しさが高く、効率が低く、複数のアプリケーションシナリオ／演算規模に柔軟に適応することができない。別の可能なチップ設定手段は、高レベルの言語を用いて原言語を生成するとともに、手動符号化により、最適化されたいくつかの演算子テンプレートを実施するものであり、チップに基づく計算機能を半自動的に生成する手段は、チップ設計プロセス、特にチップソフトウェア開発の効率を高めるが、この手段がチップフレームワークの基礎となるハードウェアをシールドし、チップの性能が事前に符号化された最適化された演算子テンプレートに依存するため、高性能の演算子を実施することは困難である。また、本発明者らにとっては、チップに基づく計算機能も完全に自動化された手段によって生成でき、即ち、主に多面体コンパイル技術を用いてコードを生成するコンパイラに完全に依存することにも気付いた。この手段では、コンパイラがコードを自動的に生成できるため、ユーザはアルゴリズムを説明するだけでよいが、この手段は、チップソフトウェア開発の効率が高いが、チップフレームワークの基礎となるハードウェアを完全にシールドするので、高性能コードを実現する可能性を低減する。
【００２０】
本開示の実施例によれば、チップに基づく計算機能を生成する手段が提供される。この手段では、各チップによってサポートされる計算機能は少なくとも１つの候補計算機能テンプレートに対応し、この候補計算機能テンプレートは候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、設定可能なパラメータは少なくとも１つの候補値を有する。計算機能の入力パラメータ値を取得した後、入力パラメータ値に基づいて、少なくとも１つの候補計算機能テンプレートを決定し、入力パラメータ値および候補計算機能テンプレートの設定可能なパラメータの候補値に基づいて、ターゲット計算機能テンプレートおよびターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく計算機能を生成する。このようにして、計算機能テンプレートは、チップ内の設定可能なパラメータを上位の呼び出し側に提供し、上位の呼び出し側は、入力パラメータ値に基づいて、設定可能なパラメータの値を動的に設定することができるので、チップに基づく計算機能を生成するとき、異なるアプリケーションシナリオ／演算規模に動的に適応できる。
【００２１】
さらに、高性能の演算子または本開示に記載の計算機能をより効果的に実施するために、本開示の実施例を参照し、機械学習により、入力パラメータ値および候補計算機能テンプレートの設定可能なパラメータの候補値に基づいて、ターゲット計算機能テンプレートおよびターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定する。このようにして、設定可能なパラメータの動的設定を実現するとともに、計算機能テンプレートを手動で実施してチップの基本的なパラメータを設定する難しさを大幅に軽減する。また、機械学習によれば、検索範囲が広い場合でも、チップ設計を効果的に完了することができる。
【００２２】
また、候補計算機能テンプレートの実行性能をより効果的に推定するために、実行時（ｊｕｓｔ−ｉｎ−ｔｉｍｅ、ＪＩＴ）コンパイルを用いて測定を実行して、実行性能を取得する。このようにして、コードがコンパイル時ではなく実行時に生成されるので、チップ設計プロセス、特にチップソフトウェア開発の効率を高めるとともに、高性能コードの設計を確保する。
【００２３】
以下、図面を参照して本開示の実施例を具体的に説明する。なお、それは、単なる例示であり、本開示を何ら限定するものではなく、本開示のいくつかの例示的な実施例は、計算機能が単一の基本的な機能（即ち、１つの演算子の機能）を含むことを例にとるが、本開示の計算機能は、複数の演算子の機能の組み合わせを実現するために複数の演算子を含み得ることを理解されたい。
【００２４】
図１は、本開示の複数の実施例が実施され得る例示的な環境１００の概略図を示している。この例示的な環境１００では、計算装置１３０は、計算機能に関連付けられた１つまたは複数の入力パラメータ値１１０−１、１１０−２から１１０−Ｎを受信することができ、説明の便宜上、複数の入力パラメータ値１１０−１、１１０−２から１１０−Ｎは、入力パラメータ値１１０と総称される。いくつかの例示的な実施例では、入力パラメータ値１１０は、計算機能に関連付けられた任意のタイプのものであってよく、例えば、ベクトル乗算のための計算機能の場合、入力パラメータ値１１０は、「１００」および「１００」など、ベクトル乗算を実行する２つのベクトルを説明する長さ値であってもよい。いくつかの例示的な実施例では、入力パラメータ値１１０は、有線通信または無線通信によって計算装置１３０に送信され得る。いくつかの例示的な実施例では、計算装置１３０は、計算装置１３０に結合された入力装置（マウス、キーボード、タッチペン、タッチスクリーンなどを含むが、これらに限定されない）を介して、ユーザによって入力される入力パラメータ値１１０を受信することもできる。
【００２５】
図１に示すように、計算装置１３０は、計算機能に対応する１つまたは複数の候補計算機能テンプレート１２０−１、１２０−２から１２０−Ｍを取得することもできる。説明の便宜上、複数の候補計算機能テンプレート１２０−１、１２０−２から１２０−Ｍは候補計算機能テンプレート１２０と総称される。
【００２６】
いくつかの例示的な実施例では、計算装置１３０は、計算装置１３０の内部にある候補計算機能テンプレートデータベース／メモリ、または計算装置１３０の外部にある候補計算機能テンプレートデータベース／メモリから、計算機能の候補計算機能テンプレート１２０を取得することができる。例えば、ベクトル乗算のための計算機能の場合、図１に示される１つの候補計算機能テンプレート１２０−１は、ベクトル乗算を実施するための計算機能テンプレートであってもよく、その設定可能なパラメータは、ベクトル乗算を実行するときのセグメントサイズであってもよく、このセグメントサイズの候補値は、［３，４，５］であってもよく、別の候補計算機能テンプレート１２０−２は、ベクトル乗算を実施するための別の計算機能テンプレートであってもよく、その設定可能なパラメータは、ベクトル乗算を実行するときに呼び出されるプロセス数であってもよく、この呼び出し可能なプロセス数の候補値は、［１，２，４］であってもよい。
【００２７】
計算装置１３０は、受信された入力パラメータ値１１０および取得された候補計算機能テンプレート１２０に基づいて、この入力パラメータ値１１０に対応するターゲット計算機能テンプレート１４０、およびこのターゲット計算機能テンプレート１４０に対応する設定可能なパラメータのターゲット値を決定することができる。例えば、図１の例では、計算装置１３０は、本開示に係る、チップに基づく計算機能を生成する手段を用いることができるので、ベクトル乗算のための計算機能の場合、入力パラメータ値１１０が「１００，１００」であるという特定のアプリケーションシナリオ／演算規模に基づいて、ターゲット計算機能テンプレート１４０、およびこのターゲット計算機能テンプレート１４０に対応する設定可能なパラメータのターゲット値を決定することができ、例えば、候補計算機能テンプレート１２０−１をターゲット計算機能テンプレート１４０として決定するとともに、ベクトル乗算を実行するときのセグメントサイズを「４」として決定することができる。これらの示された入力パラメータ値、候補計算機能テンプレート、設定可能なパラメータ、および設定可能なパラメータの候補値は例としてのみ提供されることが理解され、入力パラメータ値、候補計算機能テンプレート、設定可能なパラメータ、および設定可能なパラメータの値は、実際の状況に応じて変化し得る。本開示の範囲はこの点で限定されない。
【００２８】
以下、図２を参照して、本開示に係る、チップに基づく計算機能を生成するプロセスをより詳細に説明する。図２は、本開示のいくつかの例示的な実施例に係る、チップに基づく計算機能を生成するプロセス２００のフローチャートを示している。プロセス２００は、図１の計算装置１３０によって実施され得る。説明の便宜上、図１を参照してプロセス２００を説明する。
【００２９】
ブロック２１０において、計算装置１３０は、チップによってサポートされる計算機能に関連付けられた入力パラメータ値１１０を取得する。具体的には、チップは多くの計算機能をサポートすることができるが、非限定的な例としての本開示の実施例では、計算機能は基本演算（畳み込み、様々な数値演算、様々な文字演算、様々な行列演算、様々なベクトル演算、暗号化、復号など）を実施する基本的な計算機能である。入力パラメータ値１１０の数は、計算機能に応じて、１つであってもよいし、複数であってもよい。また、入力パラメータ値１１０は、ユーザ入力による方式、またはスクリプト／プロファイル／コマンドファイルの読み取りによる方式を含むが、これらに限定されない、任意の方式によって取得され得る。
【００３０】
本開示のいくつかの例示的な実施例では、入力パラメータ値１１０は、アプリケーションシナリオ／演算規模に関連付けることができる。具体的には、入力パラメータ値１１０は、実施される計算機能の演算規模を特定することができ、例えば、行列演算が実施される場合、入力パラメータ値１１０は、行列のサイズを特定することができ、暗号化演算が実施される場合、入力パラメータ値１１０は、暗号化アルゴリズムの暗号化の長さを特定することができ、ベクトル演算が実施される場合、入力パラメータ値１１０は、ベクトルの長さを特定することができる。なお、入力パラメータ値１１０についての以上の説明は例としてのみ提供されており、いくつかの他の実施形態では、入力パラメータ値１１０の値およびタイプが変化し得るので、入力パラメータ値１１０のタイプおよび／または値は、本開示の上記例の範囲内に限定されるべきではなく、入力パラメータ値１１０は、計算機能のアプリケーションシナリオ／演算規模に関連付けられた任意の適切なタイプおよび／または値のものであってもよい。
【００３１】
本開示のいくつかの例示的な実施例では、計算機能のアプリケーションシナリオ／演算規模に関連付けられた入力パラメータ値１１０は、計算装置１３０によって取得されており、チップに基づく計算機能を生成する方法が様々なアプリケーションシナリオ／演算規模に柔軟に適用できるようにするとともに、生成された計算機能がこの特定のアプリケーションシナリオ／演算規模により柔軟に適用できるようにする。
【００３２】
ブロック２２０において、計算装置１３０は、ブロック２２０で取得された入力パラメータ値１１０に基づいて、計算機能に対応する候補計算機能テンプレート１２０を決定する。計算装置１３０は、決定された候補計算機能テンプレート１２０を、ターゲット計算機能テンプレート１４０を検索するための探索空間として使用することができる。候補計算機能テンプレート１２０の数は、１つであってもよいし、複数であってもよい。
【００３３】
本開示のいくつかの例示的な実施例では、各計算機能は、少なくとも１つの候補計算機能テンプレート１２０に対応することができ、各候補計算機能テンプレート１２０は、ブロックサイズ、セグメントサイズ、スレッド数、プロセス数、レジスタ情報、メモリ情報、プロセッサ情報など、候補計算機能テンプレート１２０の実行性能に関連付けられた少なくとも１つの設定可能なパラメータを有する。各設定可能なパラメータは、少なくとも１つの候補値を有することができ、アプリケーションシナリオ／演算規模が異なる条件下で、設定可能なパラメータの候補値が異なると、設計されたチップの実行性能が変化し得る。これらの設定可能なパラメータは、通常、チップに基づく計算機能を生成するプロセスにおける計算機能の内部パラメータとして使用される。
【００３４】
本開示のいくつかの例示的な実施例では、少なくとも１つの候補計算機能テンプレート１２０は、手動符号化により、異なる計算機能に対して設計して実装することができ、手動符号化による候補計算機能テンプレート１２０の実装は、候補計算機能テンプレート１２０の実行論理をより正確にすることができるので、候補計算機能テンプレート１２０をチップの基礎となるフレームワークとより効果的に結合することをある程度確保する。しかし、候補計算機能テンプレート１２０の実装は、本開示に示される手動符号化による方式に限定されないことが理解されており、いくつかの他の例示的な実施例では、候補計算機能テンプレート１２０は、自動または半自動の方式により実装することができ、このような自動または半自動の方式により候補計算機能テンプレート１２０を実装する手段では、従来の最適化された計算機能テンプレートまたはターゲット計算機能テンプレート１４０／設定可能なパラメータの履歴データ／記録などを参照または結合ことができる。
【００３５】
本開示のいくつかの例示的な実施例では、候補計算機能テンプレート１２０は、機械指向プログラミング言語などの低レベルのプログラミング言語で実装される。追加または代替として、本開示のいくつかの例示的な実施例では、計算装置１３０によって実行されるプロセス２００は、機械指向プログラミング言語などの低レベルのプログラミング言語で実施される。
【００３６】
低レベルのプログラミング言語は、高レベルのプログラミング言語と比べて、基礎となるハードウェアとより効果的に対話することができるので、ハードウェアの性能をより効果的に発揮するために役立ち、高性能チップの計算機能の実施を確保する。
【００３７】
本開示のいくつかの例示的な実施例では、複数の候補計算機能テンプレート１２０は、異なるアプリケーションシナリオ／演算規模に関連付けることができる。例えば、行列乗算の計算機能の場合、候補計算機能テンプレート１２０−１は、アプリケーションシナリオ１（例えば、乗算の行列サイズが５０＊５０未満である）において良好な性能を発揮することができ、候補計算機能テンプレート１２０−２は、アプリケーションシナリオ２（例えば、乗算の行列サイズが５０＊５０より大きい）において良好な性能を発揮することができる。異なる計算機能に対して、異なるアプリケーションシナリオ／演算規模に対応する候補計算機能テンプレート１２０を設計して実装し、異なるアプリケーションシナリオ／演算規模に対応するカスタマイズを実現することができる。
【００３８】
本開示のいくつかの例示的な実施例では、複数の候補計算機能テンプレート１２０が有する設定可能なパラメータの数および値は、任意であってもよく、それぞれの内部処理ロジックを有する。各候補計算機能テンプレート１２０は、それぞれの内部設計に基づいて、チップ内の複雑な設定可能なパラメータを上位レベルの呼び出し側（例えば、計算装置１３０）に提供することができるので、上位レベルの呼び出し側は、少なくとも部分的に、設定可能なパラメータに基づいて、候補計算機能テンプレート１２０の検索、設定、測定などを行うことができる。このようにして、チップに基づく計算機能を生成するプロセスの柔軟性を向上させるとともに、チップの内部パラメータの手動設定を回避し、チップ設計プロセス、特にチップソフトウェア開発の難しさを軽減し、チップの設定可能なパラメータを設定するプロセスの合理性と精度を向上させる。
【００３９】
本開示のいくつかの例示的な実施例では、候補計算機能テンプレート１２０は、この候補計算機能テンプレート１２０の適応範囲を限定することができる制限条件をさらに有する。本開示のいくつかの例示的な実施例では、制限条件は、入力パラメータ値１１０に関連付けることができ、例えば、行列演算が実施される場合、制限条件は、行列サイズが５０＊５０未満であることであってもよい。
【００４０】
追加または代替として、本開示のいくつかの例示的な実施例では、制限条件は、候補計算機能テンプレート１２０の設定可能なパラメータの候補値を限定することもでき、例えば、行列演算が実行され、設定可能なパラメータがブロックサイズである場合、制限条件は、ブロックサイズの値が［２，４，６］であることであってもよい。
【００４１】
追加または代替として、本開示のいくつかの例示的な実施例では、制限条件は、入力パラメータ値１１０と設定可能なパラメータの両方に関連付けることができ、例えば、制限条件は、入力パラメータ値１１０および設定可能なパラメータの値を入力とする関数の演算結果が所定の条件を満たすことなどであってもよい。
【００４２】
本開示に記載の制限条件の例は単なる例示であり、制限条件を限定するものとして解釈されるべきではなく、制限条件は、異なる候補計算機能テンプレート１２０の特定の実装に応じて、任意の形式および任意の値であってもよい。
【００４３】
追加または代替として、計算装置１３０は、入力パラメータ値１１０および制限条件に基づいて、計算機能に対応する少なくとも１つの候補計算機能テンプレート１２０を決定する。入力パラメータ値１１０および／または制限条件が両方とも特定のアプリケーションシナリオ／演算規模をある程度反映できるので、入力パラメータ値１１０および制限条件に基づいて、計算機能に対応する少なくとも１つの候補計算機能テンプレート１２０を決定することは、検索対象となる候補計算機能テンプレート１２０の範囲を効果的に縮小し、チップ設計プロセス、特にチップソフトウェア開発の効率を高めることができる。
【００４４】
さらに図２を参照すると、ブロック２３０において、計算装置１３０は、入力パラメータ値１１０および候補計算機能テンプレート１２０（ブロック２２０で決定された候補計算機能テンプレート１２０の範囲内にある）の設定可能なパラメータの異なる候補値に基づいて、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現する。
【００４５】
本開示のいくつかの例示的な実施例では、計算装置１３０は、機械学習により、入力パラメータ値１１０および候補計算機能テンプレート１２０の設定可能なパラメータの複数の異なる候補値に基づいて、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値を決定する。
【００４６】
本開示のいくつかの例示的な実施例では、計算装置１３０は、この候補計算機能テンプレート１２０の設定可能なパラメータの候補値が異なる条件下で、候補計算機能テンプレート１２０の実行性能を推定し、推定された実行性能に基づいて、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値を決定する。
【００４７】
例示的で非限定的な例では、計算装置１３０は、入力パラメータ値１１０および／またはブロック２２０で決定された少なくとも１つの候補計算機能テンプレート１２０の設定可能なパラメータの値を含み得る初期測定セットを生成する。例えば、２つのベクトルの乗算を例にとると、入力パラメータ値１１０は、ベクトルの長さを特定することであって、例えば（５０，５０）であってもよく、長さ５０の２つのベクトルを乗算する特定のアプリケーションシナリオを特定する。候補計算機能テンプレート１２０−１の設定可能なパラメータはベクトルセグメント長であり、セグメント長の候補値は［２，３，４］であり、制限条件は演算ベクトル長が１００未満であることであるが、候補計算機能テンプレート１２０−２の設定可能なパラメータはベクトルセグメント長およびプロセス数であり、セグメント長の候補値は［３，４，５］であり、プロセス数の候補値は［３，４］であり、制限条件は演算ベクトル長が８０未満であることである。初期値は［５０，５０，３，３］であってもよく、長さ５０の２つのベクトルを乗算する特定のアプリケーションシナリオを特定することであり、演算時に使用されるセグメント長のパラメータは３であり、使用されるプロセス数は３である。
【００４８】
なお、上記初期測定セットの値の選択は単なる例示であり、初期測定セットの値における設定可能なパラメータの数は、必要に応じて調整することができるが、いくつかの例示的な実施例では、それは、ブロック２２０で決定されたすべての候補計算機能テンプレート１２０に関連付けられたすべての設定可能なパラメータを含み得るが、いくつかの他の例示的な実施例では、それは、ブロック２２０で決定されたすべての候補計算機能テンプレート１２０に関連付けられたすべての設定可能なパラメータの一部のみを含み得る。同様に、初期測定セットの値は、候補計算機能テンプレート１２０に基づいて合理的に設定され得る。本開示はこれを限定するものではない。例えば、候補計算機能テンプレート１２０の別の例では、２つのベクトル長がそれぞれ（１０００，１０００）である、つまり、各ベクトルが１０００個の値を含むアプリケーションシナリオに対して、候補計算機能テンプレート１２０の設定可能なパラメータは、開始される計算コアの数（候補値がｍであり、ｍが正の整数である）、および各計算コアによって計算される値の数（候補値がｎであり、ｎが正の整数である）であり、対応する制限条件は、ｍ＊ｎ≦１０００であってもよい。
【００４９】
計算装置１３０は、初期測定セットに基づいて、この初期測定セットの条件下で、少なくとも１つの候補計算機能テンプレート１２０の実行性能を推定する。具体的には、上記のベクトル乗算の例を引き続き参照すると、計算装置１３０は、初期測定セット［５０，５０，３，３］の条件下で、テンプレート１２０−１および１２０−２のそれぞれの実行性能を推定する。
【００５０】
計算装置１３０は、機械学習により、次の測定パラメータセットを生成する。本開示のいくつかの例示的な実施例では、次の測定パラメータセットの選択は、前の測定パラメータセットの測定結果に基づいて実行され得る。また、次の測定パラメータセットの設定可能なパラメータの数と値の選択は、初期測定パラメータセットの場合と一致しており、簡潔にするため、ここでその説明を省略する。本操作は、既存または将来開発される任意の機械学習技術を含むことを理解されたい。機械学習により次の測定パラメータセットを生成して、次の測定パラメータセットの選択をより合理的にし、設定可能なパラメータのすべての候補値に対応する検索空間を走査する必要性を排除し、チップに基づく計算機能を生成する方法の効率を高める。
【００５１】
検索が終了する前に、次の測定パラメータセットを生成し、生成された測定パラメータセットに対して候補計算機能テンプレート１２０の実行性能を測定するステップが繰り返し実行される。測定された実行性能に基づいて、ターゲット計算機能テンプレート１４０およびこのターゲット計算機能テンプレート１４０に対応する設定可能なパラメータの値が決定される。例えば、測定結果は、最適な実行性能を備えた結果が、候補計算機能テンプレート１２０−１のセグメント長が３である場合に対応し、計算装置１３０が、候補計算機能テンプレート１２０−１をターゲットテンプレートとして決定し、候補計算機能テンプレート１２０−１の設定可能なパラメータ（即ち、ベクトルセグメント長）の候補値３をターゲット値として決定することを示している。
【００５２】
本開示のいくつかの例示的な実施例では、計算装置１３０は、ターゲット計算機能テンプレート１４０、およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値を決定するとき、候補計算機能テンプレートの制限条件も考慮する。具体的には、初期測定パラメータセットおよび次の測定パラメータセットを決定するとき、および、初期測定パラメータセットおよび次の測定パラメータセットを候補計算機能テンプレート１２０に応用するとき、候補計算機能テンプレート１２０の制限条件を考慮する。上記の方式により、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値を、より効果的かつ正確に決定することができる。
【００５３】
以上の方式により、チップ内の設定可能なパラメータが、上位レベルの呼び出し側に提供されており、チップソフトウェア開発プロセスにおいて、実行性能の測定結果に基づいて動的に設定できるので、チップ内の設定可能なパラメータを設定する難しさを軽減し、高性能チップの設計を確保する。
【００５４】
また、本開示のいくつかの例示的な実施例では、計算装置１３０は、ＪＩＴコンパイルを用いて測定を実行して、候補計算機能テンプレート１２０の実行性能を取得することができる。具体的には、計算装置１３０は、生成された測定パラメータを候補計算機能テンプレート１２０に応用し、ＪＩＴ方式を用いて、最終コードを生成し、候補計算機能テンプレート１２０の性能を測定する。このようにして、コードがコンパイル時ではなく実行時に生成されるので、チップ設計プロセス、特にチップソフトウェア開発の効率を高めるとともに、高性能チップに基づく計算機能の生成を確保する。
【００５５】
本開示のいくつかの例示的な実施例では、計算装置１３０は、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するが、具体的には、計算装置１３０は、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値に対応するコードを出力する。
【００５６】
また、様々な方式によりチップソフトウェア開発プロセスを制御して、チップソフトウェア開発プロセスの効率をさらに高めることができる。本開示のいくつかの例示的な実施例では、チップに基づく計算機能を生成するプロセスは、実行性能の閾値を設定することにより制御され得る。具体的には、ターゲット計算機能テンプレート１４０およびそのターゲット値を決定するプロセスにおいて、推定された実行性能が実行性能の閾値よりも優れている場合、この実行性能に対応する候補計算機能テンプレート１２０および候補計算機能テンプレート１２０の設定可能なパラメータの候補値を、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値として決定する。
【００５７】
実行性能の閾値は、様々な方式により設定され得るが、本開示のいくつかの例示的な実施例では、実行性能の閾値は、ユーザによって入力され得る。いくつかの他の例示的な実施例では、実行性能の閾値は、事前に設定されたデフォルト値であってもよく、計算装置１３０に事前に記憶され得る。
【００５８】
追加または代替として、本開示のいくつかの例示的な実施例では、チップに基づく計算機能を生成するプロセスは、所定の期間内に限定され得る。具体的には、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値は、所定の期間内に決定される。
【００５９】
所定の期間は、様々な方式により設定され得る。例えば、それは、ユーザ入力によって設定されてもよく、具体的には、ユーザは、チップの設計時間に関連付けられた期間を計算装置１３０に送信する。
【００６０】
追加または代替として、所定の期間はまた、入力パラメータ値１１０に基づいて決定され得る。例えば、計算装置１３０は、異なるアプリケーションシナリオ／演算規模に対して異なる所定の期間を設定することができる。追加または代替として、所定の期間はまた、計算装置１３０内にデフォルトで設定され得る。
【００６１】
以上の方式により、チップに基づく計算機能を生成するプロセスを柔軟に制御して、性能と効率とのバランスをより効果的に実現することができる。
【００６２】
また、本開示のいくつかの例示的な実施例では、計算装置１３０は、ターゲット計算機能テンプレート１４０およびターゲット値を決定した後、入力パラメータ値１１０と、入力パラメータ値１１０に対応する決定されたターゲット計算機能テンプレート１４０、およびこのターゲット計算機能テンプレート１４０に対応する設定可能なパラメータのターゲット値との対応関係を記憶する。
【００６３】
また、本開示のいくつかの例示的な実施例では、計算装置１３０は、入力パラメータ値１１０（ブロック２１０に示す）を受信した後、記憶された対応関係において検索を実行して、入力パラメータ値１１０に対応する対応関係が存在するか否かを判定し、入力パラメータ値１１０に対応する対応関係が存在すると判定される場合、この対応関係に基づいて、入力パラメータ値１１０に対応するターゲット計算機能テンプレート１４０、およびターゲット計算機能テンプレート１４０に対応する設定可能なパラメータのターゲット値を直接決定して、チップに基づく前記計算機能を実現する。
【００６４】
以上の方式により、生成された、チップに基づく計算機能は、様々なアプリケーションシナリオ／演算規模に動的に適用でき、設定された設定可能なパラメータは、推定された実行性能に基づいて決定され、信頼性がより高いが、機械学習により、測定パラメータセットを選択し、ターゲット演算子テンプレートおよびターゲット値を決定して、パラメータを手動で設定する難しさを軽減し、チップに基づく計算機能を効果的に生成することができる。
【００６５】
図３は、本開示の実施例に係る、チップに基づく計算機能を生成する装置３００のブロック図を示している。装置３００は、図１の計算装置１３０に含まれるか、または計算装置１３０として実装され得る。図３に示すように、装置３００は、チップによってサポートされる計算機能に関連付けられた入力パラメータ値１１０を取得するように構成された入力パラメータ値取得モジュール３１０を含む。装置３００は、入力パラメータ値１１０に基づいて、計算機能に対応する少なくとも１つの候補計算機能テンプレート１２０を決定するように構成されたものであって、候補計算機能テンプレート１２０が候補計算機能テンプレート１２０の実行性能に関連付けられた設定可能なパラメータを有し、設定可能なパラメータが少なくとも１つの候補値を有する、候補計算機能テンプレート決定モジュール３２０をさらに含む。さらに、装置３００は、入力パラメータ値１１０および候補計算機能テンプレート１２０の設定可能なパラメータの異なる候補値に基づいて、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するように構成されたターゲット計算機能テンプレート決定モジュール３３０をさらに含む。
【００６６】
本開示のいくつかの例示的な実施例では、ターゲット計算機能テンプレート決定モジュール３３０は、機械学習により、入力パラメータ値１１０および候補計算機能テンプレート１２０の設定可能なパラメータの複数の異なる候補値に基づいて、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値を決定するように構成された機械学習モジュールを含む。
【００６７】
本開示のいくつかの例示的な実施例では、ターゲット計算機能テンプレート決定モジュール３３０は、候補計算機能テンプレート１２０の設定可能なパラメータの候補値が異なる条件下で、候補計算機能テンプレート１２０の実行性能を推定するように構成された性能推定モジュールと、推定された実行性能に基づいて、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値を決定するように構成された第二ターゲット計算機能テンプレート決定モジュールとを含む。
【００６８】
本開示のいくつかの例示的な実施例では、第二ターゲット計算機能テンプレート決定モジュールは、推定された実行性能が実行性能の閾値よりも優れているか否かを判定するように構成された閾値判定モジュールと、推定された実行性能が実行性能の閾値よりも優れている場合、推定された実行性能に対応する候補計算機能テンプレート１２０および候補計算機能テンプレート１２０の設定可能なパラメータの候補値を、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値として決定するように構成された第三ターゲット計算機能テンプレート決定モジュールと、を含む。
【００６９】
本開示のいくつかの例示的な実施例では、実行性能の閾値は、ユーザによって入力されるか、または計算装置１３０によって事前に設定される。
【００７０】
本開示のいくつかの例示的な実施例では、性能推定モジュールは、入力パラメータ値１１０、および少なくとも１つの設定可能なパラメータの少なくとも１つの候補値を、少なくとも１つの候補計算機能テンプレート１２０に応用するように構成されたパラメータ応用モジュールと、実行時コンパイルにより、少なくとも１つの候補計算機能テンプレート１２０のコードを生成し、少なくとも１つの候補計算機能テンプレート１２０の実行性能を推定するように構成されたコンパイルモジュールと、を含む。
【００７１】
本開示のいくつかの例示的な実施例では、候補計算機能テンプレート１２０は、入力パラメータ値１１０に関連付けられた制限条件、および／または候補計算機能テンプレート１２０の実行性能に関連付けられた設定可能なパラメータに関連付けられた制限条件をさらに有するが、候補計算機能テンプレート決定モジュール３２０は、入力パラメータ値１１０および制限条件に基づいて、計算機能に対応する少なくとも１つの候補計算機能テンプレート１２０を決定するように構成された第一候補計算機能テンプレート決定モジュールを含む。
【００７２】
本開示のいくつかの例示的な実施例では、装置３００は、入力パラメータ値１１０と、入力パラメータ値１１０に対応する決定されたターゲット計算機能テンプレート１４０、およびターゲット計算機能テンプレート１４０に対応する設定可能なパラメータのターゲット値との対応関係を記憶するように構成された記憶モジュールをさらに含む。
【００７３】
本開示のいくつかの例示的な実施例では、装置１３０は、入力パラメータ値１１０に基づいて、計算機能に対応する少なくとも１つの候補計算機能テンプレート１２０を決定する前に、記憶された対応関係には入力パラメータ値１１０に対応する対応関係が存在するか否かを判定するように構成された対応関係判定モジュールと、入力パラメータ値１１０に対応する対応関係が存在すると判定される場合、対応関係に基づいて、入力パラメータ値１１０に対応するターゲット計算機能テンプレート１４０、およびターゲット計算機能テンプレート１４０に対応する設定可能なパラメータのターゲット値を決定するように構成された第四ターゲット計算機能テンプレート決定モジュールとをさらに含む。
【００７４】
本開示のいくつかの例示的な実施例では、ターゲット計算機能テンプレート決定モジュール３３０は、所定の期間内に、ターゲット計算機能テンプレート１４０およびターゲット計算機能テンプレート１４０の設定可能なパラメータのターゲット値を決定するように構成された第五ターゲット計算機能テンプレート決定モジュールを含む。
【００７５】
本開示のいくつかの例示的な実施例では、所定の期間は、ユーザによって入力されたチップの設計時間に関連付けられた期間、入力パラメータ値１１０、および計算装置１３０によって事前に設定されたチップの設計時間に関連付けられた期間のうちの少なくとも１つに基づいて決定される。
【００７６】
本開示のいくつかの例示的な実施例では、少なくとも１つの候補計算機能テンプレート１２０は、機械指向プログラミング言語で実装される。
【００７７】
本開示のいくつかの例示的な実施例では、計算機能のそれぞれは、複数の候補計算機能テンプレート１２０に対応し、複数の候補計算機能テンプレート１２０は、異なるアプリケーションシナリオに対応する。
【００７８】
本開示のいくつかの例示的な実施例では、入力パラメータ値１１０は、アプリケーションシナリオに関連付けられる。
【００７９】
図４は、本開示の実施例を実施することができる例示的な装置４００の概略ブロック図を示している。装置４００は、図１の計算装置１３０を実装するために使用され得る。図示されるように、装置４００は、リードオンリメモリ（ＲＯＭ）４０２に記憶されたコンピュータプログラム命令、または記憶ユニット４０８からランダムアクセスメモリ（ＲＡＭ）４０３にロードされたコンピュータプログラム命令に従って、各種の適切な動作および処理を実行することができる、計算ユニット４０１を含む。ＲＡＭ４０３には、装置４００の動作に必要な各種のプログラムやデータも記憶され得る。計算ユニット４０１、ＲＯＭ４０２、およびＲＡＭ４０３は、バス４０４を介して相互に接続されている。入力／出力（Ｉ／Ｏ）インターフェース４０５もバス４０４に接続されている。
【００８０】
装置４００内の複数の部品は、Ｉ／Ｏインターフェース４０４に接続されたものであって、キーボード、マウスなどの入力ユニット４０６と、各種のディスプレイ、スピーカーなどの出力ユニット４０７と、磁気ディスク、光ディスクなどの記憶ユニット４０８と、ネットワークカード、モデム、無線通信トランシーバなどの通信ユニット４０９と、を含む。通信ユニット４０９は、装置４００が、インターネットなどのコンピュータネットワーク、および／または様々な通信ネットワークを介して、他の装置との間で情報／データを交換することを可能にする。
【００８１】
計算ユニット４０１は、処理能力および計算能力を有する様々な汎用および／または専用の処理ユニットであってもよい。計算ユニット４０１のいくつかの例は、中央処理装置（ＣＰＵ）、グラフィック処理装置（ＧＰＵ）、様々な専用の人工知能（ＡＩ）計算チップ、機械学習モデルアルゴリズムを実行する様々な計算ユニット、デジタル信号プロセッサ（ＤＳＰ）、任意の適切なプロセッサ、コントローラ、マイクロコントローラなどを含むが、これらに限定されない。計算ユニット４０１は、プロセス２００など、上述した様々な方法および処理を実行する。例えば、いくつかの例示的な実施例では、プロセス２００は、記憶ユニット４０８などの機械可読媒体上で有形的に具現化されるコンピュータソフトウェアプログラムとして実装され得る。いくつかの例示的な実施例では、コンピュータプログラムの一部または全部は、ＲＯＭ４０２および／または通信ユニット４０９を介して、装置４００にロードおよび／またはインストールされ得る。コンピュータプログラムがＲＡＭ４０３にロードされ、計算ユニット４０１によって実行されると、上記プロセス２００の１つまたは複数のステップが実行され得る。あるいは、他の実施例では、計算ユニット４０１は、任意の他の適切な手段（例えば、ファームウェア）によりプロセス２００を実行するように構成されてもよい。
【００８２】
本明細書で上述した機能は、少なくとも部分的に、１つまたは複数のハードウェア論理ユニットによって実行され得る。例えば、使用できる例示的なハードウェア論理ユニットは、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）、特定用途向け標準製品（ＡＳＳＰ）、システムオンチップ（ＳＯＣ）、コンプレックス・プログラマブル・ロジック・デバイス（ＣＰＬＤ）などを含むが、これらに限定されない。
【００８３】
本開示の方法を実施するためのプログラムコードは、１つまたは複数のプログラミング言語の任意の組み合わせで書かれてもよい。これらのプログラムコードは、プロセッサまたはコントローラによって実行されるとき、フローチャートおよび／またはブロック図で指定された機能／動作が実行されるように、汎用コンピュータ、専用コンピュータ、または他のプログラム可能なデータ処理装置のプロセッサまたはコントローラに提供される。プログラムコードは、完全にマシン上で実行され得るか、または部分的にマシン上で実行され得るか、または独立したソフトウェアパッケージとして、部分的にマシン上で、部分的にリモートマシン上で実行され得るか、または完全にリモートマシンまたはサーバ上で実行され得る。
【００８４】
本開示の文脈において、機械可読媒体は、命令実行システム、装置、またはデバイスによって、またはそれらと組み合わせて使用するためのプログラムを含むかまたは記憶することができる有形媒体であってもよい。機械可読媒体は、機械可読信号媒体または機械可読記憶媒体であってもよい。例えば、機械可読媒体は、電子、磁気、光学、電磁気、赤外線、または半導体のシステム、装置、またはデバイス、またはこれらの任意の適切な組み合わせを含み得るが、これらに限定されない。機械可読記憶媒体のより具体的な例は、１本または複数本の導線を備えた電気コネクタ、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリメモリ（ＲＯＭ）、消去可能なプログラマブルリードオンリメモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、ポータブル・コンパクト・ディスク・リードオンリメモリ（ＣＤ−ＲＯＭ）、光学メモリ、磁気メモリ、またはこれらの任意の適切な組み合わせを含む。
【００８５】
また、各操作が特定の順序で説明されるが、これは、このような操作が示された特定の順序または逐次的な順序で実行されること、または望ましい結果を達成するためにすべての示された操作が実行されることを必要とするものとして理解されるべきである。特定の状況では、マルチタスク処理および並列処理が有利な場合がある。同様に、以上の説明がいくつかの特定の実施形態の詳細を含むが、これらは、本開示の範囲を限定するものとして解釈されるべきではない。別個の実施例の文脈において説明される特定の特徴は、単一の実施形態において組み合わせて実施することもできる。逆に、別個の実施形態の文脈において説明される様々な特徴は、複数の実施形態において個別に、または任意の適切な部分的組み合わせによって実施することもできる。
【００８６】
本主題を構造的特徴および／または方法論的動作に固有の言語で説明したが、添付の特許請求の範囲において定義される主題は、必ずしも上記の特定の特徴または動作に限定されないことを理解されたい。むしろ、上記の特定の特徴および動作は、特許請求の範囲を実施する例示的な形態として開示されている。
なお、出願当初の特許請求の範囲の記載は以下の通りである。
請求項１：
チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するステップと、
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも１つの候補計算機能テンプレートを決定するステップであって、前記候補計算機能テンプレートが前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、前記設定可能なパラメータが少なくとも１つの候補値を有するステップと、
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するステップと
を含む、チップに基づく計算機能を生成する方法。
請求項２：
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
機械学習により、前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの複数の異なる前記候補値に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップ
を含む、請求項１に記載の方法。
請求項３：
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するステップと、
推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップと
を含む、請求項１に記載の方法。
請求項４：
推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップは、
推定された前記実行性能が実行性能の閾値よりも優れているか否かを判定するステップと、
推定された前記実行性能が実行性能の閾値よりも優れている場合、推定された前記実行性能に対応する前記候補計算機能テンプレートおよび前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値を、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値として決定するステップと
を含む、請求項３に記載の方法。
請求項５：
前記実行性能の閾値は、ユーザによって入力されるか、またはチップ設計装置によって事前に設定される、
請求項４に記載の方法。
請求項６：
前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するステップは、
前記入力パラメータ値、および少なくとも１つの前記設定可能なパラメータの少なくとも１つの前記候補値を、前記少なくとも１つの候補計算機能テンプレートに応用するステップと、
実行時コンパイルにより、前記少なくとも１つの候補計算機能テンプレートのコードを生成し、前記少なくとも１つの候補計算機能テンプレートの前記実行性能を推定するステップと
を含む、請求項３に記載の方法。
請求項７：
前記候補計算機能テンプレートは、前記入力パラメータ値に関連付けられた制限条件、および／または前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータに関連付けられた制限条件をさらに有し、
前記計算機能に対応する少なくとも１つの計算機能テンプレートを決定するステップは、
前記入力パラメータ値および前記制限条件に基づいて、前記計算機能に対応する前記少なくとも１つの候補計算機能テンプレートを決定するステップ
を含む、請求項１に記載の方法。
請求項８：
前記入力パラメータ値と、前記入力パラメータ値に対応する決定された前記ターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値との対応関係を記憶するステップをさらに含む、請求項１に記載の方法。
請求項９：
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも１つの候補計算機能テンプレートを決定する前に、記憶された前記対応関係には前記入力パラメータ値に対応する対応関係が存在するか否かを判定するステップをさらに含むことであって、
ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
前記入力パラメータ値に対応する対応関係が存在すると判定される場合、前記対応関係に基づいて、前記入力パラメータ値に対応するターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値を決定するステップ
を含む、請求項８に記載の方法。
請求項１０：
ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定するステップは、
所定の期間内に、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するステップ
を含む、請求項１に記載の方法。
請求項１１：
前記所定の期間は、
ユーザによって入力された前記チップの設計時間に関連付けられた期間、前記入力パラメータ値、およびチップ設計装置によって事前に設定された前記チップの設計時間に関連付けられた期間のうちの少なくとも１つに基づいて決定される
請求項１０に記載の方法。
請求項１２：
前記計算機能のそれぞれが複数の前記候補計算機能テンプレートに対応し、前記複数の候補計算機能テンプレートが異なるアプリケーションシナリオに対応し、前記入力パラメータ値がアプリケーションシナリオに関連付けられる
請求項１に記載の方法。
請求項１３：
チップによってサポートされる計算機能に関連付けられた入力パラメータ値を取得するように構成された入力パラメータ値取得モジュールと、
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも１つの候補計算機能テンプレートを決定するように構成されたものであって、前記候補計算機能テンプレートが前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータを有し、前記設定可能なパラメータが少なくとも１つの候補値を有する、候補計算機能テンプレート決定モジュールと、
前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値に基づいて、ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの設定可能なパラメータのターゲット値を決定して、チップに基づく前記計算機能を実現するように構成されたターゲット計算機能テンプレート決定モジュールと
を含む、チップ設計装置。
請求項１４：
前記ターゲット計算機能テンプレート決定モジュールは、
機械学習により、前記入力パラメータ値および前記候補計算機能テンプレートの前記設定可能なパラメータの複数の異なる前記候補値に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された機械学習モジュール
を含む、請求項１３に記載の装置。
請求項１５：
前記ターゲット計算機能テンプレート決定モジュールは、
前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値が異なる条件下で、前記候補計算機能テンプレートの実行性能を推定するように構成された性能推定モジュールと、
推定された前記実行性能に基づいて、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された第二ターゲット計算機能テンプレート決定モジュールと
を含む、請求項１３に記載の装置。
請求項１６：
第二ターゲット計算機能テンプレート決定モジュールは、
推定された前記実行性能が実行性能の閾値よりも優れているか否かを判定するように構成された閾値判定モジュールと、
推定された前記実行性能が実行性能の閾値よりも優れている場合、推定された前記実行性能に対応する前記候補計算機能テンプレートおよび前記候補計算機能テンプレートの前記設定可能なパラメータの前記候補値を、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値として決定するように構成された第三ターゲット計算機能テンプレート決定モジュールと
を含む、請求項１５に記載の装置。
請求項１７：
前記実行性能の閾値は、ユーザによって入力されるか、またはチップ設計装置によって事前に設定される、
請求項１６に記載の装置。
請求項１８：
性能推定モジュールは、
前記入力パラメータ値、および少なくとも１つの前記設定可能なパラメータの少なくとも１つの前記候補値を、前記少なくとも１つの候補計算機能テンプレートに応用するように構成されたパラメータ応用モジュールと、
実行時コンパイルにより、前記少なくとも１つの候補計算機能テンプレートのコードを生成し、前記少なくとも１つの候補計算機能テンプレートの前記実行性能を推定するように構成されたコンパイルモジュールと
を含む、請求項１５に記載の装置。
請求項１９：
前記候補計算機能テンプレートは、前記入力パラメータ値に関連付けられた制限条件、および／または前記候補計算機能テンプレートの実行性能に関連付けられた設定可能なパラメータに関連付けられた制限条件をさらに有し、
前記候補計算機能テンプレート決定モジュールは、
前記入力パラメータ値および前記制限条件に基づいて、前記計算機能に対応する前記少なくとも１つの候補計算機能テンプレートを決定するように構成された第一候補計算機能テンプレート決定モジュール
を含む、請求項１３に記載の装置。
請求項２０：
前記入力パラメータ値と、前記入力パラメータ値に対応する決定された前記ターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値との対応関係を記憶するように構成された記憶モジュールをさらに含む、請求項１３に記載の装置。
請求項２１：
前記入力パラメータ値に基づいて、前記計算機能に対応する少なくとも１つの候補計算機能テンプレートを決定する前に、記憶された前記対応関係には前記入力パラメータ値に対応する対応関係が存在するか否かを判定するように構成された対応関係判定モジュールと、
前記入力パラメータ値に対応する対応関係が存在すると判定される場合、前記対応関係に基づいて、前記入力パラメータ値に対応するターゲット計算機能テンプレート、および前記ターゲット計算機能テンプレートに対応する前記設定可能なパラメータの前記ターゲット値を決定するように構成された第四ターゲット計算機能テンプレート決定モジュールと
をさらに含む、請求項２０に記載の装置。
請求項２２：
ターゲット計算機能テンプレート決定モジュールは、
所定の期間内に、前記ターゲット計算機能テンプレートおよび前記ターゲット計算機能テンプレートの前記設定可能なパラメータの前記ターゲット値を決定するように構成された第五ターゲット計算機能テンプレート決定モジュール
を含む、請求項１３に記載の装置。
請求項２３：
前記所定の期間は、
ユーザによって入力された前記チップの設計時間に関連付けられた期間、前記入力パラメータ値、およびチップ設計装置によって事前に設定された前記チップの設計時間に関連付けられた期間のうちの少なくとも１つに基づいて決定される、
請求項２２に記載の装置。
請求項２４：
前記計算機能のそれぞれが複数の前記候補計算機能テンプレートに対応し、前記複数の候補計算機能テンプレートが異なるアプリケーションシナリオに対応し、前記入力パラメータ値が前記アプリケーションシナリオに関連付けられる、
請求項１３に記載の装置。
請求項２５：
１つまたは複数のプロセッサと、
１つまたは複数のプログラムを記憶するためのものであって、前記１つまたは複数のプログラムが前記１つまたは複数のプロセッサによって実行されるとき、電子デバイスが請求項１〜１２のいずれか一項に記載の方法を実施できるようにするメモリと
を含む、電子デバイス。
請求項２６：
請求項１〜１２のいずれか一項に記載の方法を実施するためにプロセッサによって実行されるコンピュータプログラムを記憶したコンピュータ可読記憶媒体。
【図１】
0006952138.tif 000002
【図２】
0006952138.tif 000003
【図３】
0006952138.tif 000004
【図４】
0006952138.tif 000005