JP2014038624A - 動的データ構成のための方法及び装置 - Google Patents

動的データ構成のための方法及び装置 Download PDF

Info

Publication number
JP2014038624A
JP2014038624A JP2013168838A JP2013168838A JP2014038624A JP 2014038624 A JP2014038624 A JP 2014038624A JP 2013168838 A JP2013168838 A JP 2013168838A JP 2013168838 A JP2013168838 A JP 2013168838A JP 2014038624 A JP2014038624 A JP 2014038624A
Authority
JP
Japan
Prior art keywords
data
binary code
processor
data format
format
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
Application number
JP2013168838A
Other languages
English (en)
Other versions
JP6375102B2 (ja
Inventor
Sung Jin Son
聖 珍 孫
Sang-Oak Woo
相 玉 禹
Seok Yoon Jung
錫 潤 鄭
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Samsung Electronics Co Ltd
Original Assignee
Samsung Electronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Samsung Electronics Co Ltd filed Critical Samsung Electronics Co Ltd
Publication of JP2014038624A publication Critical patent/JP2014038624A/ja
Application granted granted Critical
Publication of JP6375102B2 publication Critical patent/JP6375102B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/441Register allocation; Assignment of physical memory space to logical memory space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44536Selecting among different versions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Devices For Executing Special Programs (AREA)
  • Image Processing (AREA)

Abstract

【課題】 動的データ構成のための方法及び装置を提供する。
【解決手段】 コンパイル装置は、バイナリコードを実行する実行装置がサポートするデータフォーマットのうちバイナリコードが実行されるとき最適の性能を発揮するデータフォーマットを選択し、選択されたデータフォーマットを用いるバイナリコードを生成する。実行装置は、コンパイル装置から提供されたバイナリコードを実行する。
【選択図】 図12

Description

本発明は動的データ構成のための方法及び装置に関し、より詳細にはSIMDプロセッサで用いられる動的データを構成する方法及び装置に関する。
単一命令語多重データ(Single−Instruction、Multiple−Data;SIMD)プロセッサは、単一命令語を用いて複数のデータを同時に処理することで処理能力を向上させるプロセッサである。
SIMDは、中央処理装置(Central Processing Unit;CPU)及びグラフィックス処理装置(Graphics Processing Unit;GPU)などのような多様なプロセッサの性能を向上させるために用いられる方式である。CPU及びGPUはSIMDプロセッサの例であってもよく、SIMDプロセッサはSIMDスキームを採用してもよい。CPU、GPU及びこれと類似するものはサーバ、ラップトップ(laptop)、デスクトップ(desktop)、タブレット(tablet)、及び電話(phone)のようなモバイルコンピュータデバイスで活用され得る。
SIMDプロセッサがデータを処理するためには、命令語によって処理される複数のデータが構成されなければならない。SIMDプロセッサは、構成された複数のデータを1つの命令語を用いて処理することによってコンピュータシステムの性能を向上させることができる。
SIMDプロセッサの特性に応じて、データを処理するために適するデータフォーマットがサポートされる。
本発明の目的は、SIMDプロセッサで用いられる動的データを構成する方法及び装置を提供する。
本発明の一側面によると、コンパイル装置がソースコードをコンパイルすることによってバイナリコードを生成する方法において、予測された処理性能に基づいて複数のデータフォーマットのうち前記バイナリコードを実行するプロセッサに適するデータフォーマットを選択するステップと、前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するステップとを含むバイナリコード生成方法が提供される。
前記プロセッサは、単一命令語多重データ(Single−Instruction、Multiple−Data:SIMD)プロセッサであってもよい。
前記複数のデータフォーマットは、それぞれ前記プロセッサがSIMD方式によりデータを並列処理するために用いられるデータフォーマットであってもよい。
前記複数のデータフォーマットは、構造体の配列フォーマット及び配列の構造体フォーマットのうち1つ以上を含んでもよい。
前記選択するステップは、前記複数のデータフォーマットそれぞれの性能を予測するステップと、前記予測された複数のデータフォーマットそれぞれの性能に基づいて前記複数のデータフォーマットのうち最高の性能を提供するデータフォーマットを前記バイナリコードを選択するステップとを含む。
バイナリコード生成方法は、前記選択されたデータフォーマットを示す情報を生成するステップをさらに含んでもよい。バイナリコード生成方法は、前記プロセッサを用いて前記バイナリコードを実行するステップをさらに含んでもよい。
前記実行するステップは、前記選択されたデータフォーマットに基づいてデータをロードするステップと、前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理するステップと、前記処理されたデータを前記選択されたデータフォーマットに基づいて格納するステップとを含んでもよい。
バイナリコード生成方法は、前記選択されたデータフォーマットを示す情報を生成するステップと、前記生成された情報に基づいて前記プロセッサを用いて前記バイナリコードを実行するステップとをさらに含んでもよい。
本発明の一実施形態によると、実行装置がバイナリコードを実行する方法において、予測された処理性能に基づいて前記バイナリコード及び選択されたデータフォーマットを示す情報を受信するステップと、プロセッサを用いて前記バイナリコードを実行するステップとを含み、最高の予測された処理性能を有する前記データフォーマットは、前記プロセッサによってサポートされる複数のデータフォーマットのうち各データフォーマットの前記予測された処理性能に基づいて選択された1つのデータフォーマットであるバイナリコード実行方法が提供される。
前記実行するステップは、前記選択されたデータフォーマットに基づいてデータをロードするステップと、前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理するステップと、前記処理されたデータを前記選択されたデータフォーマットに基づいて格納するステップとを含んでもよい。
本発明の一実施形態によると、複数のデータフォーマットのうちバイナリコードを実行するプロセッサに適するデータフォーマットを選択し、前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するコンパイル装置と、前記プロセッサを用いて前記バイナリコードを実行する実行装置とを備えるコンピュータシステムが提供される。
前記コンパイル装置は、前記選択されたデータフォーマットを示す情報を生成し、前記実行装置は前記情報に基づいて前記プロセッサを用いて前記バイナリコードを実行してもよい。
本発明の一実施形態によると、ソースコードを格納する格納部と、前記格納部から前記ソースコードを読み出し、予測された処理性能に基づいて複数のデータフォーマットのうち前記バイナリコードを実行する実行装置に適するデータフォーマットを選択し、前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するプロセッサとを備えるコンパイル装置が提供される。
前記実行装置のプロセッサは、単一命令語多重データプロセッサであり、前記複数のデータフォーマットは、それぞれ前記実行装置のプロセッサがSIMD方式でデータを並列処理するために用いられるデータフォーマットであってもよい。
前記複数のデータフォーマットは、構造体の配列フォーマット及び配列の構造体フォーマットのうちの1つ以上を含んでもよい。
前記プロセッサは、前記選択されたデータフォーマットを示す情報を生成してもよい。
前記コンパイル装置は、前記バイナリコード及び前記選択されたデータフォーマットを示す情報を前記実行装置に送信する送受信部をさらに備えてもよい。
本発明の一実施形態によると、バイナリコード及び選択されたデータフォーマットを示す情報を受信する送受信部(前記選択されたデータフォーマットは予測された処理性能に基づいて選択される)と、前記バイナリコードを実行するプロセッサとを備え、前記選択されたデータフォーマットは、前記プロセッサによってサポートされる複数のデータフォーマットのうち1つのデータフォーマットである実行装置が提供される。
前記プロセッサは、前記選択されたデータフォーマットに基づいてデータをロードし、前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理し、前記処理されたデータを前記選択されたデータフォーマットに基づいて格納してもよい。
本発明によると、データフォーマットに対する作業がコンパイル装置によって自動処理されることでプログラマーに便利な開発環境を提供することができ、実行装置のプロセッサの効率が向上される。
また、実施形態は、OpenGL及びOpenGL|ESなどのようなプログラマーによるデータフォーマットの変換ができない標準言語についても内部的なデータフォーマットの変換を提供することによって実行装置のプロセッサの効率を向上させることができる。
また、プロセッサの効率が向上されることで処理時間が短縮され、使用電力も減少し得る。
一実施形態に係るコンピュータシステムの構造図である。 一実施形態に係るコンパイル装置のブロック図である。 一実施形態に係る実行装置のブロック図である。 一例に係るAoSフォーマットを説明する。 一例に係るSoAフォーマットを説明する。 一例に係るAoS方式の処理が実行された場合における性能を説明する。 一例に係るSoA方式の処理が実行された場合における性能を説明する。 一例に係るコンパイル装置のプロセッサのブロック図である。 一例に係るグラフィック作業を処理するソースコードである。 一例に係る条件分岐文を含むソースコードである。 一例に係る実行装置のプロセッサのブロック図である。 一実施形態に係るバイナリコード処理方法のフローチャートである。
以下、添付する図面を参照しながら実施形態を詳細に説明する。各図面に提示された同一の参照符号は同一の部材を示す。
以下のピクセルに対する説明はバーテックスにも適用され得る。また、バーテックスに対する説明はピクセルにも適用されてもよい。
図1は、一実施形態に係るコンピュータシステムの構造図である。
コンピュータシステム100は、ソースコード内のアルゴリズムの特性をソースコードのコンパイル段階で前もって分析することができる。コンピュータシステム100は、分析に基づいて並列処理するための効率的なデータフォーマットを選択する。選択されたデータフォーマットを用いる並列処理方式(scheme)(並列処理構成)によってコンピュータシステム100の処理能力が極大化される。ここで、並列処理方式は、SIMD方式(SIMD構成)の並列処理を含んでもよい。アルゴリズムの特性の例は、SIMD処理が適用される命令語、前記命令語の実行条件及び、実行が条件付きの状態に依存する命令語、または命令語のブロックを含んでもよい。したがって、分岐はアルゴリズムの特性である。
コンピュータシステム100は、コンパイル装置110及び実行装置120を備える。コンパイル装置110は、ソースコードをコンパイルすることによってバイナリコード(binary code)を生成する。コンパイル装置110は、コンパイラを実行することによってソースコードに基づいてバイナリコードを生成するコンピュータであってもよい。
コンパイル装置110は、複数のデータフォーマットのうちバイナリコードを実行する実行装置120、またはプロセッサに適するデータフォーマットを選択する。コンパイル装置110は、ソースコードをコンパイルすることによって選択されたデータフォーマットを用いてデータを処理するバイナリコードを生成してもよく、選択されたデータフォーマットを示す情報を生成してもよい。バイナリコードを実行するプロセッサは実行装置120のプロセッサであってもよい。実行装置120のプロセッサはCPUまたはGPUを含んでもよい。CPUまたはGPUはSIMD方式(構成)を採用してもよい。
コンパイル装置110は、生成されたバイナリコード及び選択されたデータフォーマットを示す情報を実行装置120に提供する。実行装置120はバイナリコードを実行する。実行装置120は、バイナリコードを実行するコンピュータであってもよい。実行装置120は、選択されたデータフォーマットを示す情報に基づいてプロセッサを用いてバイナリコードを実行する。コンパイル装置110及び実行装置120は、物理的に同一の1つ装置であってもよい。
図2は、一実施形態に係るコンパイル装置のブロック図である。コンパイル装置110は、プロセッサ210、格納部220及び送受信部230を備える。格納部220は、ソースコード及びバイナリコードを格納する。
プロセッサ210は、ソースコードをコンパイルすることによってバイナリコード及びデータフォーマットを示す情報を生成する。プロセッサ210は、格納部220からソースコードを読み出す。プロセッサ210は、生成されたバイナリコード及びデータフォーマットを示す情報を格納部220内に格納する。
プロセッサ210は、プロセッサ210に入力されたソースコードに対応する最も効率的なデータフォーマットを決定する。プロセッサ210は、複数のデータフォーマットのうちバイナリコードを実行する実行装置120またはプロセッサに適するデータフォーマットを選択する。プロセッサ210は、ソースコードをコンパイルすることによって選択されたデータフォーマットを用いてデータを処理するバイナリコードを生成し、選択されたデータフォーマットを示す情報を生成する。バイナリコードを実行するプロセッサは、実行装置120のプロセッサであってもよい。送受信部230は、バイナリコード及びデータフォーマットを示す情報を実行装置120に送信する。
図3は、一実施形態に係る実行装置のブロック図である。実行装置120は、プロセッサ310及び送受信部320を備える。送受信部320は、コード及びデータフォーマットを示す情報をコンパイル装置110から受信する。
プロセッサ310はCPUまたはGPUを含んでもよい。CPUまたはGPUは、SIMD方式(構成)を採用してもよい。プロセッサ310は、データフォーマットを示す情報に基づいてプロセッサを用いてバイナリコードを実行する。CPU、GPU及びこれと類似するものはサーバ、ラップトップ、デスクトップ、タブレット、及びフォンのようなモバイル・コンピューティングデバイスで活用され得る。
複数のデータフォーマットそれぞれは、プロセッサ310によって処理されなければならないデータをグルーピングする方式に対応する。複数のデータフォーマットは、それぞれ実行装置120のプロセッサ310がSIMD方式(構成)にデータを並列処理するために用いられるデータフォーマットであってもよい。
複数のデータフォーマットは、構造体の配列(Array of Structure;AoS)フォーマット及び配列の構造体(Structure of Array;SoA)フォーマットのうちの1つ以上を含む。AoSフォーマットは、AoS方式(AoS構成)で用いられるデータフォーマットであってもよい。SoAフォーマットは、SoA方式(SoA構成)で用いられるデータフォーマットであってもよい。AoSフォーマット及びSoAフォーマットそれぞれに対して下記で図4及び図5を参照して詳細に説明する。
プロセッサ310によって用いられる複数のデータフォーマットはスカラー(scalar)フォーマットをさらに含んでもよい。ここで、スカラーフォーマットは、プロセッサ310のSIMDアーキテクチャーのためのフォーマットを使用しないフォーマットである。SIMDアーキテクチャーのためのフォーマットは、AoSフォーマット及びSoAフォーマットなどを含む。
スカラーフォーマットは、AoSフォーマット、SoAフォーマット及びそれと類似するものを含む、SIMDデータフォーマットの使用の利益がない場合に、または算出された時間または算出された電力を含むSIMDフォーマット使用の追加的な費用(追加的なリソース)がSIMDフォーマットの使用の利益よりも大きい場合、プロセッサ310によって選択される。すべてのデータまたはプログラム命令語がSIMD命令語を用いるプロセシングに対して適したり有益を得られない場合があるため、スカラーフォーマットが用いられる。
複数のデータフォーマットそれぞれは、実行装置120のプロセッサ310によってサポートされるデータフォーマットであってもよい。実行装置120のプロセッサ310は、AoSフォーマット及びSoAフォーマットなどを同時または選択的に処理するように設計される。また、プロセッサ310は、AoSフォーマット、SoAフォーマット及びそれと類似するものなどを含むSIMDフォーマット使用の利益がない場合、または、算出された時間または算出された電力を含むSIMDフォーマットの使用の追加的な費用(追加的なリソース)がSIMDフォーマットの使用の利益よりも大きい場合スカラーフォーマットを選択的に処理するように設計される。
選択されたデータフォーマットを示す情報は1つ以上のビットであってもよい。例えば、選択されたデータフォーマットを示す情報の値が2進値「00」である場合、選択されたデータフォーマットはスカラーフォーマットであってもよい。選択されたデータフォーマットを示す情報の値が2進値「01」である場合、選択されたデータフォーマットはAoSフォーマットであってもよい。選択されたデータフォーマットを示す情報の値が2進値「10」である場合、選択されたデータフォーマットはSoAフォーマットであってもよい。さらに、選択されたデータフォーマットを示す情報の値が2進値「11」である場合、異なるSIMDフォーマットが選択されるように決定されてもよい。
図4は、一例に係るAoSフォーマットを説明する。AoS方式(AoS構成)は3次元(Dimensional;D)グラフィックス分野で用いられる。
AoS方式は、グラフィックオブジェクトの位置またはカラーを1つの構造体にグルーピングしてもよく、前記構造体を同時に処理してもよい。ここで、グラフィックオブジェクトは、ピクセルまたはバーテックス(vertex)であってもよい。位置の構成要素は、x座標値、y座標値、z座標値及びw座標値であってもよい。カラーの構成要素は、赤(Red;R)値、緑(Green;G)値、青(Blue;B)値及びアルファ(Alpha;A)値であってもよい。
図4において、各行は実行される命令語に対応する。各列は行が示す命令語により実行装置120のプロセッサ310が処理するデータを示す。例えば、プロセッサ310がSIMDで一回に32ビットのデータを処理できる場合、4個の行はそれぞれSIMDで処理される8ビットのデータを示す。
例えば、図4において、第1行の「x1」、「y1」、「z1」及び「w1」はそれぞれ第1命令語によって処理される第1ピクセルのx座標値、y座標値、w座標値及びz座標値を示す。以下、第2行の記号、第3行の記号及び第4行の記号はそれぞれ第2命令語、第3命令語及び第4命令語によって処理される座標値を示す。
AoS方式が用いられる場合、プロセッサ310は1つのピクセルのx、y、z及びwに対する演算を一回に処理してもよく、順次複数のピクセルそれぞれに対する演算を処理してもよい。AoS方式は、単に1つの命令語をピクセルのすべての(または複数の)要素(例えば、x、y、z及びw)に適用する利点を有する。AoSスキームが用いられるときの1つのSIMD命令語に関連するピクセルの個数は、SoA方式が用いられるときの命令語に関連するピクセルの数よりも少ない場合もある。
AoS方式は、3Dグラフィックス上でデータを自然に処理する長所を有する。AoS方式は3Dグラフィックスで、ピクセルの4D位置及びカラーを自然に表現することができる。しかし、AoS方式は、3Dグラフィックスの演算過程ですべての構成要素が使用されない場合、低い効率を示す短所がある。AoS方式は1つの命令語がピクセル4個の構成要素に同時に適用されなければ、実行装置120の効率が低下する。特に、数個のアプリケーションにおいて、AoSスキームでw−座標値は使用されないことがある。しかし、AoSフォーマットでコードを実行するためのSIMD方式は、x−値、y−値、z−値及びw−値を一回に処理するSIMD構成であるため、w−値に対するスロットは割り当てられなければならない。したがって、w−値は数個のアプリケーションでダミー(dummy)値であり、3Dグラフィックスの動作ですべての構成要素が使用されなくてもよい。
図5は、一例に係るSoAフォーマットを説明する。SoA方式(SoA構成)は3Dグラフィックス分野で用いられる。
SoA方式は、実行装置120のプロセッサ310によって処理されなければならないピクセルまたはバーテックスの構成要素を1つの構造体にグルーピングしてもよく、構造体を同時に処理してもよい。構成要素は位置の構成要素またはカラーの構成要素であってもよい。位置の構成要素はx、y、zまたはwであってもよい。カラーの構成要素はR、G、BまたはAのうちの1つであってもよい。
図5において、各行は実行される命令語に対応する。各列は行が示す命令語により実行装置120のプロセッサ310が処理するデータを示す。例えば、プロセッサ310がSIMDで一回に32ビットデータを処理する場合、4個の行はそれぞれSIMDで処理される8ビットのデータを示す。
例えば、図5において、第1行の「x1」、「x2」、「x3」及び「x4」はそれぞれ第1命令語によって処理される第1ピクセルのx座標値、第2ピクセルのx座標値、第3ピクセルのx座標値、及び第4ピクセルのx座標値を示す。第2行の記号は、第2命令語によって処理される第1ピクセルないし第4ピクセルのy座標値を示す。第3行の記号は、第3命令語によって処理される第1ピクセルないし第4ピクセルのz座標値を示す。第4行の記号は、第4命令語によって処理される第1ピクセルないし第4ピクセルのw座標値を示す。
SoA方式は、プロセッサ310が複数のピクセルまたは複数のバーテックスに対して同じ命令語を行う場合、実行装置120の効率を最大向上させる長所を有し得る。1つのアレイに同じ演算が適用される場合、SoA方式は並列命令語を用いて前記同じ演算を行うことにおいて極めて効率的である。ここで、アレイはピクセルなどのアレイであってもよい。例えば、w−値を含まないアプリケーションで、w−値のために割り当てられなければならないスロットはない。代わりに、x−値の他のグループ、y−値のためのグループ、またはz−値のためのグループがSoA方式を用いて並列処理される。しかし、SoA方式は、実行コード内で条件文(conditional statement)による分岐が発生する場合、データ処理の制御が困難になり実行装置120の性能が低下するという短所がある。例えば、SoA方式は、条件に応じてアレイの一部に適用される演算を行うことにおいて実行装置120の性能を低下させることがある。
図6及び図7は、一例に係るAoS方式及びSoA方式の性能を比較する。
図6及び図7において、実行装置120のプロセッサ310は1つの命令語を用いて最大16個のデータを同時に処理する。図6及び図7は、それぞれAoS方式を用いてデータを処理する場合の演算流れ(operation flow)及びSoA方式を用いてデータを処理する場合の演算流れを示す。
図6は、一例に係るAoS方式の処理が実行された場合における性能を説明する。
AoS方式が用いられる場合、プロセッサ310は4個のピクセルのx座標値、y座標値、z座標値及びw座標値を一回に処理する。しかし、図6で示すように、実際に処理されるデータがピクセルのx座標値、y座標値及びz座標値である場合、命令語によって処理される16個のデータのうち12個のデータのみが有効なものである。
図6において、プロセッサ310は、3回の段階を介して12個のピクセルのx座標値、y座標値及びz座標値に対する演算を実行する。ここで、最初の4個のピクセルは第1ステージに対応し、中間の4個のピクセルは第2ステージに対応し、最後の4個のピクセルは第3ステージに対応する。さらに、図6において、3つの相異なるタイプのラインが示されている。図6において、ラインの各タイプは単一SIMD命令語のターゲットを示す。図6の例として、同じ命令語がすべてのx−座標に適用され、同じ命令語がすべてのy−座標に適用され、同じ命令語がすべてのz−座標に適用される。しかし、すべてのx−座標に適用される命令語はすべてのy−座標に適用される命令語と互いに異なってもよく、すべてのy−座標に適用される命令語はすべてのz−座標に適用される命令語と互いに異なってもよい。しかし、2つ以上の命令語は同じ命令語であってもよい。
図7は、一例に係るSoA方式の処理が実行された場合における性能を説明する。
SoA方式が用いられる場合、プロセッサ310は最大16個のピクセルのx座標値、y座標値、z座標値、またはw座標値を一回に処理する。しかし、図7に示すように、実際に処理されるデータが12個のピクセルのx座標値、y座標値またはz座標値である場合、命令語によって処理される16個のデータのうち12個のデータのみが有効なものである。
図7におけるプロセッサ310は、3回の段階にかけて12個のピクセルのx座標値、y座標値及びz座標値それぞれに対する演算を実行する。ここで、第1ステージはすべてのxピクセルの実行であり、第2ステージはすべてのyピクセルの実行であり、第3ステージはすべてのzピクセルの実行である。図7において、3つの相異なるタイプのラインが示されている。図7におけるラインの各タイプは、1つのSIMD命令語のターゲットを示す。図7の例として、同じ命令語がすべてのx−座標に適用され、同じ命令語がすべてのy−座標に適用され、同じ命令語がすべてのz−座標に適用される。しかし、すべてのx−座標に適用される命令語はすべてのy−座標に適用される命令語と互いに異なってもよく、すべてのy−座標に適用される命令語はすべてのz−座標に適用される命令語と互いに異なってもよい。しかし、2つ以上の命令語は同じ命令語であってもよい。
図8は、一例に係るコンパイル装置のプロセッサのブロック図である。
プロセッサ210は、SIMDプロセッサに基づく実行装置120がSIMDを効率的に利用できるようにデータフォーマットを判別する。プロセッサ210は、その判別のために複数の分析部及び比較部840を備える。複数の分析部の一例として、第1分析部810、第2分析部820及び第3分析部830が示されている。しかし、実施形態は3つの分析部に制限されず、追加的な分析部がプロセッサ210に含まれてもよい。
複数の分析部は、複数のデータフォーマットそれぞれの性能を動的に予測することができる。複数の分析部それぞれは複数のデータフォーマットのうち1つのデータフォーマットの性能を予測する。ここで、データフォーマットの性能は前記データフォーマットを用いてデータを処理するバイナリコードが実行装置120で実行される場合に処理装置またはバイナリコードの性能であってもよい。
例えば、第1分析部810はスカラー分析部であってもよい。第1分析部810は、スカラー方式を用いるバイナリコードを処理することに対する処理性能(処理効率)を予測することによって実行装置120の性能を分析する。スカラー方式を用いるバイナリコードは実行装置120によって実行される。第2分析部820はAoS分析部であってもよい。第2分析部820は、AoS方式を用いるバイナリコードを処理することに対する処理性能(処理効率)を予測することで実行装置120の性能を分析する。AoS方式を用いるバイナリコードは実行装置120によって実行される。第3分析部830はSoA分析部であってもよい。第3分析部830は、SoA方式を用いるバイナリコードを処理することに対する処理性能(処理効率)を予測することによって実行装置120の性能を分析する。SoA方式を用いるバイナリコードは実行装置120によって実行される。
複数の分析部は、ソースコードを用いて各データフォーマットごとにバイナリコードを生成する。複数の分析部は、生成されたバイナリコードを用いることによって実行装置120の性能の分析し予測する。
前記性能の分析及び予測のためにバイナリコードそれぞれに対してコンパイルステップの分析方式が適用される。言い換えれば、複数の分析部それぞれは自身が複数のデータフォーマットのうち1つのデータフォーマットを適用して生成したバイナリコードにコンパイルステップの分析方式を適用することで、生成したバイナリコードの性能を分析または予測することができる。コンパイルステップの分析方式は、1)命令語使用率、及び2)条件分岐による追加的な費用(追加的なリソース)の1つ以上を含んでもよい。複数の分析部は性能を予測するために、代表的に用いられる命令語の使用率及び条件分岐による追加費用を用いる。追加的な費用は、追加的な算出された時間または算出された電力であってもよい。性能の予測に対して下記の図9及び図10を参照して詳細に説明する。
比較部840は、複数の分析部によって分析または予測された複数のデータフォーマットそれぞれの性能に基づいて、複数のデータフォーマットのうち最高または最適の性能を提供するデータフォーマットをバイナリコードを実行する実行装置120、または実行装置120のプロセッサ310に適するデータフォーマットとして選択する。
複数の分析部は、バイナリコードを比較部840に提供する。比較部840は、バイナリコードのうち選択されたデータフォーマットに対応するバイナリコードを選択する。比較部840は選択されたバイナリコードを出力する。
選択的に、複数の分析部及び比較部840ではないコンパイル装置110のユーザが複数のデータフォーマットのうちバイナリコードを実行する実行装置120、またはプロセッサ310に適する1つのデータフォーマットを選択する。プロセッサ210は、ユーザによって選択されたデータフォーマットを用いてデータを処理するバイナリコードを生成し、ユーザによって選択されたデータフォーマットを示す情報を生成する。ここで、ユーザは、ソースコードのプログラマーであってもよい。
複数の分析部、第1分析部810、第2分析部820、第3分析部830、及び比較部840それぞれはプロセッサ210で行われる関数、ライブラリー、サービス、プロセス、スレッド、またはモジュールを示す。
図9は、一例に係るグラフィック作業を処理するソースコードである。図9に示すソースコードをコンパイルしてバイナリコードを生成することにおいて、比較部840は命令語使用率を性能予測のために用いる。命令語使用率は、構成要素ごとに用いられたリソースの使用率を意味する。
GPUで頻繁に用いられるピクセルシェーダ(shader)のように、4Dを示す構成要素のうち3Dに対応する構成要素のみが主に用いられる。AoS方式が用いられる場合、図6に示すように全体の使用可能なリソースのうち75%のリソースのみが用いられる。一方、SoA方式が用いられる場合、全体の使用可能なリソースが100%の全てが用いられる。したがって、図9に示すソースコードはSoA方式を用いることによって効率的に処理され得る。
図10は、一例に係る条件分岐文を含むソースコードである。図10に示すソースコードをコンパイルしてバイナリコードを生成することにおいて、比較部840は、ソースコード内の条件分岐による追加的な費用を性能予測するために用いる。
条件分岐文は、並列処理のために用いられる方式において最も難しい問題のうち1つである。特定の命令語が与えられた条件に応じて実行されるかの有無は、実行時間に決定され、命令語が実行されるかの有無は予め予測され難い。
実行有無の予測を通した性能向上のために多くの研究が行われてきた。比較部840は、従来における多様な研究結果を条件分岐による追加的な費用を算出するために用いる。
以下、単純な条件分岐を含む図10に示すコードに対する追加的な費用算出の一例を説明する。
AoS方式が用いられる場合、分岐によって一回のみ関数が実行される。ここで、実行される関数は「func_A」または「func_B」であってもよい。
SoA方式が用いられる場合、最悪の場合に関数「func_A」及び「func_B」のすべてが実行される。SoA方式に対応する分析部は、関数それぞれで要求されるリソースを分析する。この分析に基づいて、SoA方式に対応する分析部は、関数すべてが実行されたときの命令語使用率及び1つの関数のみが実行されたときの命令語使用率それぞれに対して適する確率関数を代入することによって追加的な費用を算出することができる。ここで、SoA方式に対応する分析部は、複数の分析部のうちSoAフォーマットを用いるバイナリコードの性能を予測する分析部である。
複数の分析部は、それぞれ対応するデータフォーマットを用いるバイナリコードの条件分岐による追加的な費用を算出する。比較部840は、複数のデータフォーマットの追加的な費用を比較することによって、バイナリコードを実行するプロセッサ310に適するデータフォーマットを選択する。
図11は、一例に係る実行装置のプロセッサのブロック図である。
実行装置120のプロセッサ310は動的SIMDアーキテクチャーのプロセッサである。プロセッサ310は、命令語パッチ部1110、データロード部1120及びデータ格納部1130を備える。バイナリコードは、命令語パッチ部1110に提供され、選択されたデータフォーマットを示す情報はデータロード部1120及びデータ格納部1130に提供される。
プロセッサ310は、従来におけるSIMDプロセッサに選択されたデータフォーマットに基づいてデータのロード及び格納を動的に制御する機能を追加したプロセッサであってもよい。動的制御は、プロセッサにより命令語レベルのロード及び/または格納のフォーマットを変換する方式により提供される。また、動的制御は、関連するハードウェアインターフェースまたは関数インターフェース部分でフォーマットを変換して格納する方式により提供される。
プロセッサ310は、算術演算に対して選択されたデータフォーマットと関係なく、同じ方式で命令語を処理する。ここで、算術演算は「たし算(Add)」または「乗算(Mul)」などであってもよい。
プロセッサ310は、ロード演算及び格納演算に対して選択されたデータフォーマットに応じて処理方法を提供する。図4及び図5に示すように、AoSフォーマット及びSoAフォーマット間の関係は前置行列の変換に対応する。すなわち、前置できるようにロード命令語及び格納命令語が設計され得る。プロセッサ310は、選択されたデータフォーマットにより動的に演算に要求されるデータが備えられることをサポートする。また、プロセッサ310は、処理しようとするアルゴリズムの特性に応じて処理するデータの入力フォーマット及び結果フォーマットを変換する。例えば、プロセッサ310がCPUである場合、プロセッサ310で行われる入力及び/または出力が決定されないことがある。入力及び/または出力が決定されない場合、ロード及び/または格納命令語レベルでのフォーマット変換が提供されてもよく、演算が行われるときにデータフォーマットにより演算が行われてもよい。一方、プロセッサ310がGPUである場合、プロセッサ310によって行われる入力及び/または出力が確定されてもよい。入力及び/または出力が確定された場合、プロセッサ310は、シェーダが入力されたデータに対する処理を行う前に入力されたデータのデータフォーマットを変換することによって処理されるデータを備える。また、プロセッサ310は、内部的な算術演算に対しては従来の命令語をそのまま用いることによって処理する。
命令語パッチ部1110は、バイナリコードから命令語をパッチする。データロード部1120は、選択されたデータフォーマットに基づいてデータをロードする。例えば、データのロードは、プロセッサ310のレジスタ(register)のうち被演算子(orerand)の部分にデータを充填する。レジスタの被演算子の部分は複数であってもよい。レジスタはアキュムレータ(accumulator)であってもよい。被演算子の部分はビットで構成されてもよい。
データがロードされた後、プロセッサ310はロードされたデータにパッチされた命令語が示す演算を適用することによってロードされたデータを処理する。例えば、プロセッサ310は、ロードされたデータにパッチされた命令語が示す演算を適用することによって、演算の適用された更新されたデータをレジスタまたはアキュムレータ内に格納する。更新されたデータが格納されたレジスタまたはアキュムレータは、データがロードされたレジスタまたはアキュムレータと同一であってもよく、互いに異なってもよい。
データ格納部1130は、処理されたデータを選択されたデータフォーマットに基づいて格納する。ここで、処理されたデータの格納は、レジスタまたはアキュムレータ内のデータをメモリ内に格納する。
図12は、一実施形態に係るバイナリコード処理方法のフローチャートである。ステップS1210において、コンパイル装置110のプロセッサ210は格納部220からソースコードを読み出す。
ステップS1220において、プロセッサ210は、複数のデータフォーマットのうちバイナリコードを実行する実行装置120のプロセッサ310に適するデータフォーマットを選択する。ステップS1220は、ステップS1222及びステップS1224を含んでもよい。ステップS1222において、プロセッサ210の複数の分析部は、複数のデータフォーマットそれぞれの性能を予測する。
ステップS1224において、比較部840は、予測された複数のデータフォーマットそれぞれの性能に基づいて複数のデータフォーマットのうち最高の性能を提供するデータフォーマットを、バイナリコードを実行する実行装置120のプロセッサ310に適するデータフォーマットとして決定する。
複数のデータフォーマットは、実行装置120のプロセッサ310がSIMD方式でデータを並列処理するために用いられるデータフォーマットであってもよい。しかし、もし、SIMD方式で用いられるデータフォーマットの使用において利益がなければ、スカラーフォーマットがデータを処理するために使用されてもよい。実行装置120の送受信部320は、プロセッサ310が処理できる複数のデータフォーマットを示す情報をコンパイル装置110の送受信部230に送信してもよい(図示せず)。
ステップS1230において、プロセッサ210は、選択されたデータフォーマットを用いてデータを処理するバイナリコードを生成する。ステップS1240において、プロセッサ210は、選択されたフォーマットを示す情報を生成する。
ステップS1250において、コンパイル装置110の送受信部230は、バイナリコードを実行装置120の送受信部320に送信する。ステップS1255において、コンパイル装置110の送受信部230は、選択されたデータフォーマットを示す情報を実行装置120の送受信部320に送信する。ステップS1250及びステップS1255は同時に行われてもよい。
ステップS1260において、実行装置120のプロセッサ310は、バイナリコードを実行する。ステップS1260は、ステップS1262、ステップS1264及びステップS1266を含んでもよい。
ステップS1262において、実行装置120のデータロード部1120は、選択されたデータフォーマットに基づいてデータをロードする。
ステップS1264において、実行装置120のプロセッサ310は、ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理する。
ステップS1266において、実行装置120のデータ格納部1130は、処理されたデータを選択されたデータフォーマットに基づいて格納する。
前述されたステップS1210、S1220、S1222、S1224、S1230、S1240、S1250、S1255、S1260、S1262、S1264及びS1266のうちの1つ以上のステップは示されたものと異なる順に実行されてもよく、並列に実行されてもよい。
実施形態は、SIMDプロセッサに基づいた演算を行う装置及びシステムで応用することができる。応用の一例として、オープンGL(OpenGL)、オープンGL|ES(OpenGL|ES)などのようなレンダリングシステム(rendering system)があり、オープンCL(OpenCL)及びCUDAなどのような並列コンピュータシステムがある。
実施形態によると、データフォーマットに対する作業がコンパイル装置によって自動処理されることで、プログラマーに便利な開発環境が開発されることができ、実行装置120のプロセッサ310の効率が向上される。
また、実施形態は、OpenGL及びOpenGL|ESなどのようなプログラマーによるデータフォーマットの変換ができない標準言語についても内部的なデータフォーマットの変換を提供することによって実行装置120のプロセッサ310の効率を向上させることができる。
また、プロセッサ310の効率が向上することで処理時間が短縮され、使用電力も減少し得る。
実施形態に係る方法は、多様なコンピュータ手段を介して様々な処理を実行することができるプログラム命令の形態で実現され、コンピュータ読取可能な記録媒体に記録されてもよい。コンピュータ読取可能な媒体は、プログラム命令、データファイル、データ構造などのうち1つまたはその組合せを含んでもよい。媒体に記録されるプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり、使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD−ROM、DVDのような光記録媒体、光ディスクのような光磁気媒体、及びROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれてもよい。
上述したように、本発明を限定された実施形態と図面によって説明したが、本発明は、上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、このような実施形態から多様な修正及び変形が可能である。
したがって、本発明の範囲は、開示された実施形態に限定されるものではなく、特許請求の範囲だけではなく特許請求の範囲と均等なものなどによって定められるものである。
110:コンパイル装置
120:実行装置

