JP2021099785A - コンピュータアプリケーションを異種システムのために分配する自動学習技術 - Google Patents
コンピュータアプリケーションを異種システムのために分配する自動学習技術 Download PDFInfo
- Publication number
- JP2021099785A JP2021099785A JP2020155791A JP2020155791A JP2021099785A JP 2021099785 A JP2021099785 A JP 2021099785A JP 2020155791 A JP2020155791 A JP 2020155791A JP 2020155791 A JP2020155791 A JP 2020155791A JP 2021099785 A JP2021099785 A JP 2021099785A
- Authority
- JP
- Japan
- Prior art keywords
- type
- function
- telemetry information
- hardware resource
- telemetry
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5044—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering hardware capabilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0631—Configuration or reconfiguration of storage systems by allocating resources to storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5094—Allocation of resources, e.g. of the central processing unit [CPU] where the allocation takes into account power or heat criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
- H04L41/5003—Managing SLA; Interaction between SLA and QoS
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Sources (AREA)
- Debugging And Monitoring (AREA)
- Microcomputers (AREA)
Abstract
【課題】関数に関連付けられる優先順位付けデータ構造を識別する技術のためのシステムを提供する。【解決手段】優先順位付けデータ構造は、優先順でハードウェアリソースタイプをリストする。また、技術は、第1のタイプのハードウェアリソースが利用可能である場合、第1のタイプのハードウェアリソースを機能に割り当てることができ、第1のタイプのハードウェアリソースは、優先順位付けデータ構造において最も優先順位が高い。さらに、技術は、第1のタイプのハードウェアリソースが利用可能でない場合、優先順に、第2のタイプのハードウェアリソースを関数に割り当てることができる。【選択図】図5
Description
実施形態は、概して、アプリケーション分配(partitioning)に関する。より詳細には、実施形態は、異種システムのためにコンピュータアプリケーションを分配する(partition)ための自動学習技術に関する。
所与のコンピュータアプリケーション(例えば、ソフトウェア)は、典型的には、コンピューティングシステム内の特定のプロセッサ(例えば、中央処理装置/CPU)上で実行されるように書かれる。しかし、新しいタイプのプロセッサ(例えば、特殊な目的のアクセラレータ)が開発されるにつれて、アプリケーションが新しいプロセッサ上で効率的に実行することを可能にすることは、アプリケーションコードのコストと時間がかかる書き換えを伴うことがある。たとえアプリケーションが異種のプロセッサセットを含むコンピューティングシステム上で実行するように書かれていても、アプリケーションが異種のプロセッサセットを有するコンピューティングシステム上で効率的に実行することを可能にすることは、依然として、アプリケーションコードのコストと時間のかかる書き換えを伴う可能性がある。
実施形態の様々な利点は、以下の明細書および添付の特許請求の範囲を読むことによって、および以下の図面を参照することによって、当業者に明らかになるであろう。
次に、図1を参照すると、例えば、ONEAPIなどの統合プログラミングモデルのためのソフトウェアスタック20が示されている。図示された統合ソフトウェアスタック20は、レベル0インタフェース22、レベル0インタフェース22の下のシステムソフトウェア(SW)24、レベル0インタフェース22の上のシステムソフトウェア26、および開発者インタフェース28を含む。レベル0インタフェース22の下のシステムソフトウェア24は、異種セットのプロセッサ36と通信する。異種セットのプロセッサ36は、例えば、CPU(例えば、スカラー演算および/または関数をサポートし得る)、GPU(例えば、ベクトル演算および/または関数をサポートし得るグラフィック処理ユニット)、AI(人工知能)アクセラレータ(例えば、マトリックス演算および/または関数をサポートし得る)、およびFPGA(例えば、空間演算および/または関数をサポートし得るフィールドプログラマブルゲートアレイ)などのハードウェアを含んでもよい。さらに、開発者インタフェース28は、最適化されたミドルウェアおよび関連するフレームワークと対話し、これは、次に、1つまたは複数の最適化されたアプリケーション38をサポートする。
一実施形態では、スタック20の自動分配器(auto-partitioner)部分は、例えば、プロセッサディスパッチテーブル(PDT)データベース32、メモリ割り当てテーブル(MAT)データベース34などの優先順位付けデータ構造を維持するスケジューラ30を含む。一例では、スケジューラ30は、優先順位付けデータ構造を使用して、異種セットのプロセッサ36にわたるライブラリ関数の実行を自動的に分配する。より詳細に説明するように、PDTデータベース32は、プロセッサタイプを優先順に、かつ、関数毎にリストし得る。例えば、一組のライブラリ40は、異種セットのプロセッサ36内の各タイプのプロセッサのために構築される関数(function)を含んでもよい。このような場合、図示されたPDTデータベース32は、どのプロセッサタイプが当該関数(the function in question)を実行するための最も高い優先順位を有するか、どのプロセッサタイプが当該関数を実行するための次に高い優先順位を有するか、などを指定する。同様に、MATデータベース34は、どのメモリタイプ(例えば、キャッシュ、揮発性メモリ、不揮発性メモリ)が当該関数のデータ構造に対して最も高い記憶優先順位を有するか、どのメモリタイプが当該関数のデータ構造に対して次に高い記憶優先順位を有するかを指定することができる。一例では、優先順位付けデータ構造は、関数の実行中に収集されるテレメトリ情報に基づいて生成される。従って、図示された優先順位付けデータ構造は、より最適な実行構成が関数毎に自動的に識別されることを可能にすることによって、性能、電力/エネルギ効率、および/またはスケーラビリティを向上させ得る。実際、優先順位付けデータ構造を経時的に更新することによって、図示されたスタック20は、異種セットのプロセッサ36のセットにわたって関数を分配するための自動学習ソリューションを提供する。
図2は、複数のライブラリバージョン50を示しており、CPUライブラリ50b、GPUライブラリ50c、AIライブラリ50d、FPGAライブラリ50eを構築するために、ベースライブラリ50a(「Lib k」)を用いている。図示された例では、ベースライブラリ50aの各関数(「Func_1」〜「Func_m」)は、ベースライブラリ50aの他のバージョン50に対応するものを有している。特定のライブラリバージョン50、またはその下にある関数(underlying functions)の一部が、与えられたタイプのプロセッサ上で利用できない場合、そのような条件はスケジューラおよび/またはアプリケーションリンカに示され得る。
図3Aは、関数識別子(ID)66、第1のテレメトリレコード62、第2のテレメトリレコード64などを含むテレメトリ情報60(例えば、プロファイル情報)の一例を示す。図示されたテレメトリレコード62、64は、関数ID66に対応する関数の連続的な実行のための、例えば、パラメータサイズおよび値、メモリ要件、実行時間、スレッドの数、消費電力などの作動条件を追跡する。テレメトリレコード62、64はまた、関数実行の時刻、性能および電力プロファイル特性などを詳細に記録し(document)得る。ハードウェア能力の利用(例えば、単一命令多重データ/SIMDベクトル命令の使用)、グラフィックス能力の利用、および階層型メモリサブシステム(tiered memory subsystem)(例えば、永続メモリを含む)におけるキャッシュレベルの利用などの情報も収集され得る。一例では、そのような情報は、そのようなプロファイルが収集されるトレーニングセッション中に一度作成される。
他の実施形態では、テレメトリ情報60は、経時的に(例えば、ユーザによって決定されるように選択的にまたは周期的に)関数の実行と共に繰り返し収集される。従って、第1のテレメトリレコード62は当該関数の第1の実行に対応し、第2のテレメトリレコード64は当該関数の第2の実行に対応する等である。このようなアプローチは、利用予測が信頼できないまたは予測できないマルチテナントコンピューティングアーキテクチャにおいて特に有利であり得る。追跡された作動状態は、実行から実行へおよび関数から関数へと変化し得るが、例えば、既に説明したPDTデータベース32(図1)および/またはMATデータベース34(図1)などの優先順位付けデータ構造の自動生成を容易にし得る。
図3Bは、関数ID72と単一のテレメトリレコード74とを含むテレメトリ情報70の一例を示す。図示されたテレメトリレコード74は、関数ID72に対応する関数の連続的に実行のための、例えば、パラメータサイズおよび値、メモリ要件、実行時間、スレッドの数、消費電力などの動作条件を追跡する。従って、図示された解決策は、システムが経時的な関数として関数実行についてより多く学習するにつれて、レコード74が動的データモデルとして機能する各関数について、一つのテレメトリレコード74のみを維持する。このようなアプローチは、任意の多数回実行される関数を扱う場合に特に有用であり得る。さらに別の実施形態では、関数は、対応する動的プロファイル情報を有していなくてもよいが、システム作成者は、静的に、例えば、スケジューリングプロセスにおいてターゲティングするプロセッサの提案された順序の表示(例えば、最初に、特別なアクセラレータを試み、次に、特定のGPUを試み、CPUを最後に試みる)などの関数に関する情報を提供してもよい。
図4は、プロセッサディスパッチテーブル(PDT)80を示す。既に述べたように、関数テレメトリ情報は、PDT80を作成するために使用され、このPDT80は、異種システム内のプロセッサに関数をマッピングする。他の実施形態では、プロファイル情報は、開発者/ユーザのヒントおよび発見的手法によって強化、置き換え、または上書きすることができる。一実施形態では、PDT80は、所与の関数の実行のために異種システムのプロセッサをターゲティングするための好ましい順序を指定する。単純な実施形態では、PDT80は、各要素がターゲットプロセッサのIDであるソートされた配列(array)である。一実施形態では、第1の要素は、所与の関数の実行のための最も高い優先順位(例えば、最も好ましい)のプロセッサを指定する。このような場合、PDTの第2の要素は、所与の関数を実行するためのプロセッサの2番目の選択肢を指定するなどである。図示の例では、最も優先順位の高いプロセッサのタイプは「アクセラレータ1」、次に優先順位の高いプロセッサのタイプは「アクセラレータ2」などである。例えば、関数に対応するテレメトリ情報がワイドベクトル命令の多用を示す場合、そのような知識は、関数の実行のためにプロセッサが選択する優先順位に反映され得る。換言すれば、スケジューラは、比較的広い命令を有するプロセッサ上で関数を実行しようと試みることができる。
優先順位付けデータ構造の別のタイプは、メモリ割り当て(例えば、レイアウト)テーブル(MAT)であり、これは、関数を含む計算ユニットの選択データ構造のためのメモリの割り当てをガイドする。一実施形態では、MATは、アプリケーションまたは関数の以前の実行からの開発者の知識および関数のダイナミックテレメトリプロファイルをキャプチャする。システムエージェントは、選択されたデータ構造(例えば、大きな配列またはバッファ)が特定のメモリユニットにマッピングされた以前の実行の実行特性を分析し得る。一例では、エージェントは、次に、アプリケーションまたは関数の実行中にメモリアロケータによって使用されるデータ構造に対応するメモリ割り当てのための優先順位テーブルを作成する。したがって、MATの優先リストは関数のデータ構造に対しては[cache=>RAM=>永続ストレージ]であるが、MATの優先リストは関数の別のデータ構造に対しては[RAM=>永続ストレージ]であり得る。PDTと同様に、MATは、システムがアプリケーションまたは関数の実行特性についてより多くを自動的に学習するにつれて進化し得る。このように、新しい実行(runs)からの学習は、将来の実行の挙動をさらに改善するために使用される。特定の実施形態では、MATの範囲は、単一のコンピューティングシステムの構成要素を超えて、例えば、構成要素に分けられた階層型メモリアーキテクチャシステムなどのアーキテクチャをカバーするように拡大される。
図5は、スケジューラを動作させる方法90を示す。この方法90は、概して、例えば、既に説明したスケジューラ30(図1)などのスケジューラに実装され得る。より詳細には、本方法90は、ランダムアクセスメモリ(RAM)、リードオンリメモリ(ROM)、プログラマブルROM(PROM)、ファームウェア、フラッシュメモリなどのような機械またはコンピュータ可読記憶媒体に記憶された一組のロジック命令として1つまたは複数のモジュールに、例えば、プログラマブルロジックアレイ(PLA)、FPGA、複雑なプログラマブルロジックデバイス(CPLD)などの設定可能ロジックに、例えば、特定用途向け集積回路(ASIC)、相補型金属酸化物半導体(CMOS)またはトランジスタ−トランジスタロジック(TTL)技術などの回路技術を使用する固定機能ロジックハードウェアに、またはそれらの任意の組合せに、実装され得る。
例えば、方法90に示された動作を実行するためのコンピュータプログラムコードは、JAVA(登録商標)、SMALLTALK(登録商標)、C++などのオブジェクト指向プログラミング言語および「C」プログラミング言語または類似のプログラミング言語などの従来の手続き型プログラミング言語を含む、1つまたは複数のプログラミング言語の任意の組み合わせで書かれ得る。加えて、ロジック命令は、アセンブラ命令、ISA命令、機械語命令、機械依存命令、マイクロコード、状態設定データ、集積回路の構成データ、電子回路および/またはハードウェア(例えば、ホストプロセッサ、中央処理装置/CPU、マイクロコントローラなど)に固有の他の構造構成要素をパーソナライズする状態情報を含んでもよい。
図示された処理ブロック92は、関数に関連付けられる(例えば、専用の)優先順位付けデータ構造(例えば、PDT、MAT)を識別することを提供し、優先順位付けデータ構造は、ハードウェアリソースタイプを優先順にリストする。ブロック92はまた、収集されたテレメトリ情報に基づいて優先順位付けデータ構造を生成および/または修正することを含み得る。この点に関し、ブロック92は、パフォーマンスを改善する(例えば、高性能プロセッサを優先することによって)、電力消費を低減する(例えば、低電力プロセッサを優先することによって)などのように、優先順位付けデータ構造を設計し得る。実際、マッピングは時刻に特有であることさえある。
ハードウェアリソースのタイプがブロック94において選択され得、ブロック96は、選択されたハードウェアリソースのタイプが利用可能であるかどうかを決定する。そうであれば、選択されたハードウェアリソースタイプは、ブロック98において関数に割り当てられる(例えば、割り当てられる)。選択されたハードウェアリソースタイプが利用できない場合、図示された方法90はブロック94に戻り、優先順で次のタイプのハードウェアリソースを選択する。
したがって、優先順位付けデータ構造の中で最も高い優先順位を持つリソースのタイプが利用可能である場合、そのタイプのリソースが関数に割り当てられる。そうでなければ、第2のタイプのハードウェアリソース(優先順における)が関数に割り当てられ、第2のタイプのハードウェアリソースは次に利用可能なタイプのハードウェアリソースである。すでに述べたように、ハードウェアリソースタイプは、プロセッサタイプ(例えば、PDTの場合)および/またはメモリタイプ(例えば、MATの場合)であり得る。従って、図示された方法90は、より最適な実行構成が関数毎に自動的に識別されることを可能にすることによって、性能、効率、および/またはスケーラビリティを向上させる。さらに、優先順位付けデータ構造が経時的に更新され得るため、新しいタイプのハードウェアリソースが開発されるにつれて、アプリケーションコードのコストおよび時間のかかる書き換えが回避され得る。
図6は、性能が高められたコンピューティングシステムを動作させる方法101を示す。方法101は、RAM、ROM、PROM、ファームウェア、フラッシュメモリなどの機械可読またはコンピュータ可読記憶媒体に格納された一組のロジック命令として1つまたは複数のモジュールにおいて、例えばPLA、FPGA、CPLDなどの設定可能ロジックにおいて、例えばASIC、CMOSまたはTTL技術などの回路技術を用いて固定機能ロジックハードウェアにおいて、またはそれらの任意の組み合わせで実装され得る。
一般に、アプリケーション/関数スケジューラ100は、実行のための関数(またはアプリケーション)を構成し、関数実行のためのメモリを割り当てる際に、プロセッサディスパッチテーブル102およびメモリ割り当てテーブル104のグローバルデータベースを活用し得る。特定の実施形態では、実行に関する新しいテレメトリ情報が、新しい情報に基づいてPDT102およびMAT104を改訂するエージェントによって使用されるために記録される。例えば、アプリケーション/関数は、処理ブロック106において特定のプロセッサ/メモリ構成で実行し得、実行テレメトリプロファイルはブロック108において収集される(gathered)(例えば、収集される(collected))。一実施形態では、実行アナライザが、ブロック110においてテレメトリ情報(例えば、プロファイル、履歴)を作成/更新する。図示の例では、テレメトリ情報の収集および優先順位付けデータ構造の更新が、関数の複数の実行のために繰り返される。
従って、図示された方法101は、コンピュータアプリケーションを異種システムに分配するための自動学習ソリューションを提供する(例えば、アプリケーションコードの高価で時間のかかる書き換えを回避する)。加えて、テレメトリ情報は、関数の各実行に対して異なるテレメトリレコードに格納され得る(例えば、図3Aを参照)、または関数の各実行に対して同じテレメトリレコードに格納され得る(例えば、図3Bを参照)。一実施形態では、スケジューラ100は、テレメトリ情報に基づいて優先順位付けデータ構造を生成及び修正する。
次に図7を参照すると、性能が高められたコンピューティングシステム170が示されている。システム170は、概して、コンピューティング機能(例えば、パーソナルデジタルアシスタント/PDA、ノートコンピュータ、タブレットコンピュータ、コンバーチブルタブレット、サーバ)、通信機能(例えば、スマートフォン)、イメージング機能(例えば、カメラ、ビデオカメラ)、メディア再生機能(例えば、スマートテレビ/TV)、ウェアラブル機能(例えば、時計、アイウェア、ヘッドウェア、履物、ジュエリー)、車両機能(例えば、自動車、トラック、モータサイクル)、ロボット機能(例えば、自律ロボット)など、またはそれらの任意の組み合わせを有する電子デバイス/プラットフォームの一部であり得る。図示の例では、システム170は、システムメモリ176に結合された集積メモリコントローラ(IMC)174を有するホストプロセッサ172を含む。
図示されたシステム170はまた、システムオンチップ(SoC)として、半導体ダイ182上にホストプロセッサ172及びグラフィックスプロセッサ180と共に実装された入出力(IO)モジュール178を含む。図示されたIOモジュール178は、例えば、ディスプレイ184(例えば、タッチスクリーン、液晶ディスプレイ/LCD、発光ダイオード/LEDディスプレイ)、ネットワークコントローラ186(例えば、有線および/または無線)、および大容量記憶装置188(例えば、ハードディスクドライブ/HDD、光ディスク、ソリッドステートドライブ/SSD、フラッシュメモリ)と通信する。
一実施形態では、ホストプロセッサ172、グラフィックスプロセッサ180および/またはIOモジュール178は、システムメモリ176および/または大容量記憶装置188から検索されたプログラム命令190を実行して、すでに説明した方法90(図5)および/または方法101(図6)の1つまたは複数の態様を実行する。従って、図示された命令190の実行は、コンピューティングシステム170に、関数の実行中にテレメトリ情報を収集させるとともにテレメトリ情報に基づいて優先順位付けデータ構造を生成させ、優先順位付けデータ構造は優先順にハードウェアリソースタイプをリストする。一例では、命令190の実行はまた、コンピューティングシステム170に、関数の複数の実行中にテレメトリ情報を収集させ、テレメトリ情報に基づいて優先順位付けデータ構造を修正させる。
一実施形態では、図示された命令190の実行はまた、第1のタイプのハードウェアリソースが利用可能であり、第1のタイプのハードウェアリソースが優先順位データ構造において最も高い優先順位を有する場合、コンピューティングシステム170に第1のタイプのハードウェアリソースを機能に割り当てさせる。加えて、命令190の実行は、第1のタイプのハードウェアリソースが利用可能でない場合、コンピューティングシステム170に第2のタイプのハードウェアリソースを、優先順位で、関数に割り当てさせ得る。
一実施形態では、第2のタイプのハードウェアリソースは、次に利用可能なタイプのハードウェアリソースである。すでに論じたように、ハードウェアリソースタイプは、プロセッサタイプ、メモリタイプなどであり得る。従って、コンピューティングシステム170は、少なくとも、優先順位付けデータ構造を使用して、より最適な実行構成が自動的に識別され、関数毎に使用されることを可能にする程度まで、性能が向上される。
一実施形態では、第2のタイプのハードウェアリソースは、次に利用可能なタイプのハードウェアリソースである。すでに論じたように、ハードウェアリソースタイプは、プロセッサタイプ、メモリタイプなどであり得る。従って、コンピューティングシステム170は、少なくとも、優先順位付けデータ構造を使用して、より最適な実行構成が自動的に識別され、関数毎に使用されることを可能にする程度まで、性能が向上される。
図8は、半導体パッケージ装置192を示す。図示された装置192は、1つまたは複数の基板194(例えば、シリコン、サファイア、ガリウムヒ素)および基板(複数可)194に結合されたロジック196(例えば、トランジスタアレイおよび他の集積回路/IC構成要素)を含む。ロジック196は、少なくとも部分的に、設定可能なロジックまたは固定機能ロジックハードウェアに実装され得る。一例では、ロジック196は、既に説明した方法90(図5)および/または方法101(図6)の1つまたは複数の態様を実装する。したがって、ロジック196は、関数の実行中にテレメトリ情報を収集し得るとともにテレメトリ情報に基づいて優先順位付けデータ構造を生成し得、優先順位付けデータ構造は、優先順でハードウェアリソースタイプをリストする。一例では、ロジック196はまた、関数の複数の実行中にテレメトリ情報を収集し、テレメトリ情報に基づいて優先順位付けデータ構造を修正する。
一実施形態では、ロジック196は、第1のタイプのハードウェアリソースが利用可能である場合、第1のタイプのハードウェアリソースを関数に割り当て、第1のタイプのハードウェアリソースは、優先順位付けデータ構造において最も高い優先順位を有する。加えて、ロジック196は、第1のタイプのハードウェアリソースが利用可能でない場合、優先順において、第2(2番目)のタイプのハードウェアリソースを関数に割り当て得る。一例では、第2のタイプのハードウェアリソースは、次に使用可能なタイプのハードウェアリソースである。すでに論じたように、ハードウェアリソースタイプは、プロセッサタイプ、メモリタイプなどであり得る。従って、装置192は、少なくとも、優先順位付けデータ構造を使用して、より最適な実行構成が自動的に識別され、関数毎に使用されることを可能にする程度まで、性能が向上される。
一例では、ロジック196は、基板(複数可)194内に配置される(例えば、埋め込まれる)トランジスタチャネル領域を含む。したがって、ロジック196と基板(複数可)194との間のインタフェースは、階段接合ではない。また、ロジック196は、基板(複数可)194の初期ウエハ上に成長されるエピタキシャル層を含むと考えられ得る。
図9は、一実施形態によるプロセッサコア200を示す。プロセッサコア200は、マイクロプロセッサ、埋め込みプロセッサ、デジタル信号プロセッサ(DSP)、ネットワークプロセッサ、またはコードを実行するための他のデバイスなど、任意のタイプのプロセッサのコアであり得る。図9には1つのプロセッサコア200のみが示されているが、処理要素は、代替的には、図9に示されたプロセッサコア200のうちの1つより多くを含み得る。プロセッサコア200は、シングルスレッドコアであり得る、または少なくとも1つの実施形態では、プロセッサコア200は、コア当たり2つ以上のハードウェアスレッドコンテキスト(または「ロジックプロセッサ」)を含み得るという点で、マルチスレッドであり得る。
図9はまた、プロセッサコア200に結合されたメモリ270を示す。メモリ270は、当業者に知られているかまたはそうでなければ利用可能であるような、広範な種類のメモリ(メモリ階層の種々の層を含む)のいずれかであり得る。メモリ270は、プロセッサコア200によって実行されることになる1つまたは複数のコード213命令(複数可)を含み、コード213は、すでに説明した方法90(図5)および/または方法101(図6)の1つまたは複数の態様を実装し得る。プロセッサコア200は、コード213によって示される命令のプログラムシーケンスに従う。各命令は、フロントエンド部分210に入り、1つまたは複数のデコーダ220によって処理され得る。デコーダ220は、その出力として、予め規定されたフォーマットの固定幅マイクロオペレーションなどのマイクロオペレーションを生成し得る、または、オリジナルのコード命令を反映する他の命令、マイクロ命令、もしくは制御信号を生成し得る。図示されたフロントエンド部分210はまた、レジスタリネームロジック225およびスケジューリングロジック230を含み、これらは概してリソースを割り当て、実行のための変換命令に対応する動作をキューに入れる(queue)。
プロセッサコア200は、一組の実行ユニット255−1〜255−Nを有する実行ロジック250を含むように示されている。いくつかの実施形態は、特定の関数または関数セットに専用のいくつかの実行ユニットを含み得る。他の実施形態は、1つの実行ユニットのみまたは特定の機能を実行できる1つの実行ユニットを含み得る。図示された実行ロジック250は、コード命令によって指定された動作を実行する。
コード命令によって指定された動作の実行の完了後、バックエンドロジック260は、コード213の命令を撤収する(retires)。一実施形態では、プロセッサコア200は、順不同の実行を可能にするが、命令の順番の撤収(retirement)を必要とする。撤収ロジック265は、当業者に知られた種々の形態(例えば、リオーダバッファ等)を取ることができる。このようにして、プロセッサコア200は、コード213の実行中に、少なくとも、デコーダによって生成される出力、レジスタリネームロジック225によって利用されるハードウェアレジスタおよびテーブル、ならびに実行ロジック250によって修正される任意のレジスタ(図示せず)に関して、変換される。
図9には示されていないが、処理要素は、プロセッサコア200を有するチップ上の他の要素を含み得る。例えば、処理要素は、プロセッサコア200と共にメモリ制御ロジックを含み得る。処理要素は、I/O制御ロジックを含み得る、および/またはメモリ制御ロジックと一体化されたI/O制御ロジックを含み得る。処理要素はまた、1つまたは複数のキャッシュを含み得る。
次に、図10を参照すると、一実施形態によるコンピューティングシステム1000の実施形態のブロック図が示される。図10には、第1の処理要素1070および第2の処理要素1080を含むマルチプロセッサシステム1000が示されている。2つの処理要素1070および1080が示されているが、システム1000の実施形態は、1つのそのような処理要素のみを含んでもよいことが理解されるべきである。
システム1000は、ポイントツーポイント相互接続システムとして示され、第1の処理要素1070および第2の処理要素1080は、ポイントツーポイント相互接続1050を介して結合される。図10に示された相互接続のいずれかまたは全ては、ポイントツーポイント相互接続ではなくマルチドロップバスとして実装され得ることが理解されるべきである。
図10に示すように、処理要素1070および1080の各々は、第1および第2のプロセッサコア(すなわち、プロセッサコア1074aおよび1074b、ならびにプロセッサコア1084aおよび1084b)を含む、マルチコアプロセッサであり得る。そのようなコア1074a、1074b、1084a、1084bは、図9に関連して上述したものと同様の方法で命令コードを実行するように構成され得る。
各処理要素1070、1080は、少なくとも1つの共有キャッシュ1896a、1896bを含み得る。共有キャッシュ1896a、1896bは、それぞれ、コア1074a、1074b、および1084a、1084bなどの、プロセッサの1つまたは複数の構成要素によって利用されるデータ(例えば、命令)を記憶し得る。例えば、共有キャッシュ1896a、1896bは、プロセッサの構成要素によるより速いアクセスのために、メモリ1032、1034に記憶されたデータをローカルにキャッシュし得る。1つまたは複数の実施形態では、共有キャッシュ1896a、1896bは、レベル2(L2)、レベル3(L3)、レベル4(L4)、または他のレベルのキャッシュ、最後のレベルキャッシュ(LLC)、および/またはそれらの組み合わせなどの1つまたは複数の中間レベルキャッシュを含み得る。
2つの処理要素1070、1080のみで示されるが、本実施形態の範囲は、それに限定されないことが理解されるべきである。他の実施形態では、1つまたは複数の追加の処理要素が、所与のプロセッサ内に存在し得る。代替的には、処理要素1070、1080の1つまたは複数は、アクセラレータまたはフィールドプログラマブルゲートアレイなどのプロセッサ以外の要素であり得る。例えば、追加の処理要素(複数可)は、第1のプロセッサ1070と同じである追加のプロセッサ(複数可)、第1のプロセッサ1070に対して異種または非対称である追加のプロセッサ(複数可)、アクセラレータ(例えば、グラフィックスアクセラレータまたはデジタル信号処理(DSP)ユニット)、フィールドプログラマブルゲートアレイ、または任意の他の処理要素を含み得る。アーキテクチャ、マイクロアーキテクチャ、熱、電力消費特性などを含むメトリックのスペクトルに関して、処理要素1070、1080の間には、様々な相違があり得る。これらの相違は、実際上、処理要素1070、1080の間の非対称性および異種性として現れ得る。少なくとも1つの実施形態について、種々の処理要素1070、1080は、同一のダイパッケージ内に存在し得る。
第1の処理要素1070は、メモリコントローラロジック(MC)1072並びにポイントツーポイント(P−P)インタフェース1076および1078をさらに含み得る。同様に、第2の処理要素1080は、MC1082ならびにP−Pインタフェース1086および1088を含み得る。図10に示すように、MC1072および1082は、プロセッサをそれぞれのメモリ、すなわち、メモリ1032およびメモリ1034に結合し、これらは、それぞれのプロセッサにローカルに取り付けられたメインメモリの一部であり得る。MC1072および1082は、処理要素1070、1080に統合されて示されているが、代替の実施形態では、MCロジックは、その中に統合されるのではなく、処理要素1070、1080の外側の別々のロジックであってもよい。
第1の処理要素1070および第2の処理要素1080は、それぞれP−P相互接続1076、1086を介して、I/Oサブシステム1090に結合され得る。図10に示すように、I/Oサブシステム1090は、P−Pインタフェース1094および1098を含む。さらに、I/Oサブシステム1090は、I/Oサブシステム1090を高性能グラフィックスエンジン1038と結合するためのインタフェース1092を含む。一実施形態では、バス1049は、グラフィックスエンジン1038をI/Oサブシステム1090に結合するために使用され得る。代替的には、ポイントツーポイント相互接続が、これらの構成要素を結合し得る。
次に、I/Oサブシステム1090は、インタフェース1096を介して第1のバス1016に結合され得る。一実施形態では、第1のバス1016は、周辺機器相互接続(PCI)バス、またはPCI Expressバスもしくは他の第3世代I/O相互接続バスなどのバスであり得るが、実施形態の範囲はそれらに限定されない。
図10に示すように、種々のI/Oデバイス1014(例えば、バイオメトリクススキャナ、スピーカ、カメラ、センサ)が、第1のバス1016を第2のバス1020に結合し得るバスブリッジ1018と共に、第1のバス1016に結合され得る。一実施形態では、第2のバス1020は、low pin count(LPC)バスであり得る。一実施形態では、例えば、キーボード/マウス1012、通信デバイス(複数可)1026、および、コード1030を含み得るディスクドライブまたは他の大容量記憶装置などのデータストレージユニット1019を含む、種々の装置が、第2のバス1020に結合され得る。図示されたコード1030は、すでに説明した方法90(図5)および/または方法101(図6)の1つまたは複数の態様を実装し得る。さらに、オーディオI/O1024が、第2のバス1020に結合され得るとともに、バッテリ1010が、コンピューティングシステム1000に電力を供給し得る。
他の実施形態が考えられることに留意されたい。例えば、図10のポイントツーポイントアーキテクチャの代わりに、システムは、マルチドロップバスまたは他のそのような通信トポロジを実装し得る。また、図10の要素は、代替的には、図10に示されているよりも多いまたは少ない集積チップを使用して分配されてもよい。
追加の注記および例:
例1は、ネットワークコントローラと、ネットワークコントローラに結合されたプロセッサと、プロセッサに結合されたメモリとを備えた性能が高められたコンピューティングシステムを含み、このメモリは、一組の実行可能なプログラム命令を含み、この命令は、プロセッサによって実行されるとき、コンピューティングシステムに、関数に関連付けられる優先順位付けデータ構造を識別させ、優先順位付けデータ構造は、ハードウェアリソースタイプを優先順にリストし、第1のタイプのハードウェアリソースが利用可能である場合に、第1のタイプのハードウェアリソースを関数に割り当てさせ、第1のタイプのハードウェアリソースは、優先順位付けデータ構造において最も高い優先順位を有し、第1のタイプのハードウェアリソースが利用可能でない場合、優先順に、第2のタイプのハードウェアリソースを関数に割り当てさせ、ハードウェアリソースのタイプは、プロセッサタイプ又はメモリタイプのうちの1つである。
例2は、例1のコンピューティングシステムを含み、命令は、実行されるとき、コンピューティングシステムに、関数の実行中に、テレメトリ情報を収集させ、テレメトリ情報に基づいて優先順位付けデータ構造を生成させ、第2のタイプのハードウェアリソースは、次に利用可能なタイプのハードウェアリソースであるものであり、テレメトリ情報は、パラメータサイズおよび値、メモリ要件、実行時間、スレッドの数、または電力消費のうちの1つまたは複数を含むものであり、優先順位付けデータ構造は、プロセッサディスパッチテーブルまたはメモリ割り当てテーブルのうちの1つである。
例3は、例1のコンピューティングシステムを含み、命令は、実行されるとき、コンピューティングシステムに、関数の複数の実行中にテレメトリ情報を収集させ、テレメトリ情報に基づいて優先順位付けデータ構造を修正させる。
例4は、例3のコンピューティングシステムを含み、命令は、実行されるとき、コンピューティングシステムに、第1のテレメトリ情報を第1のテレメトリレコードに記憶させ、第1のテレメトリ情報は、関数の第1の実行と関連付けられ、第2のテレメトリ情報を第2のテレメトリレコードに記憶させ、第2のテレメトリ情報は、関数の第2の実行と関連付けられる。
例5は、例3のコンピューティングシステムを含み、命令は、実行されるとき、コンピューティングシステムに、第1のテレメトリ情報をテレメトリレコードに記憶させ、第1のテレメトリ情報は関数の第1の実行に関連付けられ、第2のテレメトリ情報をテレメトリレコードに記憶させ、第2のテレメトリ情報は関数の第2の実行に関連付けられる。
例6は、1つまたは複数の基板と、1つまたは複数の基板に結合されるロジックとを有する半導体装置を含み、ロジックは、少なくとも部分的に、設定可能なロジックまたは固定機能のハードウェアロジックのうちの1つまたは複数で実装され、1つまたは複数の基板に結合されるロジックは、関数に関連付けられる優先順位付けデータ構造を識別し、優先順位付けデータ構造は、優先順でハードウェアリソースのタイプをリストし、第1のタイプのハードウェアリソースが利用可能である場合に、第1のタイプのハードウェアリソースを関数に割り当て、第1のタイプのハードウェアリソースは、優先順位付けデータ構造において最も高い優先順位を有し、第1のタイプのハードウェアリソースが利用可能でない場合に、優先順に、第2のタイプのハードウェアリソースを関数に割り当てる。
例7は、例6の半導体装置を含み、1つまたは複数の基板に結合されるロジックは、関数の実行中にテレメトリ情報を収集するものであり、テレメトリ情報に基づいて優先順位付けデータ構造を生成するものであり、第2のタイプのハードウェアリソースは、次に利用可能なタイプのハードウェアリソースであり、テレメトリ情報は、パラメータサイズおよび値、メモリ要件、実行時間、スレッドの数、または電力消費のうちの1つまたは複数を含むものであり、優先順位付けデータ構造は、プロセッサディスパッチテーブルまたはメモリ割り当てテーブルのうちの1つである。
例8は、例6の半導体装置を含み、1つまたは複数の基板に結合されるロジックは、関数の複数の実行中にテレメトリ情報を収集するものであり、テレメトリ情報に基づいて優先順位付けデータ構造を修正するものである。
例9は、例8の半導体装置を含み、1つまたは複数の基板に結合されるロジックは、第1のテレメトリ情報を第1のテレメトリレコードに記憶するものであり、第1のテレメトリ情報は、関数の第1の実行と関連付けられ、第2のテレメトリ情報を第2のテレメトリレコードに記憶するものであり、第2のテレメトリ情報は、関数の第2の実行と関連付けられる。
例10は、例8の半導体装置を含み、1つまたは複数の基板に結合されたロジックは、第1のテレメトリ情報をテレメトリレコードに記憶するものであり、第1のテレメトリ情報は、関数の第1の実行と関連付けられ、第2のテレメトリ情報はテレメトリレコードに記憶するものであり、第2のテレメトリ情報は、関数の第2の実行と関連付けられる。
例11は、例6〜10のいずれか1つの半導体装置を含み、ハードウェアリソースのタイプはプロセッサタイプである。
例12は、例6〜10のいずれか1つの半導体装置を含み、ハードウェアリソースのタイプはメモリタイプである。
例13は、一組の実行可能なプログラム命令を含む少なくとも1つのコンピュータ可読記憶媒体を含み、命令は、コンピューティングシステムによって実行されるとき、コンピューティングシステムに、関数に関連付けられる優先順位付けデータ構造を識別させ、優先順位付けデータ構造はハードウェアリソースのタイプを優先順にリストし、第1のタイプのハードウェアリソースが利用可能である場合に第1のタイプのハードウェアリソースを関数に割り当てさせ、第1のタイプのハードウェアリソースは優先順位付けデータ構造において最も高い優先順位を有し、第1のタイプのハードウェアリソースが利用可能でない場合に、優先順に、第2のタイプのハードウェアリソースを関数に割り当てさせる。
例14は、例13の少なくとも1つのコンピュータ可読記憶媒体を含み、命令は、実行されるとき、コンピューティングシステムに、関数の実行中にテレメトリ情報を収集させ、テレメトリ情報に基づいて優先順位付けデータ構造を生成させ、第2のタイプのハードウェアリソースは次に利用可能なタイプのハードウェアリソースであり、テレメトリ情報は、パラメータサイズおよび値、メモリ要件、実行時間、スレッドの数、または電力消費のうちの1つまたは複数を含み、優先順位付けデータ構造は、プロセッサディスパッチテーブルまたはメモリ割り当てテーブルのうちの1つである。
例15は、例13の少なくとも1つのコンピュータ可読記憶媒体を含み、命令は、実行されるとき、コンピューティングシステムに、関数の複数の実行中にテレメトリ情報を収集させ、テレメトリ情報に基づいて優先順位付けデータ構造を修正させる。
例16は、例15の少なくとも1つのコンピュータ可読記憶媒体を含み、命令は、実行されるとき、コンピューティングシステムに、第1のテレメトリ情報を第1のテレメトリレコードに記憶させ、第1のテレメトリ情報は、関数の第1の実行に関連付けられ、第2のテレメトリ情報を第2のテレメトリレコードに記憶させ、第2のテレメトリ情報は、関数の第2の実行に関連付けられる。
例17は、例15の少なくとも1つのコンピュータ可読記憶媒体を含み、命令は、実行されるとき、コンピューティングシステムに、第1のテレメトリ情報をテレメトリレコードに記憶させ、第1のテレメトリ情報は関数の第1の実行と関連付けられ、第2のテレメトリ情報をテレメトリレコードに記憶させ、第2のテレメトリ情報は関数の第2の実行と関連付けられる。
例18は、例13〜17のいずれか1つの少なくとも1つのコンピュータ可読記憶媒体を含み、ハードウェアリソースのタイプはプロセッサタイプである。
例19は、例13〜17のいずれか1つの少なくとも1つのコンピュータ可読記憶媒体を含み、ハードウェアリソースのタイプはメモリタイプである。
例20は、性能が高められたコンピューティングシステムを動作させる方法を含み、方法は、関数に関連付けられる優先順位付けデータ構造を識別するステップであって、優先順位付けデータ構造は優先順でハードウェアリソースタイプをリストする、ステップと、第1のタイプのハードウェアリソースが利用可能である場合に、第1のタイプのハードウェアリソースを関数に割り当てるステップであって、第1のタイプのハードウェアリソースは優先順位付けデータ構造において最も高い優先順位を有する、ステップと、第1のタイプのハードウェアリソースが利用可能でない場合に、優先順に、第2のタイプのハードウェアリソースを関数に割り当てるステップであって、ハードウェアリソースのタイプは、プロセッサタイプまたはメモリタイプのうちの1つである、ステップとを含む。
例21は、例20の方法を含み、さらに、関数の実行中にテレメトリ情報を収集するステップと、テレメトリ情報に基づいて優先順位付けデータ構造を生成するステップであって、第2のタイプのハードウェアリソースは、次に利用可能なタイプのハードウェアリソースであり、テレメトリ情報は、パラメータサイズおよび値、メモリ要件、実行時間、スレッドの数、または電力消費のうちの1つまたは複数を含み、優先順位付けデータ構造は、プロセッサディスパッチテーブルまたはメモリ割り当てテーブルのうちの1つである、ステップとを含む。
例22は、例21の方法を含み、さらに、関数の複数の実行中にテレメトリ情報を収集するステップと、テレメトリ情報に基づいて優先順位付けデータ構造を修正するステップとを含む。
例23は、例22の方法を含み、さらに、第1のテレメトリ情報を第1のテレメトリレコードに記憶することであって、第1のテレメトリ情報は関数の第1の実行に関連付けられる、記憶することと、第2のテレメトリ情報を第2のテレメトリレコードに記憶することであって、第2のテレメトリ情報は関数の第2の実行に関連付けられる、記憶することとを含む。
例24は、例22の方法を含み、さらに、第1のテレメトリ情報をテレメトリレコードに記憶するステップであって、第1のテレメトリ情報は関数の第1の実行に関連付けられる、ステップと、第2のテレメトリ情報をテレメトリレコードに記憶するステップであって、第2のテレメトリ情報は関数の第2の実行に関連付けられる、ステップとを含む。
例25は、例20〜24のいずれか1つの方法を実行するための手段を含む。
従って、本明細書に記載される技術は、CPU、GPU、FPGA、並びに他の特殊なアクセラレータおよび異種の階層型メモリサブシステムを含む異種のコンピュータシステムのためにコンピュータアプリケーションを自動的に分配するシステムの設計を可能にする。この技術は、例えば、種々のコンピューティングおよびメモリタイプにマッピングすることができるONEAPIなどの統合プログラミングモデルに基づいている。また、この技術は、遅延、帯域幅、スループット、電力消費、およびコストの点で、特定のサービスレベルアグリーメント(SLA)を有するドメイン固有のアプリケーションまたはアプリケーションに対して高度に最適化されたコンピュータシステムを設計するために使用され得る。この技術は、計算プリミティブの計算特性(例えば、性能、電力)に関する動的テレメトリおよびプロファイルフィードバックに加えて、既知のアルゴリズム、プリミティブ、およびコードレットの性能特性に関する静的な事前知識を使用し得る。従って、この技術は、最良の計算プロセッサ上で動作するようにコンピュータアプリケーションを自動的に分配し得る。また、この技術は、システムがアプリケーションを実行する際に学習するインテリジェントな方法で使用され得、その結果、自動的なアプリケーション分配のための学習システムが得られる。加えて、本明細書に記載される技術は、プログラミングの容易さに直接依存し得る、市販までの時間(TTM)を短縮し得る。また、この技術は、計算及びコストの要件を満たす計算プラットフォームの開発も可能にする。
実施形態は、全てのタイプの半導体集積回路(IC)チップでの使用に適用可能である。これらのICチップの例は、プロセッサ、コントローラ、チップセットコンポーネント、プログラマブルロジックアレイ(PLA)、メモリチップ、ネットワークチップ、システムオンチップ(SoC)、SSD/NANDコントローラASICなどを含むが、これらに限定されない。加えて、いくつかの図面では、信号線は線で表される。あるものは、より多くの構成要素信号パスを示すために異なり得る、多数の構成要素信号パスを示すために、数字ラベルを有し得る、および/または、一次情報フロー方向を示すために、1つまたは複数の端部に矢印を有し得る。しかし、これは限定する方法で解釈されるべきではない。むしろ、回路のより容易な理解を容易にするために、1つまたは複数の例示的な実施形態に関連して、このような追加の詳細が使用され得る。任意の表現された信号線は、追加情報を有するか否かにかかわらず、実際には、複数の方向に移動し得るとともに任意の適切なタイプの信号方式、例えば、差動ペア、光ファイバ線、および/またはシングルエンド線で実現されるデジタルまたはアナログ線で実現され得る1つまたは複数の信号を含む。
例示的なサイズ/モデル/値/範囲が与えられることがあるが、実施形態は同じものに限定されない。製造技術(例えば、フォトリソグラフィー)は、時間の経過とともに成熟するので、より小さなサイズのデバイスが製造されることが期待される。加えて、ICチップおよび他のコンポーネントへの良く知られた電力/接地接続は、図示および説明を簡単にするために、また実施形態の特定の態様を不明瞭にしないために、図中に示されても示されなくてもよい。さらに、構成は、実施形態を不明瞭にすることを避けるために、また、このようなブロック図の構成の実施に関する詳細が、実施形態が実施されることになるコンピューティングシステムに大きく依存するという事実を考慮して、ブロック図の形式で示され得る、すなわち、このような詳細は、当業者の範囲内であるべきである。例示的な実施形態を説明するために特定の詳細(例えば、回路)が記載されている場合、実施形態は、これらの特定の詳細を伴わずに、またはそれらの変更を伴って実施されることができることは当業者に明らかであるべきである。本願の記載は、よって、限定するものでなく例証するものとしてみなすこととする。
用語「結合される」は、本明細書において、問題の構成要素間の直接的または間接的な任意のタイプの関係を指すために使用することができ、電気的、機械的、流体的、光学的、電磁的、電気機械的または他の接続に適用することができる。さらに、用語「第1」、「第2」などは、議論を容易にするためにのみ使用することができ、特に指示がない限り、特別な時間的または年代順の意味を持たない。
この出願及び特許請求の範囲において使用されるとき、用語「のうちの1つまたは複数」によって接合されるアイテムのリストは、列挙された用語の任意の組み合わせを意味し得る。例えば、「A、B又はCのうちの1つまたは複数」という用語は、A;B;C;A及びB;A及びC;B及びC;又はA、B及びC;を意味し得る。
当業者は、前述の説明から、実施形態の広範な技術が種々の形態で実施可能であることを理解するであろう。従って、実施形態をその特定の例に関連して説明したが、図面、明細書、および以下の特許請求の範囲の検討により、他の修正が当業者に明らかになるので、実施形態の真の範囲はそのように限定されるべきではない。
Claims (29)
- コンピューティングシステムであって:
ネットワークコントローラと;
前記ネットワークコントローラに結合されたプロセッサと;
前記プロセッサに結合されるメモリであって、前記メモリは一組の実行可能なプログラム命令を含み、前記命令は、前記プロセッサによって実行されるとき、前記コンピューティングシステムに:
関数に関連付けられる優先順位付けデータ構造を識別させ、前記優先順位付けデータ構造は、ハードウェアリソースタイプを優先順にリストし、
第1のタイプのハードウェアリソースが利用可能である場合に、前記第1のタイプのハードウェアリソースを前記関数に割り当てさせ、前記第1のタイプのハードウェアリソースは、前記優先順位付けデータ構造において最も高い優先順位を有し、
前記第1のタイプのハードウェアリソースが利用可能でない場合、前記優先順に、第2のタイプのハードウェアリソースを前記関数に割り当てさせ、前記ハードウェアリソースのタイプは、プロセッサタイプ又はメモリタイプのうちの1つである、
メモリと;
を有する、
コンピューティングシステム。 - 前記命令は、実行されるとき、前記コンピューティングシステムに:
前記関数の実行中に、テレメトリ情報を収集させ;
前記テレメトリ情報に基づいて前記優先順位付けデータ構造を生成させ、前記第2のタイプのハードウェアリソースは、次に利用可能なタイプのハードウェアリソースであるものであり、前記テレメトリ情報は、パラメータサイズおよび値、メモリ要件、実行時間、スレッドの数、または電力消費のうちの1つまたは複数を含むものであり、前記優先順位付けデータ構造は、プロセッサディスパッチテーブルまたはメモリ割り当てテーブルのうちの1つであるものである;
請求項1に記載のコンピューティングシステム。 - 前記命令は、実行されるとき、前記コンピューティングシステムに:
前記関数の複数の実行中にテレメトリ情報を収集させ;
前記テレメトリ情報に基づいて前記優先順位付けデータ構造を修正させる;
請求項1に記載のコンピューティングシステム。 - 前記命令は、実行されるとき、前記コンピューティングシステムに:
第1のテレメトリ情報を第1のテレメトリレコードに記憶させ、前記第1のテレメトリ情報は、前記関数の第1の実行と関連付けられ;
第2のテレメトリ情報を第2のテレメトリレコードに記憶させ、前記第2のテレメトリ情報は、前記関数の第2の実行と関連付けられる;
請求項3に記載のコンピューティングシステム。 - 前記命令は、実行されるとき、前記コンピューティングシステムに:
第1のテレメトリ情報をテレメトリレコードに記憶させ、前記第1のテレメトリ情報は前記関数の第1の実行に関連付けられ;
第2のテレメトリ情報をテレメトリレコードに記憶させ、前記第2のテレメトリ情報は前記関数の第2の実行に関連付けられる;
請求項3に記載のコンピューティングシステム。 - 1つまたは複数の基板と、
前記1つまたは複数の基板に結合されるロジックであって、前記ロジックは、少なくとも部分的に、設定可能なロジックまたは固定機能のハードウェアロジックのうちの1つまたは複数で実装され、前記1つまたは複数の基板に結合される前記ロジックは:
関数に関連付けられる優先順位付けデータ構造を識別し、前記優先順位付けデータ構造は、優先順でハードウェアリソースのタイプをリストし;
第1のタイプのハードウェアリソースが利用可能である場合に、前記第1のタイプのハードウェアリソースを前記関数に割り当て、前記第1のタイプのハードウェアリソースは、前記優先順位付けデータ構造において最も高い優先順位を有し、
前記第1のタイプのハードウェアリソースが利用可能でない場合に、前記優先順に、第2のタイプのハードウェアリソースを前記関数に割り当てる;
半導体装置。 - 前記1つまたは複数の基板に結合される前記ロジックは:
前記関数の実行中にテレメトリ情報を収集するものであり;
前記テレメトリ情報に基づいて前記優先順位付けデータ構造を生成するものであり、前記第2のタイプのハードウェアリソースは、次に利用可能なタイプのハードウェアリソースであり、前記テレメトリ情報は、パラメータサイズおよび値、メモリ要件、実行時間、スレッドの数、または電力消費のうちの1つまたは複数を含むものであり、前記優先順位付けデータ構造は、プロセッサディスパッチテーブルまたはメモリ割り当てテーブルのうちの1つである;
請求項6に記載の半導体装置。 - 前記1つまたは複数の基板に結合される前記ロジックは:
前記関数の複数の実行中にテレメトリ情報を収集するものであり;
前記テレメトリ情報に基づいて前記優先順位付けデータ構造を修正するものである;
請求項6に記載の半導体装置。 - 前記1つまたは複数の基板に結合されるロジックは:
第1のテレメトリ情報を第1のテレメトリレコードに記憶するものであり、前記第1のテレメトリ情報は、前記関数の第1の実行と関連付けられ;
第2のテレメトリ情報を第2のテレメトリレコードに記憶するものであり、前記第2のテレメトリ情報は、前記関数の第2の実行と関連付けられる;
請求項8に記載の半導体装置。 - 前記1つまたは複数の基板に結合された前記ロジックは:
第1のテレメトリ情報をテレメトリレコードに記憶するものであり、前記第1のテレメトリ情報は、前記関数の第1の実行と関連付けられ;
第2のテレメトリ情報は前記テレメトリレコードに記憶するものであり、前記第2のテレメトリ情報は、前記関数の第2の実行と関連付けられる;
請求項8に記載の半導体装置。 - 前記ハードウェアリソースのタイプはプロセッサタイプである、
請求項6乃至10のいずれか1項に記載の半導体装置。 - 前記ハードウェアリソースのタイプはメモリタイプである、
請求項6乃至10のいずれか1項に記載の半導体装置。 - 一組の実行可能なプログラム命令を含むコンピュータプログラムであって、前記命令は、コンピューティングシステムによって実行されるとき、前記コンピューティングシステムに:
関数に関連付けられる優先順位付けデータ構造を識別させ、前記優先順位付けデータ構造はハードウェアリソースのタイプを優先順にリストし;
第1のタイプのハードウェアリソースが利用可能である場合に前記第1のタイプのハードウェアリソースを前記関数に割り当てさせ、前記第1のタイプのハードウェアリソースは前記優先順位付けデータ構造において最も高い優先順位を有し;
前記第1のタイプのハードウェアリソースが利用可能でない場合に、前記優先順に、第2のタイプのハードウェアリソースを前記関数に割り当てさせる;
コンピュータプログラム。 - 前記命令は、実行されるとき、前記コンピューティングシステムに:
前記関数の実行中にテレメトリ情報を収集させ;
前記テレメトリ情報に基づいて前記優先順位付けデータ構造を生成させ、前記第2のタイプのハードウェアリソースは次に利用可能なタイプのハードウェアリソースであるものであり、前記テレメトリ情報は、パラメータサイズおよび値、メモリ要件、実行時間、スレッドの数、または電力消費のうちの1つまたは複数を含むものであり、前記優先順位付けデータ構造は、プロセッサディスパッチテーブルまたはメモリ割り当てテーブルのうちの1つである;
請求項13に記載のコンピュータプログラム。 - 前記命令は、実行されるとき、前記コンピューティングシステムに:
前記関数の複数の実行中にテレメトリ情報を収集させ;
前記テレメトリ情報に基づいて前記優先順位付けデータ構造を修正させる;
請求項13に記載のコンピュータプログラム。 - 前記命令は、実行されるとき、前記コンピューティングシステムに:
第1のテレメトリ情報を第1のテレメトリレコードに記憶させ、前記第1のテレメトリ情報は、前記関数の第1の実行に関連付けられ;
第2のテレメトリ情報を第2のテレメトリレコードに記憶させ、前記第2のテレメトリ情報は、前記関数の第2の実行に関連付けられる;
請求項15に記載のコンピュータプログラム。 - 前記命令は、実行されるとき、前記コンピューティングシステムに:
第1のテレメトリ情報をテレメトリレコードに記憶させ、前記第1のテレメトリ情報は前記関数の第1の実行と関連付けられ;
第2のテレメトリ情報を前記テレメトリレコードに記憶させ、前記第2のテレメトリ情報は前記関数の第2の実行と関連付けられる;
請求項15に記載のコンピュータプログラム。 - 前記ハードウェアリソースのタイプはプロセッサタイプである、
請求項13乃至17のいずれか1項に記載のコンピュータプログラム。 - 前記ハードウェアリソースのタイプはメモリタイプである、
請求項13乃至17のいずれか1項に記載のコンピュータプログラム。 - 関数に関連付けられる優先順位付けデータ構造を識別するステップであって、前記優先順位付けデータ構造は優先順でハードウェアリソースタイプをリストする、ステップと;
第1のタイプのハードウェアリソースが利用可能である場合に、前記第1のタイプのハードウェアリソースを前記関数に割り当てるステップであって、前記第1のタイプのハードウェアリソースは前記優先順位付けデータ構造において最も高い優先順位を有する、ステップと;
前記第1のタイプのハードウェアリソースが利用可能でない場合に、前記優先順に、第2のタイプのハードウェアリソースを前記関数に割り当てるステップであって、前記ハードウェアリソースのタイプは、プロセッサタイプまたはメモリタイプのうちの1つである、ステップと;を含む、
方法。 - 前記関数の実行中にテレメトリ情報を収集するステップと;
前記テレメトリ情報に基づいて前記優先順位付けデータ構造を生成するステップであって、前記第2のタイプのハードウェアリソースは、次に利用可能なタイプのハードウェアリソースであり、前記テレメトリ情報は、パラメータサイズおよび値、メモリ要件、実行時間、スレッドの数、または電力消費のうちの1つまたは複数を含み、前記優先順位付けデータ構造は、プロセッサディスパッチテーブルまたはメモリ割り当てテーブルのうちの1つである、ステップと;をさらに含む、
請求項20に記載の方法。 - 前記関数の複数の実行中にテレメトリ情報を収集するステップと;
前記テレメトリ情報に基づいて前記優先順位付けデータ構造を修正するステップと;をさらに含む、
請求項21に記載の方法。 - 第1のテレメトリ情報を第1のテレメトリレコードに記憶するステップであって、前記第1のテレメトリ情報は前記関数の第1の実行に関連付けられる、ステップと;
第2のテレメトリ情報を第2のテレメトリレコードに記憶するステップであって、前記第2のテレメトリ情報は前記関数の第2の実行に関連付けられる、ステップと;をさらに含む、
請求項22に記載の方法。 - 第1のテレメトリ情報をテレメトリレコードに記憶するステップであって、前記第1のテレメトリ情報は前記関数の第1の実行に関連付けられる、ステップと;
第2のテレメトリ情報を前記テレメトリレコードに記憶するステップであって、前記第2のテレメトリ情報は前記関数の第2の実行に関連付けられる、ステップと;をさらに含む、
請求項22に記載の方法。 - 関数に関連付けられる優先順位付けデータ構造を識別する手段であって、前記優先順位付けデータ構造は、ハードウェアリソースタイプを優先順にリストする、手段と;
第1のタイプのハードウェアリソースが利用可能である場合に、前記第1のタイプのハードウェアリソースを前記関数に割り当てる手段であって、前記第1のタイプのハードウェアリソースは、前記優先順位付けデータ構造において最も高い優先順位を有する、手段と;
前記第1のタイプのハードウェアリソースが利用可能でない場合、前記優先順に、第2のタイプのハードウェアリソースを前記関数に割り当てる手段であって、前記ハードウェアリソースのタイプは、プロセッサタイプ又はメモリタイプのうちの1つである、手段と;
を有する、
半導体装置。 - 前記関数の複数の実行中にテレメトリ情報を収集する手段と;
前記テレメトリ情報に基づいて前記優先順位付けデータ構造を生成する手段であって、前記第2のタイプのハードウェアリソースは、次に利用可能なタイプのハードウェアリソースであり、前記テレメトリ情報は、パラメータサイズおよび値、メモリ要件、実行時間、スレッドの数、または電力消費のうちの1つまたは複数を含み、前記優先順位付けデータ構造は、プロセッサディスパッチテーブルまたはメモリ割り当てテーブルのうちの1つである、手段と;をさらに有する、
請求項25に記載の半導体装置。 - 前記関数の複数の実行中にテレメトリ情報を収集する手段と;
前記テレメトリ情報に基づいて前記優先順位付けデータ構造を修正する手段と;をさらに有する、
請求項26に記載の半導体装置。 - 第1のテレメトリ情報を第1のテレメトリレコードに記憶する手段であって、前記第1のテレメトリ情報は前記関数の第1の実行に関連付けられる、手段と;
第2のテレメトリ情報を第2のテレメトリレコードに記憶する手段であって、前記第2のテレメトリ情報は前記関数の第2の実行に関連付けられる、手段と;をさらに有する、
請求項27に記載の半導体装置。 - 第1のテレメトリ情報をテレメトリレコードに記憶する手段であって、前記第1のテレメトリ情報は前記関数の第1の実行に関連付けられる、手段と;
第2のテレメトリ情報を前記テレメトリレコードに記憶する手段であって、前記第2のテレメトリ情報は前記関数の第2の実行に関連付けられる、手段と;をさらに有する、
請求項27に記載の半導体装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/722,778 US11520501B2 (en) | 2019-12-20 | 2019-12-20 | Automated learning technology to partition computer applications for heterogeneous systems |
US16/722,778 | 2019-12-20 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2021099785A true JP2021099785A (ja) | 2021-07-01 |
Family
ID=70326675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020155791A Pending JP2021099785A (ja) | 2019-12-20 | 2020-09-16 | コンピュータアプリケーションを異種システムのために分配する自動学習技術 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11520501B2 (ja) |
JP (1) | JP2021099785A (ja) |
KR (1) | KR20210080173A (ja) |
CN (1) | CN113010468A (ja) |
DE (1) | DE102020130528A1 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200136921A1 (en) * | 2019-09-28 | 2020-04-30 | Intel Corporation | Methods, system, articles of manufacture, and apparatus to manage telemetry data in an edge environment |
US11948010B2 (en) * | 2020-10-12 | 2024-04-02 | International Business Machines Corporation | Tag-driven scheduling of computing resources for function execution |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101499021A (zh) * | 2008-01-31 | 2009-08-05 | 国际商业机器公司 | 在多个虚拟机上动态分配资源的方法和装置 |
US20110035802A1 (en) * | 2009-08-07 | 2011-02-10 | Microsoft Corporation | Representing virtual object priority based on relationships |
US9086902B2 (en) * | 2012-12-18 | 2015-07-21 | International Business Machines Corporation | Sending tasks between virtual machines based on expiration times |
US20170031622A1 (en) * | 2015-07-31 | 2017-02-02 | Netapp, Inc. | Methods for allocating storage cluster hardware resources and devices thereof |
US10990445B2 (en) * | 2017-08-04 | 2021-04-27 | Apple Inc. | Hardware resource allocation system for allocating resources to threads |
US20200136921A1 (en) * | 2019-09-28 | 2020-04-30 | Intel Corporation | Methods, system, articles of manufacture, and apparatus to manage telemetry data in an edge environment |
-
2019
- 2019-12-20 US US16/722,778 patent/US11520501B2/en active Active
-
2020
- 2020-09-16 JP JP2020155791A patent/JP2021099785A/ja active Pending
- 2020-09-24 CN CN202011019439.0A patent/CN113010468A/zh active Pending
- 2020-09-25 KR KR1020200124788A patent/KR20210080173A/ko active Search and Examination
- 2020-11-19 DE DE102020130528.1A patent/DE102020130528A1/de active Pending
Also Published As
Publication number | Publication date |
---|---|
DE102020130528A1 (de) | 2021-06-24 |
US20200133537A1 (en) | 2020-04-30 |
US11520501B2 (en) | 2022-12-06 |
KR20210080173A (ko) | 2021-06-30 |
TW202129492A (zh) | 2021-08-01 |
CN113010468A (zh) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210382754A1 (en) | Serverless computing architecture for artificial intelligence workloads on edge for dynamic reconfiguration of workloads and enhanced resource utilization | |
JP2020537784A (ja) | ニューラルネットワークアクセラレーションのための機械学習ランタイムライブラリ | |
US20210390460A1 (en) | Compute and memory based artificial intelligence model partitioning using intermediate representation | |
US20140068581A1 (en) | Optimized division of work among processors in a heterogeneous processing system | |
US20210319298A1 (en) | Compute-based subgraph partitioning of deep learning models for framework integration | |
JP2021099782A (ja) | ファンクション・アズ・ア・サービスコンピューティングのための統一プログラミングモデル | |
JP2021099785A (ja) | コンピュータアプリケーションを異種システムのために分配する自動学習技術 | |
US20210365804A1 (en) | Dynamic ai model transfer reconfiguration to minimize performance, accuracy and latency disruptions | |
EP3879406A1 (en) | Simulated annealing-based memory allocations | |
US20230333999A1 (en) | Maximizing on-chip data reuse in compute in memory and compute near memory architectures | |
JP7322345B2 (ja) | シナリオプロファイルベースのパーティショニングおよびアプリケーションコードの管理 | |
US20210406777A1 (en) | Autonomous allocation of deep neural network inference requests in a cluster with heterogeneous devices | |
US11249910B2 (en) | Initialization and management of class of service attributes in runtime to optimize deep learning training in distributed environments | |
US11934809B2 (en) | Multi-stage automatic compilation for vector computations in applications | |
US20210319369A1 (en) | Multi-level caching for dynamic deep learning models | |
US11941437B2 (en) | Graph partitioning to exploit batch-level parallelism | |
US20230115542A1 (en) | Programmable matrix multiplication engine | |
US11640326B2 (en) | Ensemble based cluster tuning and framework fallback for AI accelerators using telemetry, compute, and temperature metrics | |
US20210374554A1 (en) | Graph context-based operator checks to improve graph clustering and execution in ai accelerator framework integration | |
US20220066923A1 (en) | Dynamically configurable multi-mode memory allocation in an accelerator multi-core system on chip | |
US11663056B2 (en) | Unified programming interface for regrained tile execution | |
JP7397179B2 (ja) | 階層化オブジェクトメモリ配置のためのランタイム装置の管理 | |
US20230027351A1 (en) | Temporal graph analytics on persistent memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20201207 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20230913 |