(57)【要約】  【課題】  同じ記述で複数の演算器での演算を行えるようにした情報処理装置を提供する。  【解決手段】  情報処理装置１は、ＣＰＵ１０と、ＧＰＵ２０と、主関数と当該主関数が呼び出すＣＰＵ１０用またはＧＰＵ２０用の補助関数からなる関数群と、ＣＰＵ１０またはＧＰＵ２０のいずれで処理を実行するかを指定するモード指定関数とを含むライブラリ１７を記憶したＨＤＤ１５と、主関数とモード指定関数を含むプログラム１６を記憶するＨＤＤ１５とを備える。ＣＰＵ１０は、ＨＤＤ１５からライブラリ１７を読み出し、ライブラリ１７を用いてプログラム１６に記述されたモード指定関数で指定されたモードを特定すると共に、プログラム１６に記述された主関数を特定し、特定したモードに基づいて主関数に対応する補助関数をライブラリ１７から呼び出し、モードに対応するＣＰＵ１０またはＧＰＵ２０に対して補助関数に基づく命令を出す。【選択図】  図１
2015026332.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵ（Central Processing Unit）と、
前記ＣＰＵとは能力の異なる演算器と、
主関数と当該主関数が呼び出すＣＰＵ用または演算器用の補助関数からなる関数群と、ＣＰＵまたは演算器のいずれで処理を実行するかを指定するモード指定関数とを含むライブラリを記憶したライブラリ記憶部と、
前記主関数と前記モード指定関数を含むプログラムを記憶するプログラム記憶部と、
を備え、
前記ＣＰＵは、前記プログラム記憶部からプログラムを読み出して実行する際に、前記ライブラリ記憶部から前記ライブラリを読み出し、前記ライブラリを用いて前記プログラムに記述されたモード指定関数で指定されたモードを特定すると共に、前記プログラムに記述された主関数を特定し、前記特定したモードに基づいて前記主関数に対応する補助関数を前記ライブラリから呼び出し、前記モードに対応する前記ＣＰＵまたは前記演算器に対して前記補助関数に基づく命令を出す情報処理装置。
【請求項２】
前記演算器は、ＧＰＵ（Graphics Processing Unit）である請求項１に記載の情報処理装置。
【請求項３】
前記ＣＰＵと前記演算器とがそれぞれのメモリを有する場合に、前記ＣＰＵまたは前記演算器による演算を行うのに必要なデータが、前記モードに対応する前記ＣＰＵまたは前記演算器のメモリ上にあるか否かを判断し、前記必要なデータが前記モードに対応する前記ＣＰＵまたは前記演算器のメモリ上にない場合には、前記必要なデータを前記モードに対応する前記ＣＰＵまたは前記演算器のメモリへ転送する命令を出す請求項１または２に記載の情報処理装置。
【請求項４】
前記ＣＰＵは、前記ＣＰＵと前記演算器とがそれぞれのメモリを有する場合には、前記プログラムを実行する前に、前記ＣＰＵのメモリと前記演算器のメモリに、同じ大きさのメモリ領域を確保する請求項１乃至３のいずれかに記載の情報処理装置。
【請求項５】
前記ＣＰＵは、前記プログラムの実行が終了するときに、前記メモリ領域を解放する請求項４に記載の情報処理装置。
【請求項６】
前記ＣＰＵは、前記ＣＰＵまたは前記演算器への命令に対する処理結果を受信する前に、前記ＣＰＵまたは前記演算器に次の命令を出す請求項１乃至５のいずれかに記載の情報処理装置。
【請求項７】
ＣＰＵ（Central Processing Unit）と、前記ＣＰＵとは能力の異なる演算器とを備える情報処理装置による情報処理方法であって、
前記ＣＰＵが、主関数と当該主関数が呼び出すＣＰＵ用または演算器用の補助関数からなる関数群と、ＣＰＵまたは演算器のいずれで処理を実行するかを指定するモード指定関数とを含むライブラリを記憶したライブラリ記憶部から、前記ライブラリを読み出すステップと、
前記ＣＰＵが、前記主関数と前記モード指定関数を含むプログラムを記憶するプログラム記憶部から、前記プログラムを読み出すステップと、
前記ＣＰＵが、前記ライブラリを用いて前記プログラムに記述されたモード指定関数で指定されたモードを特定すると共に、前記プログラムに記述された主関数を特定し、前記特定したモードに基づいて前記主関数に対応する補助関数を前記ライブラリから呼び出し、前記モードに対応する前記ＣＰＵまたは前記演算器に対して前記補助関数に基づく命令を出すステップと、
を備える情報処理方法。
【請求項８】
ＣＰＵ（Central Processing Unit）と、前記ＣＰＵとは能力の異なる演算器とを備える情報処理装置にて実行されるプログラムであって、
ＣＰＵまたは演算器のいずれで処理を実行するかを指定するモード指定関数に設定された引数に基づいて、処理を行うモードを特定するステップと、
主関数が実行されると、前記特定したモードに基づいて前記主関数に対応する補助関数を呼び出し、前記モードに対応する前記ＣＰＵまたは前記演算器に対して前記補助関数に基づく命令を出すステップと、
を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＣＰＵに加えて、ＣＰＵ（Central Processing Unit）とは能力の異なる演算器を有する情報処理装置に関する。
【背景技術】
【０００２】
ＧＰＵ（Graphic Processing Unit）は、パーソナルコンピュータやワークステーション等の画像処理を担当する主要な部品の一つである。ＧＰＵは、もともとは、動画信号生成専用の演算器であるが、並列的な演算が得意であるという性質を有するので、近年では、ＧＰＵによって並列演算部分を計算させることで、ＣＰＵよりも高速に演算するＧＰＵコンピューティングが注目されている。
【０００３】
ＧＰＵは、ＮＶＩＤＩＡ（登録商標）やＡＭＤ（登録商標）などの複数のベンダーから提供されているが、ベンダーごとに開発環境が異なるため、使用するＧＰＵのアーキテクチャーをよく理解しないとその使用が難しく、また、使用できたとしてもＧＰＵの性能を十分に引き出すことは難しかった。
【０００４】
特許文献１は、このような問題点に鑑み、ＧＰＵによるプログラム作成を簡便にすることを目的とした技術を開示している。特許文献１に記載された方法は、nt_parallel_for()という関数を準備し、その関数をコールするだけで、ＧＰＵを使用するための記述部分と同等の機能を実現させるものである。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２２５８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、特許文献１に記載された方法は、特定のＧＰＵを想定した解決手段にすぎず、複数のベンダーから提供される開発環境に対応できるものではない。また、開発環境の違いはＧＰＵに限ったことではなく、ＣＰＵに関しても、例えば、インテル（登録商標）、ＡＲＭ（登録商標）、ＩＢＭ（登録商標）等、多数のベンダーから提供されており、それぞれ開発環境が異なる。
【０００７】
それに加えて、高速演算処理を行う場合には、計算すべき問題や動作環境によって最適な演算器（ＣＰＵ、ＧＰＵ等）が変わる場合があり、いずれの演算器が最適かは実際に計算してみないと分からない場合も多い。特許文献１では、この点がまったく考慮されておらず、いったんＧＰＵで演算処理するプログラムを記述した後に、ＣＰＵで演算処理するように変更することは容易ではない。
【０００８】
そこで、本発明は、上記背景に鑑み、同じ記述で複数の演算器での演算を行えるようにした情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明の情報処理装置は、ＣＰＵ（Central Processing Unit）と、前記ＣＰＵとは能力の異なる演算器と、主関数と当該主関数が呼び出すＣＰＵ用または演算器用の補助関数からなる関数群と、ＣＰＵまたは演算器のいずれで処理を実行するかを指定するモード指定関数とを含むライブラリを記憶したライブラリ記憶部と、前記主関数と前記モード指定関数を含むプログラムを記憶するプログラム記憶部とを備え、前記ＣＰＵは、前記プログラム記憶部からプログラムを読み出して実行する際に、前記ライブラリ記憶部から前記ライブラリを読み出し、前記ライブラリを用いて前記プログラムに記述されたモード指定関数で指定されたモードを特定すると共に、前記プログラムに記述された主関数を特定し、前記特定したモードに基づいて前記主関数に対応する補助関数を前記ライブラリから呼び出し、前記モードに対応する前記ＣＰＵまたは前記演算器に対して前記補助関数に基づく命令を出す構成を有する。ここで、前記演算器は、ＧＰＵ（Graphics Processing Unit）であってもよい。
【００１０】
このように、主関数および補助関数からなる関数群を有するライブラリを用いて、プログラムに記述された主関数からモードに対応した補助関数を呼び出して実行する構成により、プログラムの開発者は、ＣＰＵおよび演算器のそれぞれの記述方法を理解していなくても、主関数によってプログラムを記述することができるので、容易にプログラムを作成できる。なお、演算器は、一つに限らず、複数の演算器を備えていてもよい。この場合、ライブラリには、各演算器に対応する補助関数を用意する。また、ＣＰＵまたは演算器のいずれで処理を実行するかのモードを書き換えることにより、処理を行うＣＰＵまたは演算器を容易に変更することができるので、例えば、ＣＰＵで処理してみてパフォーマンスが出ない場合には、他の演算器で処理させるように容易にプログラムを変更することができ、最適な演算器での処理を実現することができる。
【００１１】
本発明の情報処理装置は、前記ＣＰＵと前記演算器とがそれぞれのメモリを有する場合に、前記ＣＰＵまたは前記演算器による演算を行うのに必要なデータが、前記モードに対応する前記ＣＰＵまたは前記演算器のメモリ上にあるか否かを判断し、前記必要なデータが前記モードに対応する前記ＣＰＵまたは前記演算器のメモリ上にない場合には、前記必要なデータを前記モードに対応する前記ＣＰＵまたは前記演算器のメモリへ転送する命令を出す構成を有する。これにより、前記ＣＰＵまたは前記演算器による演算を適切に行うことができる。
【００１２】
本発明の情報処理装置において、前記ＣＰＵは、前記ＣＰＵと前記演算器とがそれぞれのメモリを有する場合には、前記プログラムを実行する前に、前記ＣＰＵのメモリと前記演算器のメモリに、同じ大きさのメモリ領域を確保してもよい。このようにＣＰＵと演算器のそれぞれに同じ大きさの領域を確保することにより、ＣＰＵと演算器との間でデータを転送して処理を行う場合などに、転送されたデータの管理を容易に行える。
【００１３】
本発明の情報処理装置において、前記ＣＰＵは、前記プログラムの実行が終了するときに、前記メモリ領域を解放してもよい。この構成により、メモリ上に不要なデータが残ってしまうことに起因して生じる不具合を防止できる。
【００１４】
本発明の情報処理装置において、前記ＣＰＵは、前記ＣＰＵまたは前記演算器への命令に対する処理結果を受信する前に、前記ＣＰＵまたは前記演算器に次の命令を出してもよい。このようにＣＰＵまたは演算器からの処理結果を待たずに、次の命令を出すことにより、ＣＰＵと演算器での並列処理が可能になる。
【００１５】
本発明の情報処理方法は、ＣＰＵ（Central Processing Unit）と、前記ＣＰＵとは能力の異なる演算器とを備える情報処理装置による情報処理方法であって、前記ＣＰＵが、主関数と当該主関数が呼び出すＣＰＵ用または演算器用の補助関数からなる関数群と、ＣＰＵまたは演算器のいずれで処理を実行するかを指定するモード指定関数とを含むライブラリを記憶したライブラリ記憶部から、前記ライブラリを読み出すステップと、前記ＣＰＵが、前記主関数と前記モード指定関数を含むプログラムを記憶するプログラム記憶部から、前記プログラムを読み出すステップと、前記ＣＰＵが、前記ライブラリを用いて前記プログラムに記述されたモード指定関数で指定されたモードを特定すると共に、前記プログラムに記述された主関数を特定し、前記特定したモードに基づいて前記主関数に対応する補助関数を前記ライブラリから呼び出し、前記モードに対応する前記ＣＰＵまたは前記演算器に対して前記補助関数に基づく命令を出すステップとを備える。
【００１６】
本発明のプログラムは、ＣＰＵ（Central Processing Unit）と、前記ＣＰＵとは能力の異なる演算器とを備える情報処理装置にて実行されるプログラムであって、ＣＰＵまたは演算器のいずれで処理を実行するかを指定するモード指定関数に設定された引数に基づいて、処理を行うモードを特定するステップと、主関数が実行されると、前記特定したモードに基づいて前記主関数に対応する補助関数を呼び出し、前記モードに対応する前記ＣＰＵまたは前記演算器に対して前記補助関数に基づく命令を出すステップとを実行させる構成を有する。
【００１７】
本発明の情報処理方法及びプログラムも、上記した本発明の情報処理装置と同様に、同じ記述により、ＣＰＵおよび演算器のいずれでも演算が可能な情報処理装置を実現することができる。なお、本発明の情報処理装置の各種の構成を、本発明の情報処理装置およびプログラムに適用することが可能である。
【発明の効果】
【００１８】
本発明によれば、同じ記述により、ＣＰＵおよび演算器のいずれでも演算が可能な情報処理装置を実現することができる。また、実行のモードを書き換えるだけで、処理を行うＣＰＵまたは演算器を容易に変更することができるので、処理を行うのに最適なＣＰＵまたは演算器を容易に見つけることができる。
【図面の簡単な説明】
【００１９】
【図１】実施の形態の情報処理装置の構成を示す図である。
【図２】ＨＤＤに記憶されたライブラリの例を示す図である。
【図３】主関数と補助関数の具体例を示す図である。
【図４】実施の形態の情報処理装置の動作を示す図である。
【図５】情報処理装置によって処理されるプログラムの一例を示す図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態の情報処理装置について、図面を参照して説明する。なお、以下に説明する例では、ＣＰＵ以外の演算器の例として１つのＧＰＵを取り上げるが、ＣＰＵ以外の演算器は１つに限らず、複数であってもよい。
【００２１】
図１は、実施の形態の情報処理装置１の構成を示す図である。情報処理装置１は、ＣＰＵ１０、ＲＡＭ１１（Random Access Memory）、ＲＯＭ１２（Read Only Memory）、キーボード１３、マウス１４、ＨＤＤ（Hard Disc Drive）１５、ＧＰＵ２０を備えている。
【００２２】
ＨＤＤ１５には、プログラム１６、ＮＴＰライブラリ１７、ＣＰＵ用カーネル１８、ＧＰＵ用カーネル１９が記憶されている。ＨＤＤ１５は、「ライブラリ記憶部」および「プログラム記憶部」に該当する。プログラム１６は、本実施の形態の情報処理装置１がＣＰＵ１０およびＧＰＵ２０を用いて実行するプログラム１６であり、本実施の形態の開発環境においてプログラム開発者が開発したプログラムである。ＣＰＵ用カーネル１８は、ＣＰＵ１０に対する実行命令の関数である。ＧＰＵ用カーネル１９は、ＧＰＵ２０に対する実行命令の関数である。従来であれば、プログラム開発者は、ＣＰＵ用カーネル１８、ＧＰＵ用カーネル１９の内容を熟知した上で、かつ、情報処理装置１が行う処理をＣＰＵ１０で行った方が効率が良いのか、ＧＰＵ２０で行った方が効率が良いのかを検討して、ＣＰＵ１０に対する実行命令、ＧＰＵ２０に対する実行命令からなるプログラムを作成する必要があった。
【００２３】
本実施の形態の情報処理装置１は、ＣＰＵ１０およびＧＰＵ２０のそれぞれに対する命令を同じ記述によって記述するための構成として、ライブラリ１７を記憶している。図２は、ライブラリ１７に記憶されたデータの例を示す図である。図２に見られるように、ライブラリ１７には、主関数とそれに対応する補助関数が対応付けられて記憶されている。また、図２には示していないが、ライブラリ１７には、処理を実行するモードを指定するモード指定関数も記憶されている。モード指定関数は、その引数によってモードを指定するものであり、具体的には、後述する図５にて説明する。
【００２４】
図３は、主関数および補助関数の具体例を示す図である。図３は、乗算の主関数および補助関数を示している。図３（ａ）に示すように主関数は、ＣＰＵ１０かＧＰＵ２０のいずれの演算器で実行するかに応じて、補助関数を呼び出す。なお、ＣＰＵも演算器の一つであるので、本明細書にて「演算器」という場合に、ＣＰＵを含むことがある。
【００２５】
図３（ｂ）は、ＣＰＵ１０用の補助関数の例を示す図である。この補助関数は、ＣＰＵ用カーネル１８で提供されている関数（ＩＮＴＥＬ（登録商標）のＭＫＬ）によって実装されている。図３（ｃ）は、ＧＰＵ２０用の補助関数の例を示す図である。この補助関数は、ＧＰＵ用カーネル１９で提供されている関数（ＮＶＩＤＩＡ（登録商標）のＣＵＢＬＡＳ）によって実装されている。
【００２６】
なお、ライブラリ１７には、図２及び図３に例示する関数のほかに、数値演算子（行列乗算、配列演算、減算、配列のべき乗、行列のべき乗等）、論理演算子（論理否定、論理積、論理和、排他的論理和等）、比較演算子、一般関数（絶対値、指数、自然対数、平方根等）、三角関数、フーリエ変換（２次元高速フーリエ変換、２次元逆離散フーリエ変換）、補間、汎用関数（サイズ変更、転置、垂直方向結合、水平方向結合等）、フィルタ（２次元コンボリューション、２次元メディアフィルタ等）、色空間関数（ＲＧＢからグレースケールへの変換、ＲＧＢからＹＣｂＣｒへの変換、ＲＧＢからＨＳＶへの変換等）、静的関数（単位行列生成、全要素が１の行列生成、全要素が０の行列生成、一様分布の擬似乱数生成、正規分布の擬似乱数生成、数列生成等）等の多数の関数が記憶されている。
【００２７】
なお、図３（ａ）に示した主関数の例では、mtimesという関数を呼び出す例を挙げているが、このような数値演算の場合には、例えば、「＊」という数値演算子によって関数を呼び出せるように、演算子のオーバーロードを行ってもよい。例えば、プログラムに「Ａ＊Ｂ」と記述され、ＣＰＵ１０が「Ａ＊Ｂ」を読み込むと、ＣＰＵ１０は主関数であるmtimes(A,B)を呼び出す。その結果、補助関数が呼び出されるので、情報処理装置１は、ＣＰＵ１０およびＧＰＵ２０のいずれの演算器に対しても乗算の命令を出すことができる。
【００２８】
図４は、本実施の形態の情報処理装置１によってプログラム１６を実行するときの動作を示すフローチャートである。図５は、情報処理装置１によって処理されるプログラム１６の一例を示す図である。情報処理装置１は、まず、ＨＤＤ１５に記憶されたプログラム１６を実行するに際して、各演算器のメモリの領域を確保する（Ｓ１０）。本実施の形態においては、ＣＰＵ１０のＲＡＭ１１とＧＰＵ２０のＲＡＭ２１において、同じ大きさのメモリ領域を確保する。
【００２９】
続いて、ＣＰＵ１０は、ＨＤＤ１５からプログラム１６を読み出し、読み出したプログラム１６にしたがって処理を行っていく。まず、ＣＰＵ１０は、読み出したプログラム１６に基づいて、モードの判定を行う（Ｓ１１）。図５に示す例では、第５行目に「NTP::setCalcDevice( eGPU );」という関数が記載されており、ここで、ＧＰＵモードが設定されている。したがって、ＣＰＵ１０は、ＧＰＵモードであると判定し、これ以降の処理はＧＰＵモードで行う。
【００３０】
次に、ＣＰＵ１０は、主関数を読み出し（Ｓ１２）、主関数に対応する補助関数であって実行中のモードに対応する補助関数を呼び出す（Ｓ１３）。例えば、図５に示す例において、第１０行目に「NTP c=a*b;」という数値演算子が記載されているが、ＣＰＵ１０はこの数値演算子をmtimes(a,b)という関数でオーバーロードする。なお、「NTP c=a*b;」に代えて「NTP c = mtimes(a,b);」と記述してもよく、この場合には、演算子のオーバーロードを行わない。
【００３１】
次に、ＣＰＵ１０は、演算に必要なデータが記憶されている領域がどこにあるかを確認し、必要に応じてデータ転送を行う（Ｓ１４）。すなわち、ＣＰＵモードで演算を行う際に用いるデータが、ＣＰＵ１０のＲＡＭ１１に記憶されているかどうか、ＧＰＵモードで演算を行う際に用いるデータがＧＰＵ２０のＲＡＭ２１に記憶されているかどうかを判断する。
【００３２】
そして、例えば、ＣＰＵモードで、ＣＰＵ１０が演算を行う際に、その演算に必要となるデータがＧＰＵ２０のＲＡＭ２１に記憶されている場合には、ＧＰＵ２０のＲＡＭ２１に記憶されたデータをＣＰＵ１０のＲＡＭ１１に転送するように、ＧＰＵ２０に対して命令する。逆に、ＧＰＵモードで演算を行う場合に、演算に必要なデータがＣＰＵ１０のＲＡＭ１１にあるときは、ＲＡＭ１１に記憶されたデータをＧＰＵ２０のＲＡＭ２１に転送するように、ＣＰＵ１０に対して命令する。
【００３３】
図５に示す例では、第１０行目に、ＧＰＵモードで処理すべき「NTP c=a*b;」という命令が記述されている。変数ａ，ｂは、ＧＰＵ２０で生成されてＲＡＭ２１に記憶されているので（第７行、第８行）、この場合には、データを転送する必要はない。第１０行目にＣＰＵモードで処理すべき「c=a*b;」という命令が記述されているが、この場合には、変数ａ，ｂは、ＣＰＵ１０のＲＡＭ１１にはないので、演算に先立って、ＧＰＵ２０に対して、ＧＰＵ２０のＲＡＭ２１に記憶された変数ａ，ｂのデータをＣＰＵ１０のＲＡＭ１１に転送するように命令する。
【００３４】
続いて、ＣＰＵ１０は、主関数であるmtimesに対応するＧＰＵモードの補助関数として、「ctimes_gpu」をコールする（図２及び図３参照）。そして、ＣＰＵ１０は、モードに対応する演算器に対して命令を送信する。ここでは、ＧＰＵモードであるので、ＣＰＵ１０は、「ctimes_gpu」の補助関数が規定する命令をＧＰＵ２０に送信する（Ｓ１５）。
【００３５】
続いて、ＣＰＵ１０は、プログラム１６が終了したか否か判定し（Ｓ１６）、終了していない場合には（Ｓ１６でＮＯ）、モードを判定する処理（Ｓ１１）に戻り、以上に説明した処理を繰り返し行う。逆に、例えば、図５に示すプログラム１６の最終行に記載された「NTP::term(); 」を読み出した場合等のようにプログラム１６が終了したと判定された場合には（Ｓ１６でＹＥＳ）、各演算器のメモリを解放する（Ｓ１７）。具体的には、情報処理装置１は、ＲＡＭ１１およびＲＡＭ２１に割り当てたメモリ領域を解放する。そして、情報処理装置１によるプログラム１６の実行を終了する。以上、本実施の形態の情報処理装置１の構成および動作について説明した。
【００３６】
本実施の形態の情報処理装置１は、主関数と当該主関数に対応する補助関数との組合せを有するライブラリ１７を記憶しておき、プログラム１６を実行する際には、モードに合わせて主関数に補助関数を呼び出して実行するので、プログラム開発者は、主関数によってプログラム１６を記述することによって、ＣＰＵ１０およびＧＰＵ２０を用いた処理を行うことができ、プログラム１６の作成が容易になる。本実施の形態では、ＣＰＵ１０とＧＰＵ２０の２つ演算器を有する情報処理装置１を例としたが、演算器の数がさらに多くなった場合には、同じプログラム１６の記述によってさらに多くの演算器を動作させることができるので、本実施の形態の構成の効果がより顕著になる。
【００３７】
また、本実施の形態では、どの演算器を使って処理を行うかを特定するモードを変えることにより、ＣＰＵ１０とＧＰＵ２０とを簡単に切り替えることができる。したがって、ＧＰＵ２０を使ってパフォーマンスが出ない場合にはＣＰＵ１０を使って処理を行う等のプログラム変更を容易に行うことができ、最適に演算器を用いた処理を実現できる。
【００３８】
また、本実施の形態では、ＣＰＵ１０のＲＡＭ１１とＧＰＵ２０のＲＡＭ２１に同じ大きさのメモリ領域を確保するので、ＣＰＵ１０とＧＰＵ２０との間でデータの転送が発生する場合にも、安全に処理することができる。例えば、変数ａ，ｂは、ＧＰＵ２０で生成され、ＧＰＵ２０のＲＡＭ２１に記憶されている（第７行、第８行）。ＣＰＵモードに切り替えて（第１３行）、「c=a*b」を演算する際には（第１７行）、ＣＰＵ１０のＲＡＭ１１にあらかじめ確保されたメモリ領域において、変数ａ，ｂの記憶領域を割り当て、ＧＰＵ２０から変数ａ，ｂのデータを転送することができる。
【００３９】
以上、本発明の情報処理装置について、実施の形態を挙げて詳細に説明したが、本発明は上記した実施の形態に限定されるものではない。
【００４０】
上記した実施の形態では特に言及しなかったが、演算器（ＣＰＵまたはＧＰＵ）に対する命令の送信は、命令に対する処理結果を待って送信してもよいし、処理結果を待たずに送信してもよい。処理結果を待たずに送信する場合には、いくつかの命令を送信した後で、処理結果を待つ。これにより、ＣＰＵとＧＰＵの並列処理を実現することが可能となる。
【産業上の利用可能性】
【００４１】
以上説明したとおり、本発明によれば、同じ記述により、ＣＰＵと演算器のいずれでも演算が可能な情報処理装置を実現することができ、ＣＰＵと演算器とを備えた情報処理装置において、プログラム開発者がプログラミングを行いやすい開発環境を提供することができる。
【符号の説明】
【００４２】
１  情報処理装置
１０  ＣＰＵ
１１  ＲＡＭ
１２  ＲＯＭ
１３  キーボード
１４  マウス
１５  ＨＤＤ
１６  プログラム
１７  ライブラリ
１８  ＣＰＵ用カーネル
１９  ＧＰＵ用カーネル
２０  ＧＰＵ
２１  ＲＡＭ
【図１】
2015026332.tif 000003
【図２】
2015026332.tif 000004
【図３】
2015026332.tif 000005
【図４】
2015026332.tif 000006
【図５】
2015026332.tif 000007