Claims (20)

  1. コンパイル装置がソースコードをコンパイルすることによってバイナリコードを生成する方法において、
    予測された処理性能に基づいて複数のデータフォーマットのうち前記バイナリコードを実行するプロセッサに適するデータフォーマットを選択するステップと、
    前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するステップと、
    を含むことを特徴とするバイナリコード生成方法。
  2. 前記プロセッサは、単一命令語多重データ(Single−Instruction、Multiple−Data:SIMD)プロセッサであり、
    前記複数のデータフォーマットは、それぞれ前記プロセッサがSIMD方式によりデータを並列処理するために用いられるデータフォーマットであることを特徴とする請求項1に記載のバイナリコード生成方法。
  3. 前記複数のデータフォーマットは、構造体の配列フォーマット及び配列の構造体フォーマットのうち1つ以上を含むことを特徴とする請求項1または2に記載のバイナリコード生成方法。
  4. 前記選択するステップは、
    前記複数のデータフォーマットそれぞれの性能を予測するステップと、
    前記予測された複数のデータフォーマットそれぞれの性能に基づいて前記複数のデータフォーマットのうち最高の性能を提供するデータフォーマットを前記バイナリコードを選択するステップと、
    を含むことを特徴とする請求項1に記載のバイナリコード生成方法。
  5. 前記選択されたデータフォーマットを示す情報を生成するステップをさらに含むことを特徴とする請求項1または4に記載のバイナリコード生成方法。
  6. 前記プロセッサを用いて前記バイナリコードを実行するステップをさらに含むことを特徴とする請求項1、4、5のいずれか一項に記載のバイナリコード生成方法。
  7. 前記実行するステップは、
    前記選択されたデータフォーマットに基づいてデータをロードするステップと、
    前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理するステップと、
    前記処理されたデータを前記選択されたデータフォーマットに基づいて格納するステップと、
    を含むことを特徴とする請求項6に記載のバイナリコード生成方法。
  8. 前記選択されたデータフォーマットを示す情報を生成するステップと、
    前記生成された情報に基づいて前記プロセッサを用いて前記バイナリコードを実行するステップと、
    をさらに含むことを特徴とする請求項1または請求項4ないし7いずれか一項に記載のバイナリコード生成方法。
  9. 実行装置がバイナリコードを実行する方法において、
    予測された処理性能に基づいて前記バイナリコード及び選択されたデータフォーマットを示す情報を受信するステップと、
    プロセッサを用いて前記バイナリコードを実行するステップと、
    を含み、
    最高の予測された処理性能を有する前記データフォーマットは、前記プロセッサによってサポートされる複数のデータフォーマットのうち各データフォーマットの前記予測された処理性能に基づいて選択された1つのデータフォーマットであることを特徴とするバイナリコード実行方法。
  10. 前記実行するステップは、
    前記選択されたデータフォーマットに基づいてデータをロードするステップと、
    前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理するステップと、
    前記処理されたデータを前記選択されたデータフォーマットに基づいて格納するステップと、
    を含むことを特徴とする請求項9に記載のバイナリコード実行方法。
  11. 請求項1ないし10のいずれか一項に記載の方法を実行するプログラムを収録したコンピュータ読み出し可能記録媒体。
  12. 複数のデータフォーマットのうちバイナリコードを実行するプロセッサに適するデータフォーマットを選択し、前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するコンパイル装置と、
    前記プロセッサを用いて前記バイナリコードを実行する実行装置と、
    を備えることを特徴とするコンピュータシステム。
  13. 前記コンパイル装置は、前記選択されたデータフォーマットを示す情報を生成し、
    前記実行装置は前記情報に基づいて前記プロセッサを用いて前記バイナリコードを実行することを特徴とする請求項12に記載のコンピュータシステム。
  14. ソースコードを格納する格納部と、
    前記格納部から前記ソースコードを読み出し、予測された処理性能に基づいて複数のデータフォーマットのうちバイナリコードを実行する実行装置に適するデータフォーマットを選択し、前記選択されたデータフォーマットを用いてデータを処理する前記バイナリコードを生成するプロセッサと、
    を備えることを特徴とするコンパイル装置。
  15. 前記実行装置のプロセッサは、単一命令語多重データプロセッサであり、
    前記複数のデータフォーマットは、それぞれ前記実行装置のプロセッサがSIMD方式でデータを並列処理するために用いられるデータフォーマットであることを特徴とする請求項14に記載のコンパイル装置。
  16. 前記複数のデータフォーマットは、構造体の配列フォーマット及び配列の構造体フォーマットのうちの1つ以上を含むことを特徴とする請求項14または15に記載のコンパイル装置。
  17. 前記プロセッサは、前記選択されたデータフォーマットを示す情報を生成することを特徴とする請求項14ないし16のいずれか一項に記載のコンパイル装置。
  18. 前記バイナリコード及び前記選択されたデータフォーマットを示す情報を前記実行装置に送信する送受信部をさらに備えることを特徴とする請求項14ないし17のいずれか一項に記載のコンパイル装置。
  19. バイナリコード及び選択されたデータフォーマットを示す情報を受信する送受信部(前記選択されたデータフォーマットは予測された処理性能に基づいて選択される)と、
    前記バイナリコードを実行するプロセッサと、
    を備え、
    前記選択されたデータフォーマットは、前記プロセッサによってサポートされる複数のデータフォーマットのうち1つのデータフォーマットであることを特徴とする実行装置。
  20. 前記プロセッサは、前記選択されたデータフォーマットに基づいてデータをロードし、前記ロードされたデータに命令語が示す演算を適用することによってロードされたデータを処理し、前記処理されたデータを前記選択されたデータフォーマットに基づいて格納することを特徴とする請求項19に記載の実行装置。
