JP2013134670A - 情報処理装置及び情報処理方法 - Google Patents
情報処理装置及び情報処理方法 Download PDFInfo
- Publication number
- JP2013134670A JP2013134670A JP2011285496A JP2011285496A JP2013134670A JP 2013134670 A JP2013134670 A JP 2013134670A JP 2011285496 A JP2011285496 A JP 2011285496A JP 2011285496 A JP2011285496 A JP 2011285496A JP 2013134670 A JP2013134670 A JP 2013134670A
- Authority
- JP
- Japan
- Prior art keywords
- information processing
- kernel
- core
- block
- kernel function
- 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.)
- Granted
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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Advance Control (AREA)
Abstract
【課題】十分な並列度を達成できる情報処理装置及び情報処理方法を提供すること。
【解決手段】実施形態によれば、情報処理装置は複数のコアブロックからなるプロセッサと、プロセッサに接続され、コマンドキューとタスク管理構造情報とを格納するメモリとを具備する。コマンドキューには複数のカーネル関数を束ねた一連のカーネル関数がセットされる。タスク管理構造情報は先行するカーネル関数の返り値と後続のカーネル関数の引数とをつなぐことによりカーネル関数の実行順序を規定する情報である。プロセッサのコアブロックは異なるカーネル関数を実行可能である。
【選択図】図3
【解決手段】実施形態によれば、情報処理装置は複数のコアブロックからなるプロセッサと、プロセッサに接続され、コマンドキューとタスク管理構造情報とを格納するメモリとを具備する。コマンドキューには複数のカーネル関数を束ねた一連のカーネル関数がセットされる。タスク管理構造情報は先行するカーネル関数の返り値と後続のカーネル関数の引数とをつなぐことによりカーネル関数の実行順序を規定する情報である。プロセッサのコアブロックは異なるカーネル関数を実行可能である。
【選択図】図3
Description
本発明の実施形態は並列処理を行う情報処理装置及び情報処理方法に関する。
近年、1つのプロセッサの中に複数のコアが存在し、複数の処理を並列に実行するマルチコアプロセッサが実用化されている。大量の演算が必要とされる画像処理用のグラフィックプロセッサユニット(GPU)にはマルチコアプロセッサが使われることが多い。
従来のGPU等の情報処理装置の並列処理では、SPMD(Single Process Multiple DataあるいはSingle Program Multiple Data)モデルの使用が一般的である。SPMDモデルは、1つの命令シーケンス(プログラム)で多くのデータを演算する形態である。そのため、SPMDモデルの並列処理はデータ並列処理とも呼ばれる。
SPMDモデルでデータ並列処理を行うためには、情報処理装置がアクセスできるデバイスメモリ上に大規模なデータを配置し、1つのデータ要素の演算を実行するカーネルと呼ばれる関数をデータの大きさの指定と共に情報処理装置のキューに投入する。これにより、情報処理装置の多くのコアで同時に並列処理を実行することが可能である。カーネルでは、自分が演算すべきデータを特定するためのID(例えば画素アドレス)を得るためのAPI(Application Programming Interface)が定義されている。カーネルは、このIDに従って、自分が演算すべきデータに対してアクセスして、計算等の処理を行い、その結果を所定の領域に書き出す。このIDは階層構造を有しており、グローバルID=ブロックID×ローカルスレッド数+ローカルIDという関係になっている。
これに対し、ブロック単位で複数の命令シーケンスを実行可能な情報処理装置が開発されたため、複数の命令シーケンスを同時に実行できるようになった。この機能を活用するために、複数のカーネルをマージしたカーネルをキューに投入し、ブロックIDに従って別の処理を実行することで、複数の異なるタスクを同時に並列実行する仕組みが提案されている。このような並列処理はタスク並列処理と呼ばれる。この方式は、情報処理装置のブロック内ではやはり同じ命令を実行しないと著しく性能が劣化するが、ブロックが異なれば別の命令シーケンスを実行しても性能に大きな影響がないという性質を考慮したマルチタスク実行方式である。
上記のタスク並列処理では、同時に実行するカーネルの実行時間が同じでないと、次のカーネル実行までにCPUの利用率が下がってしまうという問題がある。この問題を解決するために、ホストプロセッサからデバイスメモリにタスクをエンキューすることにより、次のタスクを入手して対応するカーネル関数を実行する仕組みも提案されている。また、デバイスメモリ上のキューに情報処理装置の処理の進展にしたがって新しいタスクをエンキューするという提案もある。
一般的に、並列処理の例が単純なデータ並列処理である場合は、SPMDモデルで十分であるが、並列度が1桁〜2桁程度しかない場合は、SPMDモデルでは現行の情報処理装置の演算機能をフルに稼動させることはできない。そこで、タスク並列処理のMPMDモデルを使用して複数の異なるタスクを実行することが考えられるが、MPMDモデルで複数のタスクを同時に実行するときに、各タスクの実行順序の前後関係を正しく保ちながら、1つの実行キューに処理を投入するプログラムをコーディングするのは手間がかかり、バグが入り込みやすい。特に、実行タイミングに関する不具合は、問題点を特定するのが非常に困難であり、場合によっては、システム運用開始後暫く経過してから問題が発覚することがある。このため、タスク並列処理のMPMDモデルで十分な並列性を求めようとすると、実装するタスク並列のプログラムの制約が大きくなり、結果的にデータ並列処理のSPMDモデルと同程度の並列度となることが多い。
マリザベル・ゲバラ等(Marisabel Guevara et al.)著、「CUDAスケジューラにおけるタスク並列化(Enabling Task Parallelism in CUDA Scheduler)」、エマージングアーキテクチャのプログラミングモデル学会(PMEA)、2009年9月、69-76頁、[ 平成23 年12月19 日検索]、インターネット< URL :http://www.cs.virginia.edu/kim/docs/pmea09.pdf>
ロング・チェン等(Long Chen et al.)著、「シングル・マルチGPUシステムの動的負荷バランス(Dynamic Load Balancing on Single- and Multi-GPU Systems)」、[平成23年12月19日検索]、<http://cacs.usc.edu/education/cs653/Chen-LoadBalanceGPU-IPDPS10.pdf>
従来のタスク並列処理の情報処理装置は十分な並列度が達成できないことが多いという課題があった。
本発明の目的は十分な並列度を達成できる情報処理装置及び情報処理方法を提供することである。
実施形態によれば、情報処理装置は複数のコアブロックからなるプロセッサと、プロセッサに接続され、コマンドキューとタスク管理構造情報とを格納するメモリとを具備する。コマンドキューには複数のカーネル関数を束ねた一連のカーネル関数がセットされる。タスク管理構造情報は先行するカーネル関数の返り値と後続のカーネル関数の引数とをつなぐことによりカーネル関数の実行順序を規定する情報である。プロセッサのコアブロックは異なるカーネル関数を実行可能である。
第1の実施形態
以下、第1の実施形態について図面を参照して説明する。
以下、第1の実施形態について図面を参照して説明する。
図1に実施形態のシステム全体の構成の一例を示す。例えば、GPU等である計算デバイス10はホストCPU12により制御される。計算デバイス10はマルチコアプロセッサからなり、多数のコアブロックに分割されている。図1の例では、計算デバイス10は8つのコアブロック34に分割される。計算デバイス10はコアブロック34単位に別のコンテキストを管理できる。コアブロックは16個のコアからなる。コアブロックあるいはコアを並列に動作させることにより、高速なタスク並列処理が可能となる。
コアブロック34はブロックIDにより識別され、図1の例では、ブロックIDは0〜7である。ブロック内の16個のコアはローカルIDにより識別され、ローカルIDは0〜15である。ローカルIDが0のコアはブロックの代表コア32と称される。
ホストCPU12もマルチコアプロセッサであってもよい。図1の例では、デュアルコアプロセッサとする。ホストCPU12は3段階のキャッシュメモリ階層を持つ。メインメモリ16と接続されるL1キャッシュ22はホストCPU12内に設けられ、L2キャッシュ26a、26bと接続される。L2キャッシュ26a、26bはそれぞれCPUコア24a、24bに接続される。L1キャッシュ22とL2キャッシュ26a、26bはハードウェアによる同期機構を持ち、同一アドレスへのアクセスの際に必要な同期処理が行われる。L2キャッシュ26a、26bはL1キャッシュ22で参照されるアドレスのデータを保持し、キャッシュミスが生じた場合などにはハードウェアによる同期機構により、メインメモリ16との間で必要な同期処理が行われる。
計算デバイス10によりアクセスできるデバイスメモリ14が計算デバイス10に接続され、ホストCPU12にメインメモリ16が接続される。メインメモリ16とデバイスメモリ14の2つのメモリが接続されているので、計算デバイス10で処理を実行する前後で、デバイスメモリ14とメインメモリ16とでデータのコピー(同期化)を行う。このため、メインメモリ16とデバイスメモリ14とが互いに接続されている。しかし、複数の処理を連続して実行する場合、1つの処理毎にコピーを実行する必要はない。
図2はシステム構成の他の例を示す図である。ここでは、デバイスメモリ14を単独で設けずに、計算デバイス10とホストCPU12がメインメモリ16を共有し、メインメモリ16内に図1のデバイスメモリ14と等価なデバイスメモリ領域14Bが設けられる。この場合は、デバイスメモリとメインメモリとでデータのコピーを行う必要がない。
図3に並列処理の概略を示す。複数のカーネルを並列処理するプログラム(並列コード)は以下に示すようにデータフロー言語で記述される。この例ではif文の実装例を示しており、カーネル関数Kr0,Kr1,Kr2,Kr3,Kr4,Kr5の呼び出しシーケンスで構成され、引数と返り値で順序関係が規定されている。A[0]の値によって、呼び出されるカーネル関数がKr3かKr4か切り替わる。
A=Kr0(L,M,P);
B=Kr1(Q);
C=Kr2(A,B);
if(A[0]==0)
D=Kr3(R);
else
D=Kr4(S);
E=Kr5(D,C);
この並列コードをコンパイルした例が図3のバイトコードであり、バイトコードはデバイスメモリ10に転送される。カーネル関数Kr0に関するバイトコードは6バイトである。バイトコードはインタープリタにより解釈され、実行される。バイトコードはマシン非依存であり、異なるアーキテクチャの計算デバイスでもシームレスに並列処理が可能である。計算デバイス10で1つのデータ要素の演算を実行する処理単位であるカーネルはカーネルコードの束としてまとめられ、デバイスメモリ14内に設けられるコマンドキュー18に投入される。カーネルコードKr0の束はカーネル関数Kr0の実態、計算デバイス上で実行する計算プログラムの本体(例えば行列の掛け算やベクトルの内積等)である。バイトコードは、これらのカーネル関数を計算デバイスのブロックに割り当てて実行するための手順を実行するためのプログラムである。このカーネルコードの束は1つの命令シーケンス(プログラム)であり、図3の並列処理はデータ並列処理であり、SPMDモデルである。カーネルコードの束のエントリアドレスにはインタープリタプログラムが配置される。
B=Kr1(Q);
C=Kr2(A,B);
if(A[0]==0)
D=Kr3(R);
else
D=Kr4(S);
E=Kr5(D,C);
この並列コードをコンパイルした例が図3のバイトコードであり、バイトコードはデバイスメモリ10に転送される。カーネル関数Kr0に関するバイトコードは6バイトである。バイトコードはインタープリタにより解釈され、実行される。バイトコードはマシン非依存であり、異なるアーキテクチャの計算デバイスでもシームレスに並列処理が可能である。計算デバイス10で1つのデータ要素の演算を実行する処理単位であるカーネルはカーネルコードの束としてまとめられ、デバイスメモリ14内に設けられるコマンドキュー18に投入される。カーネルコードKr0の束はカーネル関数Kr0の実態、計算デバイス上で実行する計算プログラムの本体(例えば行列の掛け算やベクトルの内積等)である。バイトコードは、これらのカーネル関数を計算デバイスのブロックに割り当てて実行するための手順を実行するためのプログラムである。このカーネルコードの束は1つの命令シーケンス(プログラム)であり、図3の並列処理はデータ並列処理であり、SPMDモデルである。カーネルコードの束のエントリアドレスにはインタープリタプログラムが配置される。
デバイスメモリ14にはタスク管理構造(グラフ構造)も格納される。タスク管理構造はバイトコードに基づいて計算デバイス10により作成されるもので、先行するカーネル関数の返り値と、後続のカーネル関数の引数とを繋ぐことによってカーネル関数の実行の前後関係を表現するものである。これにより、本来の並列アルゴリズムのデータフローを自然な形で表現するとともに、プログラム実行時に最大限の並列性を引き出すことが可能となる。
計算デバイス10上の並列処理の一例のフローチャートを図4に示す。処理シーケンスは計算デバイス10のどのコアで処理されるかに応じて異なる。図4の左側のシーケンスはブロックIDが0のコアブロック34の代表コア32のシーケンスであり、中央はブロックIDが0以外(1〜7)のコアブロック34の代表コア32のシーケンスであり、右側は代表コア32以外のコアのシーケンスである。各コアブロックの代表コア32がインタープリタのコードを交互に実行する。
ブロックID=0のコアブロック34の代表コア32はブロック100でプログラムカウンタをエントリポイントにセットする。すなわち、カーネル関数Kr0に関するバイトコードの位置にエントリポイントがセットされる。
ブロックID=0のコアブロック34の代表コア32がプログラムカウンタに従い、ブロック104でバイトコードを読み出す。ここでは、カーネル関数Kr0に関するバイトコードKr0、A、I、M、P、rangeAが読み出される。
読み出したバイトコードがカーネル関数であるか否かブロック106で判定する。カーネル関数である場合、ブロック108でデバイスメモリ14上にカーネル関数に関するタスク管理構造(図3参照)を作成し、タスクをブロックに割り当てる。タスクはブロック単位でタスク管理構造に登録されてもよい。次に、バイトコードの実行を退避し、自分のブロックID(ここでは、0)+カーネル関数の実行に必要なブロックサイズ(ここでは、3つの引数I、M、P分の3、この情報はバイトコードのrangeAというオペランドから取得)をnextIDに設定することで、カーネル関数Kr0の実行に必要なコアブロックの数(=3)を確保する。バイトコードのインクリメントは、ブロック124またはブロック110で実行される。この時のインクリメントサイズは、現在実行しているバイトコードのサイズ(最初の命令の場合は、6バイト)となる。ブロックID=0〜3の3つのコアブロックがカーネル関数Kr0に割り当てられる。タスク管理構造はタスクの実行順序を制御し、デバイスメモリ上で一連の処理を遂行する。タスク管理構造はタスクの実行順序を保証するためにキューまたはグラフ構造を持つ。ここでは、グラフ構造が採用されている。キューの場合はインオーダーで実行制御ができ、グラフ構造の場合はアウトオブオーダーで実行制御ができる。言い換えると、キューではタスクをキューにつないだ順でのみタスクの開始の順序が制御できないが、グラフ構造の場合は後から登録したものでも、実行開始可能になったものからブロックを割り当てて処理を開始することができる。
ブロック110でプログラムカウンタをインクリメント(+1)し、次の命令のアドレス(カーネル関数Kr1に関するバイトコードの位置)に設定する。
ブロック112でインタープリタの実行状態(インタープリタのコンテキスト)をメモリに退避する。
ブロック114でnextIDのスレッドを起動する。ここで、スレッドID、ブロックID、ローカルID、ブロックサイズについて説明する。OpenCLではブロックのことをワークグループと称する。まず、通常、計算デバイスでのカーネル実行では、スレッドサイズを指定する。スレッドサイズ分のスレッドが起動される。図の例では、たとえば16×8=128スレッドで起動したとする。この時、128個のスレッドは、スレッドIDが0〜127のIDが割り当てられる。最初の0〜15の16個がブロックID=0のブロックで実行開始され、次の16〜31の16個のスレッドがブロックID=1のブロックで実行開始される。この16〜31のスレッドは、ローカルIDは0〜15で、ブロックサイズは16である。このとき、
スレッドID=ブロックID×ブロックサイズ+ローカルID
という関係になる。
スレッドID=ブロックID×ブロックサイズ+ローカルID
という関係になる。
代表コアと表現しているスレッドはローカルIDが0のスレッドである。
nextIDのスレッドとは、実施例でいえばスレッドIDが16×3=48のスレッドである。
ブロック116で自分のブロックIDからnextID−1のブロックIDに含まれるスレッドを起動し、ブロックIDがnextID(ここでは、3)であるコアブロックの代表コア32にインタープリタの処理を引き継ぐ。
ブロック118で引数(L、M、P)からデータIDを取得し、自分のブロックIDから必要なブロック数(=3)のコアブロックを用いてカーネル関数Kr0の処理を実行する。
ブロック116の後、ブロック150でローカルIDが0(代表コア)であるか否かを判定する。ローカルIDが0(代表コア)である場合は、ブロック130でインタープリタのロックを待ち、ブロック132でカーネル関数が実行できる状態(引数のデータが全て計算済み)であるか否かを判定する。カーネル関数が実行できる状態の場合は、ブロック134でカーネル関数が実行される。その後、ブロック130に戻る。
カーネル関数が実行できる状態ではない場合は、ブロック102に戻り、インタープリタをロードする。
ブロック116でインタープリタの処理を引き継いだ次のコアブロック(ここでは、ブロックID=3)の代表コアは、バイトコードの解釈実行を続け、実行可能なカーネル関数(ここでは、カーネル関数Kr1)を見つけると、最初の代表コアと同様にタスク管理構造にデータを追加し、必要なブロックを確保し、インタープリタ処理を次の代表コアに引き継ぎ、カーネル関数Kr1の実行(ブロック134)に遷移する。
ブロック111で、カーネル関数に相当するバイトコードの実行を続けるか否か判定し、実行を続ける(実行可能ある)場合は、ブロック104に戻り、実行可能でない場合(引数のデータすべてが計算済みでない)は、タスク管理構造に必要なデータを追加してバイトコードの実行を続ける。
カーネル関数の実行(ブロック134)を完了すると、最初に起動した代表コアは、ブロック135でタスク管理構造のデータをアップデートし、実行可能なカーネル関数が見つかれば、引き続きカーネル関数の実行を行う。
ブロック150で非代表コアであると判定されたコアは、カーネル関数の実行待ち(ブロック140)とカーネル関数実行(ブロック142)の状態を行き来する。
ブロック106でバイトコードがカーネル関数ではないと判定された場合は、ブロック122でバイトコードを実行し、ブロック124でプログラムカウンタをインクリメントし、ブロック104に戻る。
このように、計算デバイス14のブロックIDが0のコアブロックはバイトコードを読み出して、インタープリタを実行し、実行可能なカーネル関数を見つけると、タスク管理構造を生成し、カーネル関数の実行に必要な数のコアブロックを確保した後、インタープリタの処理を次のコアブロックに引き継ぐとともに、確保したコアブロックに対応するスレッドと共にカーネル関数の実行を始める。ただし、カーネル関数の引数のデータ全てが計算済みではない場合(カーネル関数に相当するバイトコードが実行可能ではない場合)は、タスク管理構造に必要なデータを追加して、バイトコードの実行を続ける。インタープリタの処理を引き継いだコアブロックも最初のコアブロックと同様な動作を実行する。
実施形態は、並列コードをバイトコードに変換することによりホストCPU/計算デバイスのシームレスな並列処理を達成したが、計算デバイスのみで処理する場合は、バイトコードではなく特定のデータ構造に変換して処理することも可能である。
以上説明したように、第1の実施形態によれば、計算デバイスはデバイスメモリ上に先行するカーネル関数の返り値と、後続のカーネル関数の引数とを繋ぐことによってカーネル関数の実行の前後関係を表現するタスク管理構造を定義することにより、計算デバイスのコアブロックに適切にカーネル関数を割り振ることができ、カーネル関数を並列に実行することができ、プログラム実行時に最大限の並列性を引き出すことが可能となる。
計算デバイスがカーネル関数の実行順序をホストCPUの介在なしに自律的に制御するので、SPMDのAPIのみしかサポートしていない計算デバイスにおいても、またデータ並列性が十分でないアルゴリズムであっても、計算デバイスを有効に活用して高い性能を得ることができる。
計算デバイスが要求する並列度に満たない複雑なアルゴリズムであっても、並列処理に起因するタイミングバグの発生を防ぐと同時に、タスク並列実行によって計算デバイスの利用効率を高めることが可能となる。
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
10…GPU、12…ホストCPU、14…デバイスメモリ、16…メインメモリ、18…コマンドキュー、24a,24b…CPUコア、32…代表コア、34…コアブロック。
実施形態によれば、情報処理装置は複数のコアブロックからなるプロセッサと、プロセッサに接続され、コマンドキューとタスク管理構造情報とを格納するメモリとを具備する。コマンドキューには1つの命令シーケンスを構成する複数のカーネル関数からなる一連のカーネル関数がセットされる。タスク管理構造情報は先行するカーネル関数の返り値と後続のカーネル関数の引数とをつなぐことによりカーネル関数の実行順序を規定する情報である。プロセッサのコアブロックは異なるカーネル関数を実行可能である。
Claims (6)
- 複数のコアブロックからなるプロセッサと、
前記プロセッサに接続され、コマンドキューとタスク管理構造情報とを格納するメモリと、
を具備する情報処理装置であって、
前記コマンドキューには複数のカーネル関数を束ねた一連のカーネル関数がセットされ、
前記タスク管理構造情報は先行するカーネル関数の返り値と後続のカーネル関数の引数とをつなぐことによりカーネル関数の実行順序を規定する情報であり、
前記プロセッサのコアブロックは異なるカーネル関数を実行可能である情報処理装置。 - 前記コマンドキューの一連のカーネル関数のエントリーアドレスにはインタープリタが配置される請求項1記載の情報処理装置。
- 前記複数のコアブロックの各々の所定のコアが前記インタープリタを実行し、残りのコアはカーネル関数の実行待ち状態と、カーネル関数の実行状態とを繰り返す請求項2記載の情報処理装置。
- 前記インタープリタがカーネル関数を読み出すと、前記複数のコアブロックの所定のコアブロックの所定のコアはカーネル関数に関するデータを前記タスク管理構造情報に追加し、カーネル関数の実行に必要な数のコアブロックを確保し、インタープリタの処理を次のコアブロックに引き継ぐ請求項3記載の情報処理装置。
- 前記インタープリタが読み出したカーネル関数の引数が計算済みではない場合は、カーソル関数の実行待ち状態とされる請求項4記載の情報処理装置。
- 複数のコアブロックからなるプロセッサと、前記プロセッサに接続されるメモリとを具備する情報処理装置の情報処理方法であって、
前記メモリに設けられたコマンドキューに複数のカーネル関数を束ねた一連のカーネル関数をセットし、
先行するカーネル関数の返り値と後続のカーネル関数の引数とをつなぐことによりカーネル関数の実行順序を規定するタスク管理構造情報を前記メモリに格納し、
前記プロセッサのコアブロックが異なるカーネル関数を実行可能である情報処理方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011285496A JP5238876B2 (ja) | 2011-12-27 | 2011-12-27 | 情報処理装置及び情報処理方法 |
US13/587,688 US20130166887A1 (en) | 2011-12-27 | 2012-08-16 | Data processing apparatus and data processing method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2011285496A JP5238876B2 (ja) | 2011-12-27 | 2011-12-27 | 情報処理装置及び情報処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2013134670A true JP2013134670A (ja) | 2013-07-08 |
JP5238876B2 JP5238876B2 (ja) | 2013-07-17 |
Family
ID=48655737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2011285496A Expired - Fee Related JP5238876B2 (ja) | 2011-12-27 | 2011-12-27 | 情報処理装置及び情報処理方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20130166887A1 (ja) |
JP (1) | JP5238876B2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018074187A1 (ja) * | 2016-10-19 | 2018-04-26 | 日立オートモティブシステムズ株式会社 | 車両制御装置 |
JP2018106709A (ja) * | 2016-12-27 | 2018-07-05 | 三星電子株式会社Samsung Electronics Co.,Ltd. | OpenCLカーネルを処理する方法、及びそれを遂行するコンピューティング装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003263331A (ja) * | 2002-03-07 | 2003-09-19 | Toshiba Corp | マルチプロセッサシステム |
JP2010079622A (ja) * | 2008-09-26 | 2010-04-08 | Hitachi Ltd | マルチコアプロセッサシステム、および、そのタスク制御方法 |
JP2010108153A (ja) * | 2008-10-29 | 2010-05-13 | Fujitsu Ltd | スケジューラ、プロセッサシステム、プログラム生成方法およびプログラム生成用プログラム |
JP2011054161A (ja) * | 2009-08-31 | 2011-03-17 | Internatl Business Mach Corp <Ibm> | マルチコア/スレッドのワークグループ計算スケジューラ |
JP2011081539A (ja) * | 2009-10-06 | 2011-04-21 | Internatl Business Mach Corp <Ibm> | 並列化処理方法、システム、及びプログラム |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7805392B1 (en) * | 2005-11-29 | 2010-09-28 | Tilera Corporation | Pattern matching in a multiprocessor environment with finite state automaton transitions based on an order of vectors in a state transition table |
US9189233B2 (en) * | 2008-11-24 | 2015-11-17 | Intel Corporation | Systems, apparatuses, and methods for a hardware and software system to automatically decompose a program to multiple parallel threads |
JP5636109B2 (ja) * | 2010-08-23 | 2014-12-03 | エンパイア テクノロジー ディベロップメント エルエルシー | コンテキスト切り替え |
US8937622B2 (en) * | 2010-09-20 | 2015-01-20 | Qualcomm Incorporated | Inter-processor communication techniques in a multiple-processor computing platform |
US9507632B2 (en) * | 2010-12-15 | 2016-11-29 | Advanced Micro Devices, Inc. | Preemptive context switching of processes on ac accelerated processing device (APD) based on time quanta |
US20130155077A1 (en) * | 2011-12-14 | 2013-06-20 | Advanced Micro Devices, Inc. | Policies for Shader Resource Allocation in a Shader Core |
-
2011
- 2011-12-27 JP JP2011285496A patent/JP5238876B2/ja not_active Expired - Fee Related
-
2012
- 2012-08-16 US US13/587,688 patent/US20130166887A1/en not_active Abandoned
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003263331A (ja) * | 2002-03-07 | 2003-09-19 | Toshiba Corp | マルチプロセッサシステム |
JP2010079622A (ja) * | 2008-09-26 | 2010-04-08 | Hitachi Ltd | マルチコアプロセッサシステム、および、そのタスク制御方法 |
JP2010108153A (ja) * | 2008-10-29 | 2010-05-13 | Fujitsu Ltd | スケジューラ、プロセッサシステム、プログラム生成方法およびプログラム生成用プログラム |
JP2011054161A (ja) * | 2009-08-31 | 2011-03-17 | Internatl Business Mach Corp <Ibm> | マルチコア/スレッドのワークグループ計算スケジューラ |
JP2011081539A (ja) * | 2009-10-06 | 2011-04-21 | Internatl Business Mach Corp <Ibm> | 並列化処理方法、システム、及びプログラム |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018074187A1 (ja) * | 2016-10-19 | 2018-04-26 | 日立オートモティブシステムズ株式会社 | 車両制御装置 |
JP2018067135A (ja) * | 2016-10-19 | 2018-04-26 | 日立オートモティブシステムズ株式会社 | 車両制御装置 |
JP2018106709A (ja) * | 2016-12-27 | 2018-07-05 | 三星電子株式会社Samsung Electronics Co.,Ltd. | OpenCLカーネルを処理する方法、及びそれを遂行するコンピューティング装置 |
Also Published As
Publication number | Publication date |
---|---|
JP5238876B2 (ja) | 2013-07-17 |
US20130166887A1 (en) | 2013-06-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11500778B2 (en) | Prefetch kernels on data-parallel processors | |
US9830156B2 (en) | Temporal SIMT execution optimization through elimination of redundant operations | |
CN103197953B (zh) | 推测执行和回滚 | |
US8522000B2 (en) | Trap handler architecture for a parallel processing unit | |
TWI529626B (zh) | 在複數執行緒處理單元中的效率式記憶體虛擬化 | |
TWI628594B (zh) | 用戶等級分叉及會合處理器、方法、系統及指令 | |
TWI512466B (zh) | 在複數執行緒處理單元中的效率式記憶體虛擬化 | |
TWI525437B (zh) | 在複數執行緒處理單元中的效率式記憶體虛擬化 | |
TWI466027B (zh) | 解決執行緒發散的方法及系統 | |
US20070150895A1 (en) | Methods and apparatus for multi-core processing with dedicated thread management | |
TWI221250B (en) | Multi-processor system | |
JP2014106715A (ja) | 演算処理装置の制御プログラム、演算処理装置の制御方法および演算処理装置 | |
JP2007200288A (ja) | 実行スレッドをグループ化するためのシステム及び方法 | |
US10318261B2 (en) | Execution of complex recursive algorithms | |
US11507386B2 (en) | Booting tiles of processing units | |
CN110908716B (zh) | 一种向量聚合装载指令的实现方法 | |
Sunitha et al. | Performance improvement of CUDA applications by reducing CPU-GPU data transfer overhead | |
EP3985503A1 (en) | Mask operation method for explicit independent mask register in gpu | |
TWI489289B (zh) | 分散作業的預先排程重播 | |
JP5238876B2 (ja) | 情報処理装置及び情報処理方法 | |
JP2008269114A (ja) | マルチスレッドプロセッサ及びそれに用いるスレッド間同期操作方法 | |
KR101420592B1 (ko) | 컴퓨터 시스템 | |
WO2016201699A1 (zh) | 指令处理方法及设备 | |
CN111752614A (zh) | 一种处理器、指令执行设备及方法 | |
TWI428833B (zh) | 多執行緒處理器及其指令執行及同步方法及其電腦程式產品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20130305 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20130401 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160405 Year of fee payment: 3 |
|
LAPS | Cancellation because of no payment of annual fees |