JP2013168838A 2012-08-16 2013-08-15 動的データ構成のための方法及び装置 Active JP6375102B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR10-2012-0089561 2012-08-16
KR1020120089561A KR101893796B1 (ko) 2012-08-16 2012-08-16 동적 데이터 구성을 위한 방법 및 장치

Publications (2)

Publication Number Publication Date
JP2014038624A true JP2014038624A (ja) 2014-02-27
JP6375102B2 JP6375102B2 (ja) 2018-08-15

Family

ID=49000336

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013168838A Active JP6375102B2 (ja) 2012-08-16 2013-08-15 動的データ構成のための方法及び装置

Country Status (5)

Country Link
US (1) US9342282B2 (ja)
EP (1) EP2698707B1 (ja)
JP (1) JP6375102B2 (ja)
KR (1) KR101893796B1 (ja)
CN (1) CN103593221B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019185486A (ja) * 2018-04-12 2019-10-24 富士通株式会社 コード変換装置、コード変換方法、及びコード変換プログラム
US10768894B2 (en) 2017-01-27 2020-09-08 Fujitsu Limited Processor, information processing apparatus and operation method for processor

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102101834B1 (ko) 2013-10-08 2020-04-17 삼성전자 주식회사 영상 처리 장치 및 방법
CN107491288B (zh) * 2016-06-12 2020-05-08 合肥君正科技有限公司 一种基于单指令多数据流结构的数据处理方法及装置
KR102319115B1 (ko) * 2020-02-05 2021-11-01 한국전자통신연구원 컨텍스트 스위칭에 영향받지 않는 하버드 아키텍처의 캐시 특성을 활용한 에뮬레이팅 환경 탐지 방법 및 그 시스템
CN112925523B (zh) * 2021-03-02 2024-06-21 京东科技控股股份有限公司 对象比较方法、装置、设备及计算机可读介质
CN114298890B (zh) * 2021-12-02 2024-01-30 格兰菲智能科技有限公司 数据处理装置及其方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008503838A (ja) * 2004-06-29 2008-02-07 インテル コーポレイション 単一命令多重データ実行エンジンのための条件命令
US20090199169A1 (en) * 2008-01-31 2009-08-06 Sun Microsystems, Inc. Method and system for array optimization

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6862729B1 (en) * 2000-04-04 2005-03-01 Microsoft Corporation Profile-driven data layout optimization
US7143404B2 (en) * 2003-03-31 2006-11-28 Intel Corporation Profile-guided data layout
US7415703B2 (en) 2003-09-25 2008-08-19 International Business Machines Corporation Loading software on a plurality of processors
US8484441B2 (en) 2004-03-31 2013-07-09 Icera Inc. Apparatus and method for separate asymmetric control processing and data path processing in a configurable dual path processor that supports instructions having different bit widths
US7992140B2 (en) * 2005-07-29 2011-08-02 Microsoft Corporation Compiler supporting programs as data objects
FR2895104A1 (fr) 2005-12-19 2007-06-22 Dxo Labs Sa Procede pour fournir des donnees a un moyen de traitement numerique
US20080162522A1 (en) 2006-12-29 2008-07-03 Guei-Yuan Lueh Methods and apparatuses for compaction and/or decompaction
US8145625B2 (en) * 2007-07-13 2012-03-27 Intel Corporation Methods and systems for optimizing data accesses
JP5077952B2 (ja) * 2008-04-08 2012-11-21 日本電信電話株式会社 処理装置、処理方法およびそのプログラム
GB0809189D0 (en) 2008-05-20 2008-06-25 Aspex Semiconductor Ltd Improvements relating to single instruction multiple data (SIMD) architectures
US8286198B2 (en) * 2008-06-06 2012-10-09 Apple Inc. Application programming interfaces for data parallel computing on multiple processors
GB2464292A (en) 2008-10-08 2010-04-14 Advanced Risc Mach Ltd SIMD processor circuit for performing iterative SIMD multiply-accumulate operations
US8418155B2 (en) 2009-02-10 2013-04-09 International Business Machines Corporation Generating parallel SIMD code for an arbitrary target architecture
US8484276B2 (en) 2009-03-18 2013-07-09 International Business Machines Corporation Processing array data on SIMD multi-core processor architectures
US9569270B2 (en) 2009-04-21 2017-02-14 Empire Technology Development Llc Mapping thread phases onto heterogeneous cores based on execution characteristics and cache line eviction counts
US8539201B2 (en) 2009-11-04 2013-09-17 International Business Machines Corporation Transposing array data on SIMD multi-core processor architectures
US8910135B2 (en) 2010-11-02 2014-12-09 Advanced Micro Devices, Inc. Structure layout optimizations
US9389845B2 (en) * 2011-10-24 2016-07-12 Infosys Limited System and method for dynamically generating a user personalized downloadable executable file

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008503838A (ja) * 2004-06-29 2008-02-07 インテル コーポレイション 単一命令多重データ実行エンジンのための条件命令
US20090199169A1 (en) * 2008-01-31 2009-08-06 Sun Microsystems, Inc. Method and system for array optimization

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10768894B2 (en) 2017-01-27 2020-09-08 Fujitsu Limited Processor, information processing apparatus and operation method for processor
JP2019185486A (ja) * 2018-04-12 2019-10-24 富士通株式会社 コード変換装置、コード変換方法、及びコード変換プログラム
JP7035751B2 (ja) 2018-04-12 2022-03-15 富士通株式会社 コード変換装置、コード変換方法、及びコード変換プログラム

Also Published As

Publication number Publication date
US9342282B2 (en) 2016-05-17
US20140052967A1 (en) 2014-02-20
JP6375102B2 (ja) 2018-08-15
EP2698707A1 (en) 2014-02-19
KR101893796B1 (ko) 2018-10-04
EP2698707B1 (en) 2016-05-25
CN103593221B (zh) 2018-05-11
KR20140023561A (ko) 2014-02-27
CN103593221A (zh) 2014-02-19

Similar Documents

Publication Publication Date Title
JP6375102B2 (ja) 動的データ構成のための方法及び装置
EP3137992B1 (en) Language, function library, and compiler for graphical and non-graphical computation on a graphical processor unit
TWI614682B (zh) 計算設備和相應計算方法
US20120066668A1 (en) C/c++ language extensions for general-purpose graphics processing unit
JP6027021B2 (ja) アジャイル通信演算子
KR101956197B1 (ko) 그래픽 처리 유닛을 이용한 데이터 처리 방법 및 장치
US10706494B2 (en) Uniform predicates in shaders for graphics processing units
CN103221916A (zh) 执行乘乘累加指令
US9880851B2 (en) System, method, and computer program product for implementing large integer operations on a graphics processing unit
KR20220156954A (ko) 하드웨어 가속 리소스를 인에이블하기 위한 컴파일러-개시 타일 교체
US9632783B2 (en) Operand conflict resolution for reduced port general purpose register
JP2019517078A (ja) グラフィック処理のためのパーシェーダープリアンブル
US20170269931A1 (en) Method and Computing System for Handling Instruction Execution Using Affine Register File on Graphic Processing Unit
US20210183005A1 (en) Graphics instruction operands alias
US20200004533A1 (en) High performance expression evaluator unit
KR102644951B1 (ko) 산술 논리 장치 레지스터 시퀀싱
Bernstein et al. Usable assembly language for GPUs: a success story
KR20230160893A (ko) 파면 선택 및 실행
Shudler et al. Portable and Composable Flow Graphs for In Situ Analytics
Kawanami et al. A gpu implementation of a bit-parallel algorithm for computing the longest common subsequence
JP2015026332A (ja) 情報処理装置、情報処理方法、及びプログラム
Middendorf et al. SoPC for 3D Point Rendering

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160808

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20170628

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171011

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180313

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180613

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: 20180703

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180723

R150 Certificate of patent or registration of utility model

Ref document number: 6375102

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250