JP6222079B2 - 計算機システム、その処理方法、及びプログラム - Google Patents

計算機システム、その処理方法、及びプログラム Download PDF

Info

Publication number
JP6222079B2
JP6222079B2 JP2014501844A JP2014501844A JP6222079B2 JP 6222079 B2 JP6222079 B2 JP 6222079B2 JP 2014501844 A JP2014501844 A JP 2014501844A JP 2014501844 A JP2014501844 A JP 2014501844A JP 6222079 B2 JP6222079 B2 JP 6222079B2
Authority
JP
Japan
Prior art keywords
data
host
unit
processing
computer system
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.)
Active
Application number
JP2014501844A
Other languages
English (en)
Other versions
JPWO2013128531A1 (ja
Inventor
一久 石坂
一久 石坂
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2013128531A1 publication Critical patent/JPWO2013128531A1/ja
Application granted granted Critical
Publication of JP6222079B2 publication Critical patent/JP6222079B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/167Interprocessor communication using a common memory, e.g. mailbox
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/067Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3826Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage
    • G06F9/3828Bypassing or forwarding of data results, e.g. locally between pipeline stages or within a pipeline stage with global bypass, e.g. between pipelines, between clusters
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor
    • G06F9/3879Concurrent instruction execution, e.g. pipeline or look ahead using a slave processor, e.g. coprocessor for non-native instruction execution, e.g. executing a command; for Java instruction set
    • G06F9/3881Arrangements for communication of instructions and data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Human Computer Interaction (AREA)
  • Advance Control (AREA)
  • Multi Processors (AREA)

Description

本発明は、プログラムの簡素化を行うことで、その開発生産性を向上させた計算機システム、その処理方法、及びプログラムに関するものである。
ソフトウェアによって画像処理などを行う場合の処理方式として、複数の処理をパイプライン状に接続して、次々にデータを流しながら処理を行うパイプライン処理がある。パイプライン処理では、先行する処理と後続する処理を異なるデータに対して同時に行うことや、同一の処理を複数の異なるデータに対して同時に行うことが可能である。したがって、パイプライン処理では、複数のプロセッサコアを備えたマルチコアプロセッサを用いることで、これらの同時に実行可能な処理を並列に行い、その処理性能を向上させることができる。
現在、主流である共有メモリ型マルチコアプロセッサにおいては、並列処理を行う方法としてスレッドが利用されている。この方法では、一つのプロセス中の複数のスレッドは、それぞれ異なるプロセッサコア上で動作することが可能となっている。しかしながら、メモリ空間を共有するため、並列処理のためのプログラミングが比較的に容易なことが知られている。上記パイプライン処理では、パイプライン中の各処理を異なるスレッドによって実行することで、並列処理を行うことができる。
このような複数のスレッドで並列処理を行うプログラムとしては、一般にプロセッサの備えるコア数が多いほど高性能となる。したがって、処理性能を向上させるためには、よりコア数の多いプロセッサを搭載した計算機に置き換えるという方法を取ることができる。しかしながら、この方法では計算機の置き換えに伴う作業が必要であるなどの問題が生じるため、計算機を置き換えずに処理性能向上を図る方法も必要とされる。
一方、既存の計算機を置き換えたり、複数の計算機を用いたりすることなく、計算機システムの処理性能を向上させる方法として、プロセッサを搭載した拡張カードを、計算機の拡張バスに接続するという方法が存在する(例えば、特許文献1参照)。この方法においては、計算機システムが元々備えるプロセッサに加えて、拡張カード上のプロセッサを効果的に利用することで、全体としての処理性能を向上させることが可能となる。本明細書において、このような拡張カードをアクセラレータと称し、このアクセラレータに対して、元々の計算機システムをホストシステム(または単にホスト)と称す。
一般に、アクセラレータを用いる場合は、プログラム開発が困難になることが知られている。このため、パイプライン処理を、アクセラレータを用いて高性能化することが困難となっている。従来のアクセラレータは、浮動小数点演算やグラフィック処理などの特定の処理の高速化に主眼が置かれている。このため、アクセラレータ用のプログラムは、ホスト上のプログラムとは異なる特別なプログラミング言語で記述する必要があり、そのことがプログラム開発を困難化する要因となっている。
これに対し、近年、より汎用的なプロセッサコアを複数搭載することで高性能を発揮するマルチコア型アクセラレータなどが利用されるようになっている。この様なアクセラレータにおいては、ホストプロセッサとプログラミング言語の互換性が高いといった特徴がある。
一方、アクセラレータを利用する場合に、プログラム開発を困難にするもう一つの要因として、ホストとアクセラレータ間のデータ転送に起因する課題が存在する。一般に、アクセラレータを接続する拡張バスのデータ転送速度は、プロセッサとメモリを接続するメモリバスに比べて低速である。このため、通常、アクセラレータは、自身のプロセッサが利用するための独自メモリを備えている(例えば、特許文献2及び3参照)。したがって、アクセラレータを搭載したシステムにおいては、ホストプロセッサとアクセラレータプロセッサがそれぞれ異なるメモリ空間を利用することになる。このため、ホストとアクセラレータ上で動くプログラム間では、共有メモリ型マルチコアのようにメモリを介して直接データを送受信することができず、専用のデータ転送手段を利用する必要がある。例えば、プロセス内の複数のスレッドを用いたパイプライン処理を行う場合、各処理間のデータは共有メモリを介して転送される。これに対し、ホストとアクセラレータ間では、専用のデータ転送手段が利用されることになる。
特開2011−243055号公報 特開2011−065650号公報 特開2010−061648号公報
ここで、例えば、図19に示すように、処理A、処理B、及び処理Cの3つの処理で構成されるパイプライン処理のうち、処理Bをホスト内の複数のスレッドとアクセラレータを用いて実行する場合を想定する。また、キューを用いて各処理間を接続し、アクセラレータ用の言語拡張を用いてアクセラレータを呼び出す場合を想定する。この場合、図19で示されるように、ホスト上の処理Aと処理Bの間はキューを用いてデータが送受信されているのに対して、ホスト上の処理A及びCとアクセラレータ上の処理Bとの間では専用のデータ転送部が利用される。このように、データ並列処理を、ホストとアクセラレータとを用いて行う場合は、ホスト内と、ホストとアクセラレータ間で、データを送受信する手段が異なることになる。これはプログラムを複雑化させ、その開発生産性を悪化させるという問題を生じさせている。
本発明は、このような問題点を解決するためになされたものであり、プログラムの簡素化を行うことで、その開発生産性を向上させた計算機システム、その処理方法、及びプログラムを提供することを主たる目的とする。
上記目的を達成するための本発明の一態様は、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有するホスト手段と、前記ホスト手段に接続され該ホスト手段の機能を拡張すると共に、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有する拡張手段と、を備える計算機システムであって、前記ホスト手段内のスレッド間においてデータを受け渡す機能と、前記ホスト手段上のスレッドと前記拡張手段上のスレッドとの間においてデータを受け渡す機能と、を有する共通通信手段を備える、ことを特徴とする計算機システムである。
また、上記目的を達成するための本発明の一態様は、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有するホスト手段と、前記ホスト手段に接続され該ホスト手段の機能を拡張すると共に、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有する拡張手段と、を備える計算機システムの処理方法であって、前記ホスト手段内のスレッド間においてデータを受け渡すステップと、前記ホスト手段上のスレッドと前記拡張手段上のスレッドとの間においてデータを受け渡すステップと、を含む、ことを特徴とする計算機システムの処理方法であってもよい。
さらに、上記目的を達成するための本発明の一態様は、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有するホスト手段と、前記ホスト手段に接続され該ホスト手段の機能を拡張すると共に、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有する拡張手段と、を備える計算機システムのプログラムであって、前記ホスト手段内のスレッド間においてデータを受け渡す処理と、前記ホスト手段上のスレッドと前記拡張手段上のスレッドとの間においてデータを受け渡す処理と、をコンピュータに実行させることを特徴とする計算機システムのプログラムであってもよい。
本発明によれば、プログラムの簡素化を行うことで、その開発生産性を向上させた計算機システム、その処理方法、及びプログラムを提供することができる。
本発明の一実施の形態に係る計算機システムの機能ブロック図である。 本発明の実施の形態1に係る計算機システムの概略的なハードウェア構成の一例を示すブロック図である。 本発明の実施の形態1に係る計算機システム上における概略的なソフトウェア構成の一例を示すブロック図である。 本発明の実施の形態2に係る計算機システム上における概略的なソフトウェア構成の一例を示すブロック図である。 本発明の実施の形態3に係る計算機システムの概略的ハードウェア構成を示すブロック図である。 本発明の実施の形態3に係る計算機システム上におけるソフトウェア構成の一例を示すブロック図である。 本発明の実施の形態4に係る計算機システムの概略的な構成の一例を示すブロック図である。 ソースコードから生成されたプロセスを含む、本発明の実施の形態4に係る計算機システムのソフトウェア構成の一例を示すブロック図であり、ホスト上の構成を中心にして示したブロック図である。 本発明の実施の形態4に係る計算機システムのソフトウェア構成の一例を示すブロック図であり、アクセラレータ上の構成を中心にして示したブロック図である。 本発明の実施の形態5に係る計算機システムのパイプライン処理の一例を説明するための図である。 処理Aと処理Bとの間で渡されるデータ構造の一例を、C言語構造体で示した図である。 本発明の実施の形態5で利用されるプログラムのソースコードの一例を示す図である。 本発明の実施の形態5に係るホストおよびアクセラレータを説明するための図である。 本発明の実施の形態5に係る共通通信部を説明するための図である。 本発明の実施の形態5に係るパイプライン構築部によってホスト上のプロセス中に構成されるパイプラインの一例を示す図である。 アクセラレータ上のプロセス中に構築されるパイプラインの一例を示す図である。 本発明の実施の形態5に係る計算機システムの全体の接続構成の一例を示す図である。 ホスト上のスレッドのみで処理した場合の一例を示す図である。 ホスト及びアクセラレータ上のスレッドで並列処理した場合の一例を示す図である。 従来のホストアクセラレータ間の処理の一例を示す図である。
以下、図面を参照して本発明の実施の形態について説明する。図1は、本発明の一実施の形態に係る計算機システムの機能ブロック図である。本実施の形態に係る計算機システム10は、ホスト手段110と、ホスト手段110に接続されそのホスト手段110の機能を拡張する拡張手段120と、ホスト手段110と拡張手段120との間でデータの受け渡しをする共通通信手段130と、を備えている。また、ホスト手段110及び拡張手段120は、夫々、データを格納する格納手段111、121と、その格納されたデータを処理する処理手段112、122と、を有している。
さらに、共通通信手段130は、ホスト手段110内のスレッド間においてデータを受け渡す機能と、ホスト手段110上のスレッドと拡張手段120上のスレッドとの間においてデータを受け渡す機能と、を有している。これにより、計算機システム10のプログラムの簡素化を行うことで、その開発生産性を向上させることができる。
実施の形態1.
図2は、本発明の実施の形態1に係る計算機システムの概略的なハードウェア構成の一例を示すブロック図である。本実施の形態1に係る計算機システム10は、ホストシステム(以下、ホストと称す)2と、アクセラレータ3と、ホスト2とアクセラレータ3間でデータを転送するデータ転送部4と、を備えている。ホスト2及びアクセラレータ3は、夫々、プロセッサ21、31及びメモリ22、32を有している。
図3は、本実施の形態1に係る計算機システム上における概略的なソフトウェア構成の一例を示すブロック図である。本実施の形態1に係る計算機システム10において、ホスト2及びアクセラレータ3上で、夫々、OS(Operating System)5、6及びプロセス7、8が動作し、各プロセス7、8を共通通信部9が接続している。
各OS5、6は、ホスト2とアクセラレータ3との間のデータ転送部4を用いて、ホスト2とアクセラレータ3間でデータを転送する機能を有している。各OS5、6は、そのデータ転送機能を、ユーザープログラムなどを介して利用可能となっている。なお、ホスト2上を動作するOS5とアクセラレータ3上を動作するOS6とは、異なるOSであるが、同一のOSであってもよい。
ホスト2上のプロセス7は、処理を依頼する処理依頼部71と、処理を実行する処理実行部72と、データを格納するデータ格納部73と、データを送受信するデータ送受信部74と、を有している。ホスト2及びアクセラレータ3のデータ格納部73、83及びデータ送受信部74、84が、共通通信部9を構成する。
処理依頼部71は、入力手段の一具体例であり、処理実行部72において処理対象となるデータを生成する機能を有している。また、処理依頼部71は、データ生成の際に、プロセス7外部からデータを受信する機能も有している。
処理実行部72は、処理手段の一具体例であり、データに対して処理を実行する機能を有している。また、処理実行部72は、同時に複数のデータに対して処理を行う機能を有しているのが望ましい。典型的には、処理依頼部71及び処理実行部72は、夫々独立したスレッドとして実現されている。また、処理実行部72を複数のスレッドによって実現することで、複数のデータに対して同時に処理を行うことが可能となる。
共通通信部9は、共通通信手段の一具体例であり、ホスト2上のデータ格納部73と、アクセラレータ3上のデータ格納部83と、ホスト2及びアクセラレータ3間のデータを転送するホストアクセラレータ間データ転送部(データ転送手段の一具体例)11と、から構成されている。また、ホストアクセラレータ間データ転送部11は、ホスト2上のデータ送受信部(データ送受信手段の一具体例)74と、アクセラレータ3上のデータ送受信部84と、から構成されている。
データ格納部73、83は、格納手段の一具体例であり、プロセス7、8のメモリ空間上に構成されており、データ書込み機能、及び、データ読出し機能を有している。データ格納部73、83は、複数のデータを格納することができることが望ましい。
ホスト2のデータ送受信部74は、データ格納部73からデータを読み出しOS5を呼び出すことによって、読み出したデータを、ホストアクセラレータ間データ転送部11を介して、アクセラレータ3に送信する機能と、アクセラレータ3のデータ送受信部84から送信されたデータを、データ格納部73に格納する機能と、を有している。
アクセラレータ3上のプロセス8は、ホスト2上のプロセス7と同様に、処理実行部(処理手段の一具体例)82と、データ格納部83と、データ送受信部(データ送受信手段の一具体例)84と、を有している。これら処理実行部82、データ格納部83、及びデータ送受信部84の機能は、ホスト2上の対応する処理実行部72、データ格納部73、及びデータ送受信部74の機能と略同一であるため、その説明を省略する。なお、本実施の形態1において、処理はホスト2上から依頼されるため、アクセラレータ3上のプロセス8は処理依頼部を有していない構成となっている。
次に、本実施の形態1に係る計算機システムの動作について詳細に説明する。まず、ホスト2上の処理依頼部71は、入力されるデータに基づいて、処理実行部72において処理対象となるデータを生成する。ここで、処理依頼部71にデータが入力される方法は、典型的に、計算機システム10の外部接続手段からデータが入力される場合や、ユーザによって指示入力される場合であるが、これに限らず、任意の方法が適用可能である。
次に、ホスト2上の処理依頼部71は、生成した処理対象データをデータ格納部73に格納する。なお、処理対象データが複数存在する場合は、その複数の処理対象データを夫々データ格納部73に格納する。その後、処理実行部72は、データ格納部73に格納された処理対象データを読み出し処理を行う。なお、データ格納部73に処理対象データが複数格納されている場合は、処理実行部72は先に取り出した処理対象データに対する処理が終了する前に、新たな処理対象データを取り出し、処理を始めても良い。
処理実行部72が実行した処理結果を処理依頼部71に対して返信する場合は、上記逆の動作によって行うことができる。このとき、データ格納部73に格納されたデータは、どこからどこへ送信されるか識別でき、正確な送信先に届くように構成されている。例えば、処理依頼部71がデータ格納部73に格納したデータは、処理実行部72またはデータ送受信部74のみが取り出すように構成され、処理実行部72またはデータ送受信部74がデータ格納部73に格納したデータは、処理依頼部71のみが取り出すように構成されている。
ホスト2上のデータ送受信部74は、データ格納部73に格納されたデータを取り出す。データ送受信部74は、OS5を呼び出し、呼び出したOS5に対して、取り出したデータをアクセラレータ3に対し送信することを指示する。OS5は、ホスト2及びアクセラレータ3間のデータ転送部4を介して、アクセラレータ3上のOS6を呼び出し、呼び出したOS6に対し処理対象データを送信する。
アクセラレータ3上のOS6は、受信したデータをアクセラレータ3上のデータ送受信部84に送信する。アクセラレータ3上のデータ送受信部84は、ホスト2のOS5からデータを受信し、アクセラレータ3上のデータ格納部83に格納する。アクセラレータ3上の処理実行部82は、データ格納部83に格納されたデータを読み出し、処理を実行する。
なお、ホスト2上のデータ格納部73に複数のデータが格納されている場合、ホスト2上のデータ送受信部74は、格納された複数のデータを夫々アクセラレータ3に送信しても良い。また、アクセラレータ3上のデータ格納部83に複数のデータが格納されている場合、アクセラレータ3上の処理実行部82は、データ格納部83から先に取り出したデータに対する処理が終了する前に、新しいデータを取り出し処理を行ってもよい。さらに、ホスト2上の処理実行部72が処理を行う動作と、アクセラレータ3上の処理実行部82が処理を行う動作とは、同時に実行されることが望ましい。これにより、全体として同時に実行される処理実行部の数が増えるため、処理性能を向上させることができる。
さらにまた、ホスト2上の処理実行部72のみがデータ格納部73に格納された特定のデータを取出し処理するようにする機能を、共通通信部9が有していても良い。これにより、ホスト2内の処理実行部72のみが特定のデータを実行できるようにすることができる。同様に、アクセラレータ3上の処理実行部82のみが特定のデータの処理を行うようにする機能を、共通通信部9が有していても良い。
以上、本実施の形態1に係る計算機システム10によれば、ホスト2上の処理依頼部71からホスト2上の処理実行部72へデータを送信する場合と、ホスト2からアクセラレータ3上の処理実行部82へデータを送信する場合と、のいずれの場合においても、各データ格納部73、83へのデータの格納及び取出しによって行うことができる。したがって、処理依頼部71や処理実行部72、82がホストアクセラレータ間データ転送部11を直接用いる必要が無い為、プログラムをより簡潔に記述できる。すなわち、計算機システム10のプログラムの簡素化を行うことで、その開発生産性を向上させることができる。
なお、上記実施の形態1において、アクセラレータ3が処理依頼部を更に備える構成であってもよい。アクセラレータ3が処理依頼部を備えることによって、アクセラレータ3上で新たな処理を開始することが可能になる。
実施の形態2.
本発明の実施の形態2に係る計算機システム20のハードウェア構成は、上記実施の形態1に係る計算機システム10のハードウェア構成と略同一である。図4は本実施の形態2に係る計算機システム上における概略的なソフトウェア構成の一例を示すブロック図である。本実施の形態2に係る計算機システム20は、ホスト2上に2つのプロセス7、12が存在すること、及び、共通通信部13がホスト内データ転送部14を更に有すること、が特徴である。
ホスト内データ転送部14は、プロセス7上のデータ送受信部75とプロセス12上のデータ送受信部123と、から構成されている。ホスト内データ転送部14の各データ送受信部75、123は、ホストアクセラレータ間データ転送部11のデータ送受信部74、84と同様の機能を有しており、さらに、OS5、6の提供するプロセス間通信機能を利用してホスト2内の別プロセス中のデータ送受信部にデータを転送する機能を有している。本実施の形態2に係る計算機システム20において、他の構成は上記実施の形態1に係る計算機システム10と略同一であるため、詳細な説明は省略する。
本実施の形態に係る計算機システム20によれば、ホスト2上の複数のプロセス7、12を用いて効率的に処理を行うことができる。また、ホスト2上のプロセス7、12とアクセラレータ3上のプロセス8とが利用するメモリ空間が異なるのと同様に、ホスト2上の各プロセス7、12が利用するメモリ空間も異なる。このため、複数のメモリ空間を利用した場合にプログラムが正確に動作するかを確認することができる。
なお、上記実施の形態2において、ホスト2上に2つのプロセス7、12が存在する構成について説明したが、これに限らない。例えば、ホスト2上に3つ以上のプロセスが存在する構成、あるいは、アクセラレータ3上に複数のプロセスが存在する構成についても適用可能である。
実施の形態3.
図5は、本発明の実施の形態3に係る計算機システム30の概略的ハードウェア構成の一例を示すブロック図である。本実施の形態3に係る計算機システム30は、複数のアクセラレータ3、15を備えることを特徴とする。図6は、本発明の実施の形態3に係る計算機システム上におけるソフトウェア構成の一例を示すブロック図である。
本実施の形態3に係る計算機システム30において、共通通信部17が複数のホストアクセラレータ間データ転送部11、18を有している。ホスト2上のデータ格納部73と各アクセラレータ3、15上のデータ格納部83、162とが、この複数のホストアクセラレータ間データ転送部11、18を介して相互に接続されている。これにより、例えば、ホスト2上の処理依頼部71が複数のアクセラレータ3、15上の処理実行部82、161に共通通信部17を介してデータを渡すことが可能となる。本実施の形態3に係る計算機システム30において、他の構成は上記実施の形態1に係る計算機システム10と略同一であるため、詳細な説明は省略する。
本実施の形態3に係る計算機システム30によれば、複数のアクセラレータが利用可能であるため、より高い処理性能が得られる。
なお、上記実施の形態3において、アクセラレータ3、15を2つ備える構成が適用されているが、これに限らず、例えば、アクセラレータを3つ以上備える構成も適用可能である。
さらに、上記実施の形態3において、共通通信部17が2つのアクセラレータ3、15上のデータ格納部83、162間で直接的にデータを転送するアクセラレータ間データ転送部を有していても良い。これにより、ホスト2を介さずにアクセラレータ3、15間で直接データを送受信することも可能となる。
実施の形態4.
図7は、本発明の実施の形態4に係る計算機システムの概略的な構成の一例を示すブロック図である。本実施の形態4に係る計算機システム40においては、ホスト2およびアクセラレータ3上のプロセス7、8を生成するための、プログラムのソースコード51をも含む構成となっている。なお、一般的に、このソースコード51をコンパイルし、オブジェクトの実行をOS5、6に対して指示することで、プロセス7、8が生成される。
本実施の形態4に係るプロセス7、8のソースコード51は、依頼部52と、実行部53と、データ投入部54と、データ取出部55と、パイプライン構築指示部56と、を有している。
依頼部52および実行部53は、例えば、プロセス7、8の処理依頼部71および処理実行部72、82の動作を記述したプログラムである。データ投入部54およびデータ取出部55は、例えば、共通通信部9のデータ格納部73、83へデータを投入する動作またはデータを取出す動作を記述したプログラムである。
パイプライン構築指示部56は、パイプライン構築部57に対して、パイプラインの構築を指示する。パイプライン構築部57は、パイプライン構築手段の一具体例であり、依頼部52、実行部53、データ投入部54、データ取出部55などの構成要素を接続することによって、処理依頼部71、および処理実行部72、82を生成し、生成した処理依頼部71及び処理実行部72、82の間を、共通通信部9を介して接続することにより、パイプラインを構築する機能を有するプログラムである。なお、パイプライン構築部57は、ユーザの記述した設定ファイルと、ホスト2及びアクセラレータ3のハードウェア構成と、に基づいてパイプラインの構築を行う機能を有しているのが望ましい。
また、本実施の形態4に係る計算機システム40は、パイプライン構築部57からの指示に応じて共通通信部9を生成する共通通信部生成部58を、更に備えている。共通通部信生成部58は、共通通信部9を構成するデータ格納部73、83およびホストアクセラレータ間データ転送部11を夫々生成する機能を有している。
次に、本実施の形態4に係る計算機システムの特徴的な動作である、パイプライン構築部がパイプラインを構築する動作について詳細に説明する。
まず、パイプライン構築部57は、共通通信部生成部58に対しデータ格納部73、83の生成を指示する。次に、パイプライン構築部57は、生成されたデータ格納部73、83に対し、データ投入部お54よびデータ取出部55を接続する。これにより、パイプライン中の処理間でデータ送受信が可能となる。その後、パイプライン構築部57は、ホストアクセラレータ間データ転送部11を生成し、生成したホストアクセラレータ間データ転送部11に、ホスト2及びアクセラレータ3上のデータ格納部73、83を接続する。これにより、ホスト2上とアクセラレータ3上におけるパイプラインの処理間において、データの送受信が可能となる。
次に、パイプライン構築部による具体的なパイプラインの構成について説明する。図8は、ソースコード51から生成されたプロセス7、8を含む、本実施の形態4に係る計算機システムのソフトウェア構成の一例を示すブロック図であり、ホスト上の構成を中心にして示したブロック図である。例えば、ホスト2上において、依頼部711がデータを生成、送信し、そのデータを実行部723、724で処理した後に最終的に依頼部712が受信するというデータフローのパイプライン処理が実行される。また、上記同様のパイプライン処理がアクセラレータ3上においても実行される。
なお、本実施の形態4に係る計算機システム40のハードウェア構成は、上記第1の実施の形態に係る計算機システム10と同一であるため、詳細な説明は省略する。処理依頼部71は、依頼部711、依頼部712、データ投入部713、及びデータ取出部714、を有している。パイプライン構築部57は、図8に示すような接続関係となるように、パイプラインを構築する。一方、処理実行部72は、実行部723と、実行部724と、実行部723、724に夫々接続されたデータ投入部725、726及びデータ取出部721、722と、を有している。パイプライン構築部57は、図8に示すような接続関係となるように、パイプラインを構築する。
パイプライン構築部57は、上述したようなデータフローでパイプライン処理が行われるように、共通通信部9のデータ格納部73として、図8に示すように、ホスト上に3つの記憶部731、732、733を生成し、各記憶部731、732、733を接続する。各記憶部731、732、733はデータ格納部73に格納されたデータを夫々記憶する機能を有している。上述したような接続を行うことで、依頼部711、データ投入部713、記憶部731、データ取出部721、実行部723、データ投入部725、記憶部732、データ取出部722、実行部724、データ投入部726、記憶部733、データ取出部714、及び依頼部712の順番でデータが流れる。
なお、各処理間のデータフローを明確に説明するために、複数の記憶部731、732、733を用いて、各記憶部731、732、733に、夫々、データ投入部713、725、726及びデータ取出部714、721、722を接続している。これにより、データがどこからどこへ流れるかを明確に区別することができる。
本実施の形態4において、データ格納部73のデータフローを区別する方法は、これに限定されるわけではない。例えば、1つの記憶部を用いる場合において、この記憶部に格納する各データにタグを付けることによって、データフローの方向を区別してもよく、任意の方法が適用可能である。
また、パイプライン構築部57は、ホストアクセラレータ間データ転送部11を記憶部732に接続する。これにより、実行部723の処理実行を終了したデータを、ホストアクセラレータ間データ転送部11を介してアクセラレータ3に転送することができる。また、パイプライン構築部57は、ホストアクセラレータ間データ転送部11から受信したデータが記憶部733に格納されるように、ホストアクセラレータ間データ転送部11を記憶部733に接続する。これにより、アクセラレータ3上の実行部で処理されたデータが、ホスト2上の記憶部733を介して依頼部712に渡されるようにしている。
図9は、本実施の形態4に係る計算機システムのソフトウェア構成の一例を示すブロック図であり、アクセラレータ上の構成を中心にして示したブロック図である。アクセラレータ3上では実行部824のみが処理実行を行う。このため、パイプライン構築部57は、アクセラレータ3上で、処理依頼部が無く、処理実行部82が3つの(複数の)実行部824、825、826で構成され、かつ、データ格納部83が2つの記憶部831、832で構成されるように、パイプラインを構築する。
なお、本実施の形態4において、パイプライン構築部57は、複数の実行部824、825、826を生成している。これにより、アクセラレータ3は複数の実行部824、825、826を並列に処理させることができ、処理性能を向上させることができる。各構成要素間の接続については、上記ホスト2上の接続と略同一であるため、説明は省略する。
以上、本実施の形態4に係る計算機システム40によれば、データ処理実行時(プログラム実行時)に、パイプラインを同時に構築することができる。また、ホストプロセッサ21やアクセラレータプロセッサ31のコア数に応じて、適切なパイプライン構成要素をホスト2及びアクセラレータ3上に夫々構築し、それらパイプライン構成要素を共通通信部9によって接続することで、一つのパイプラインを構築することができる。したがって、ホストプロセッサ21やアクセラレータプロセッサ31のコア数などに依存したソースコードを記述する必要がないという効果が得られる。
さらに、ホスト2のプロセッサ21とソースコード互換性のあるプロセッサ31を搭載したアクセラレータ3を用いることで、ホスト用プロセスのソースコードと、アクセラレータ用プロセスのソースコードと、を同一にすることが可能なる。したがって、単一のソースコードのホスト2及びアクセラレータ3を備えた計算機システム40を利用できるようになり、プログラム開発生産性を向上させることができるという効果が得られる。
実施の形態5.
本発明の実施の形態5において、上記実施の形態1に係る計算機システム10の動作をより具体的な実施例を用いて説明する。図10は、本実施の形態5に係る計算機システムのパイプライン処理の一例を説明するための図である。このパイプライン処理は、例えば、処理A、処理B、処理Cの3つの処理から構成されている。
処理Aは継続的にパイプライン外部から入力データを受け付ける処理である。例えば、計算機システム10に接続されたカメラから定期的に画像データを読み出し、メモリ上に書き込むといった処理である。処理Bは、パイプライン処理の中核となる処理であり、複数の入力データを並列に実行できる処理である。例えば、入力された画像データに対して画像認識を行うといった処理である。処理Cは、処理Bの結果を受け取り、外部に出力する処理である。例えば、画像認識結果を計算機システムの表示装置に表示させるといった処理である。
図11は、処理Aと処理Bとの間で渡されるデータ構造の一例を、C言語構造体で示した図である。本実施の形態において、例えば、データサイズを示すsizeメンバと、データが格納されたメモリ中のアドレスを示すaddrメンバと、を有する構造体が利用されている。処理Aと処理Bにおいてこの構造体へのポインタが渡される。なお、処理Bと処理Cとの間におけるデータの受け渡しについては、周知であるため説明は省略する。
図12は、本実施の形態5で利用されるプログラムのソースコードの一例を示す図である。本実施の形態5において、ホスト2とアクセラレータ3とで同一のソースコードを利用し、処理間のデータ受渡しにキューを用いている。本実施の形態5に係るプログラムは、4つのモジュール57、61、62、63から構成されている。1つ目のモジュール61は、処理Aと、キューへデータ(上記構造体へのポインタ)を投入するキュー投入部611と、から構成されている。2つ目のモジュール62は、キューからデータを取り出すキュー取出部621と、処理Bと、キュー投入部622と、から構成されている。3つ目のモジュール63は、キュー取出部631と、処理Cと、から構成されている。4つ目のモジュール57は、上記3つのモジュールを組み合わせて、パイプラインを構成するパイプライン構築部57である。パイプライン構築部57は、スレッドを生成して、生成した各スレッドを上記3つのモジュール61、62、63に割り当てる機能を有している。なお、処理Aおよび処理Cを含む各モジュール61、63に、1つのスレッドを割り当て、処理Bを含むモジュール62に、複数の(2つの)スレッドを割り当てることで、処理Bが並列に実行される。典型的には、処理Bを含むモジュール62に割り当てるスレッド数は、ホストプロセッサ21またはアクセラレータプロセッサ31のコア数に応じて、決められる。なお、具体的なスレッドの生成方法や、スレッドに処理を割り当てる方法は、一般的なOSで使用される方法を用いても良い。
図13は、本実施の形態5に係るホストおよびアクセラレータを説明するための図である。本実施の形態5において、アクセラレータ3は、ホストプロセッサ21とソースコード互換性を有するプロセッサ31と、ホスト2のスレッド生成部64とAPI(Application Program Interface)互換性を有するスレッド生成部65と、を備えている。ホスト2とアクセラレータ3は、PCIe(Peripheral Component Interconnect express)バス66で接続されている。
図14は、本実施の形態5に係る共通通信部を説明するための図である。本実施の形態5に係る共通通信部9は、データ格納部73、83を構成するキューH1、H2、A1、A2と、データ転送部4を構成する送信スレッド61、64および受信スレッド62、63と、を有している。キューH1、H2、A1、A2は、プロセス7、8のメモリ空間上に生成され、処理間で受け渡すデータを記録する。なお、キューH1、H2、A1、A2のデータ構造は、周知であるため、その実装方法の説明は省略する。
各データ格納部73、83は、夫々、2つのキューH1、H2、A1、A2を用いて、処理Aと処理Bとの間で受け渡すデータを格納し、処理Bと処理Cとの間でデータを受け渡す。また、上述の如く、キューH1、H2、A1、A2はプロセス7、8のメモリ空間上に作成される。このため、例えば、処理Aと処理Bとの間でデータを受け渡すためには、上記構造体へのポインタだけをキューH1、H2、A1、A2に格納すればよく、データ本体をキューH1、H2、A1、A2に格納する必要はない。これにより、プロセス7、8内においてデータを高速に受け渡すことができ、処理の高速化に繋がる。
ホスト2上の送信スレッド61は、キューH1からデータを読み出し、OS5のホストアクセラレータ間通信機能を呼び出して、読み出したデータをアクセラレータ3上の受信スレッド63に対して送信する。アクセラレータ3上の受信スレッド63は、データを受信すると、受信したデータをキューA1に格納する。このとき、キューA1には上記構造体へのポインタが格納されているが、送信スレッド61はポインタを送信するのではなく、構造体メンバであるsizeと構造体メンバであるaddrで示されるアドレスとに基づいて、sizeバイトの範囲にあるデータ本体を送信する。この動作は、周知の、データのシリアライズと呼ばれる動作と同一である。一方、受信スレッド63は、sizeとデータ本体とを受信し、これを構造体に格納し、この構造体のポインタをキューA1に格納する。この動作は、周知のデータのデシリアライズと呼ばれる動作と同一である。
このように、送信スレッド61、64がシリアライズを行い、受信スレッド62、63がデシリアライズを行うことで、ホスト2とアクセラレータ3とでデータ転送を行うときのみ、シリアライズ又はデシリアライズが行われる。このため、ホスト2やアクセラレータ3内でデータを送受信するときには、シリアライズ又はデシリアライズを行う必要がなく、データ送受信のオーバヘッドを低下させることができる。
また、処理A、処理B、処理Cは、キューH1、H2、A1、A2へのデータの投入やキューH1、H2、A1、A2からのデータの取り出しによって、データを受け渡すことができる。このため、データ受渡先や、データ元が同一プロセス7、8上にあるのか、異なるプロセス7、8上にあるのかを使い分ける必要がなく、処理部のプログラムを簡潔化することができる。
図15は、本実施の形態5に係るパイプライン構築部によってホスト上のプロセス中に構成されるパイプラインの一例を示す図である。本実施の形態5において、4つのスレッドを生成し、処理A及び処理Cを1つのスレッドに夫々割当て、処理Bを2つのスレッドに割り当てている。これは、処理Bを2つのスレッドで並列に実行するためである。また、処理Aと処理Bの間を、キューH1を介して接続し、処理Bと処理Cの間を、キューH2を介して接続している。
図16は、アクセラレータ上のプロセス中に構築されるパイプラインの一例を示す図である。本実施の形態5において、処理Aおよび処理Cはホスト2上でのみ実行されるため、アクセラレータ3上のプロセス8において、処理Bを実行する3つのスレッドを生成している。
図17は、本実施の形態5に係る計算機システムの全体の接続構成の一例を示す図である。図17において、図が煩雑になるのを避けるため一部の自明な構成要素は省略されている。キューH1およびキューA1は、処理Aから処理Bへのデータ受渡しに利用されるように接続されている。キューH2およびキューA2は、処理Bから処理Cへのデータ受渡しに利用されるように接続される。この様にそれぞれ2つのキューH1、H2、A1、A2を用いることで、データ格納部73、83は格納するデータがどこからどこへ流れるデータであるかを区別する機能を有する。
次に、上述した本実施の形態5に係る計算機システムの特徴的動作について、より詳細に説明する。なお、キューへのデータ格納などの処理については周知であるため、その説明を省略する。
まず、ホスト2とアクセラレータ3間におけるデータ転送について、処理Aから処理Bにデータが受け渡す場合の動作について説明する。本実施の形態5においては、以下のような手順で行われる。
アクセラレータ3上の受信スレッド63は、キューA1に格納されているデータ個数を調べる。受信スレッド63は、キューA1に格納されているデータ個数が一定数以下の場合、ホスト3上の送信スレッド61に対しリクエストを送信する。受信スレッド63は、アクセラレータ3が備えるホストアクセラレータ間データ転送部11を用いて、上記リクエストを送ることができる。本実施の形態5において、上述の如く、ホスト2とアクセラレータ3は、PCIeバス66で接続されている。このため、典型的には、ホストアクセラレータ間データ転送部11は、PCIeバス66と、OSが備えるPCIeバス66のドライバソフトウェアと、それを呼び出すためのライブラリと、から構成される。
ホスト2上の送信スレッド61は受信スレッド63からリクエストを受けとると、キューH1から予め決められた一定個数のデータを取り出す。なお、送信スレッド61は、キューH1に格納されているデータ個数が一定数以下の場合、格納されている個数だけデータを取り出す。また、送信スレッド61は、キューH1にデータが格納されていない場合、キューH1にデータが格納されるまで待つ。送信スレッド61は、キューH1から取り出したデータに対して、シリアライズを行う。送信スレッド61は、シリアライズしたデータを、ホストアクセラレータ間データ転送部11を用いてアクセラレータ3に転送する。受信スレッド63は、ホストアクセサレータ間データ転送部11からデータを受け取り、デシリアライズを行い、キューA1に格納する。なお、処理Bから処理Cへデータを受け渡す場合の動作も、上記処理Aから処理Bにデータを受け渡す動作と略同様であるため、その説明は省略する。
上述した動作は、処理依頼部71および処理実行部72、82とは完全に独立して行われる。このため、処理依頼部71や処理実行部72、82はプロセス7、8内のスレッド間でデータを受け渡す場合と、ホスト2とアクセラレータ3間でデータを受け渡す場合と、で動作を変える必要がなく、どちらもキューへのデータ投入またはデータ取出しという同一動作となる。さらに、本実施の形態5において、アクセラレータ3のプロセッサ31は、ホストプロセッサ21とソースコード互換性を有する。このため、同一ソースコードを用いて、プロセス7、8内およびホスト2とアクセラレータ3間におけるデータ転送を記述することができ、プログラムの簡素化に繋がる。
なお、上記実施の形態5において、受信スレッド62、63から送信スレッド61、64に対しリクエストを送ることによって、ホストアクセラレータ間のデータ転送を開始したが、これに限らず、ホストアクセラレータ間のデータ転送の動作を異なる動作としても良い。例えば、アクセラレータ3に送信したデータ数とアクセラレータ3から受信したデータ数をカウントし、常に一定数のデータがアクセラレータ3上で処理されるような動作にしても良い。これにより、受信スレッド62、63から送信スレッド61、64へのリクエストが不要になるため、実装を簡潔化でき、転送オーバヘッドを軽減できるといった効果も期待できる。
次に、本実施の形態5における性能面での効果を示すため、処理Aを実行したスレッドがキューH1に5つのデータを投入する場合における典型的な動作について説明する。
本動作において、キューH1にデータが投入される時点で全てのキューは空であるとする。
キューH1に対しデータが投入されると、ホスト2上の処理Bを備えたスレッドのうち1つのスレッドが、キューH1からデータを取り出し、そのデータに対して処理Bを開始する。なお、本実施の形態5において、処理Bの実行時間が長いため、1つのスレッドの処理が終了する前に、2つ目のスレッドも1つ目のスレッドと同様にキューH1からデータを取り出し処理Bを開始する。
さらに、これらの2つの処理が終了する前に、上記ホスト2とアクセラレータ3間におけるデータ転送動作が行われ、キューH1に残っていた3つのデータがアクセラレータ3へ転送されキューA1に投入される。なお、アクセラレータ3上の処理Bを割り当てられたスレッドがキューA1からデータを取り出し処理を開始する動作は、上記ホスト2上と同様であるため、その説明は省略する。
上述した動作を行うことで、5つのデータは、ホスト2上の2つのスレッドと、アクセラレータ3上の3つのスレッドと、によって並列処理される。したがって、図18Aに示すように、5つのデータをホスト2のみにおける2つのスレッドで処理する場合と比較して、本実施の形態5では、図18Bに示すように、5つのデータをホスト2及びアクセラレータ3における5つのスレッドで並列処理できる。これにより、その処理が終了するまでの時間を短縮でき、スループットを向上させることができる。
なお、本実施の形態5において、ライブラリを用いて、共通通信部9を生成するようにしても良い。このライブラリは、上記実施の形態4の共通通信部生成部58に相当している。ライブラリは、パイプライン構築部57からの指示に基づいて、キューH1、H2、A1、A2、送信スレッド61、64、及び受信スレッド62、63を生成する機能と、パイプライン構築部57からの指示に基づいて、これら構成要素H1、H2、A1、A2、61、62、63、64を接続する機能と、を有している。
また、キューH1、H2、A1、A2に格納されるデータ構造を、ライブラリのユーザープログラムが指定できるようにする場合、ライブラリは、シリアライズを行うシリアライザー、及びデシリアライズを行うデシリアライザーを、送信スレッド61、64または受信スレッド62、63の生成時に、ユーザープログラムから受け取る機能も有している。典型例では、ライブラリは、ユーザープログラムからコールバック関数を受けとる。共通通信部9をライブラリから生成する構成を取ることによって、パイプライン構成に応じた共通通信部9を、独自開発する場合と比較して、容易に作成することができる。
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
また、上述の実施の形態において、各処理を、上述の如く、CPUにコンピュータプログラムを実行させることにより実現することが可能である。
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体(例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ)、光磁気記録媒体(例えば光磁気ディスク)、CD−ROM、CD−R、CD−R/W、半導体メモリ(例えば、マスクROM、PROM(Programmable ROM)、EPROM(Erasable PROM)、フラッシュROM、RAM)を含む。
また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
さらに、上記実施の形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1)
データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有するホスト手段と、
前記ホスト手段に接続され該ホスト手段の機能を拡張すると共に、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有する拡張手段と、
を備える計算機システムであって、
前記ホスト手段内のスレッド間においてデータを受け渡す機能と、前記ホスト手段上のスレッドと前記拡張手段上のスレッドとの間においてデータを受け渡す機能と、を有する共通通信手段を備える、ことを特徴とする計算機システム。
(付記2)
(付記1)記載の計算機システムであって、
前記共通通信手段は、
前記ホスト手段上におけるプロセスのメモリ空間上に構成された前記格納手段と、
前記拡張手段上におけるプロセスのメモリ空間上に構成された前記格納手段と、
前記ホスト手段の格納手段と前記拡張手段の格納手段とを接続するデータ転送手段と、
を有する、ことを特徴とする計算機システム。
(付記3)
(付記2)記載の計算機システムであって、
前記格納手段は、前記プロセスのメモリ空間上に生成され、各処理間で受け渡すデータを記録するキューで構成されている、ことを特徴とする計算機システム。
(付記4)
(付記2)又は(付記3)記載の計算機システムであって、
前記データ転送手段は、
前記ホスト手段上の格納手段とデータの送受信を行う前記ホスト手段上のデータ送受信手段と、
前記拡張手段の格納手段及び前記ホスト手段のデータ送受信手段と、データの送受信を行う前記拡張手段上のデータ送受信手段と、
を有している、ことを特徴とする計算機システム。
(付記5)
(付記1)乃至(付記4)のうちいずれか記載の計算機システムであって、
パイプライン処理における各処理間を前記共通通信手段で接続するパイプライン構築手段を更に備える、ことを特徴とする計算機システム。
(付記6)
(付記5)記載の計算機システムであって、
前記パイプライン構築手段は、データ処理実行時において、前記ホスト手段及び拡張手段のプロセッサコア数に応じて、前記各処理間を接続して前記処理手段及びデータ入力される入力手段を生成し、該生成した処理手段及び入力手段間を前記共通通信手段で接続することでパイプラインを構築する、ことを特徴とする計算機システム。
(付記7)
(付記6)記載の計算機システムであって、
パイプライン構築手段は、前記データ処理実行時において、前記ホスト手段及び拡張手段のプロセッサコア数に応じて、処理を依頼する依頼部と、処理を実行する実行部と、前記格納手段にデータを投入するデータ投入部と、前記格納手段からデータを取り出すデータ取出部と、を相互に接続することで、前記処理手段及び入力手段を生成し、該生成した処理手段及び入力手段間を前記共通通信手段で接続することでパイプラインを構築する、ことを特徴とする計算機システム。
(付記8)
(付記1)乃至(付記7)のうちいずれか記載の計算機システムであって、
前記拡張手段は、前記ホスト手段のプロセッサとソースコード互換性を有するプロセッサを有するアクセラレータである、ことを特徴とする計算機システム。
(付記9)
(付記8)記載の計算機システムであって、
前記拡張手段と前記ホスト手段は、同一ソースコードを用いる、ことを特徴とする計算機システム。
(付記10)
(付記5)記載の計算機システムであって、
前記パイプライン構築手段からの指示に応じて、前記格納手段及び前記データ転送手段を生成し、該生成した格納手段及びデータ転送手段に基づいて、前記共通通信手段を生成する共通通信生成手段を更に備える、ことを特徴とする計算機システム。
(付記11)
データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有するホスト手段と、
前記ホスト手段に接続され該ホスト手段の機能を拡張すると共に、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有する拡張手段と、
を備える計算機システムの処理方法であって、
前記ホスト手段内のスレッド間においてデータを受け渡すステップと、
前記ホスト手段上のスレッドと前記拡張手段上のスレッドとの間においてデータを受け渡すステップと、を含む、ことを特徴とする計算機システムの処理方法。
(付記12)
(付記11)記載の計算機システムの処理方法であって、
前記ホスト手段上におけるプロセスのメモリ空間上に前記格納手段を構成するステップと、
前記拡張手段上におけるプロセスのメモリ空間上に前記格納手段を構成するステップと、
前記ホスト手段の格納手段と前記拡張手段の格納手段とを接続するステップと、
を含む、ことを特徴とする計算機システムの処理方法。
(付記13)
(付記12)記載の計算機システムの処理方法であって、
前記格納手段を前記プロセスのメモリ空間上に生成され、各処理間で受け渡すデータを記録するキューとして構成する、ことを特徴とする計算機システムの処理方法。
(付記14)
(付記12)又は(付記13)記載の計算機システムの処理方法であって、
前記ホスト手段上において、前記ホスト上の格納手段とデータの送受信を行うステップと、
前記拡張手段の格納手段及び前記ホスト手段と、データの送受信を行うステップと、
を含む、ことを特徴とする計算機システムの処理方法。
(付記15)
(付記11)乃至(付記14)のうちいずれか記載の計算機システムの処理方法であって、
パイプライン処理における各処理間を接続するステップを含む、ことを特徴とする計算機システムの処理方法。
(付記16)
(付記15)記載の計算機システムの処理方法であって、
データ処理実行時において、前記ホスト手段及び拡張手段のプロセッサコア数に応じて、前記各処理間を接続して前記処理手段及びデータ入力される入力手段を生成し、該生成した処理手段及び入力手段間を接続することでパイプラインを構築するステップを含む、ことを特徴とする計算機システムの処理方法。
(付記17)
(付記16)記載の計算機システムの処理方法であって、
前記データ処理実行時において、前記ホスト手段及び拡張手段のプロセッサコア数に応じて、処理を依頼する依頼部と、処理を実行する実行部と、前記格納手段にデータを投入するデータ投入部と、前記格納手段からデータを取り出すデータ取出部と、を相互に接続することで、前記処理手段及び入力手段を生成し、該生成した処理手段及び入力手段間を接続することでパイプラインを構築するステップを含む、ことを特徴とする計算機システムの処理方法。
(付記18)
データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有するホスト手段と、
前記ホスト手段に接続され該ホスト手段の機能を拡張すると共に、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有する拡張手段と、
を備える計算機システムのプログラムであって、
前記ホスト手段内のスレッド間においてデータを受け渡す処理と、
前記ホスト手段上のスレッドと前記拡張手段上のスレッドとの間においてデータを受け渡す処理と、をコンピュータに実行させることを特徴とする計算機システムのプログラム。
この出願は、2012年2月28日に出願された日本出願特願2012−041900を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明は、例えば、複数のカメラから入力される画像データに対して連続的に画像処理を行うような処理を、高性能かつ低コストで実行する計算機システムに適用可能である。
2 ホスト
3 アクセラレータ
4 データ転送部
5、6 OS
7、8 プロセス
9 共通通信部
10、20、30、40 計算機システム
11 ホストアクセラレータ間データ転送部
71 処理依頼部
72、82 処理実行部
73、83 データ格納部
74、84 データ送受信部
110 ホスト手段110
111、121 格納手段
112、122 処理手段
120 拡張手段
130 共通通信手段

Claims (9)

  1. データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有するホスト手段と、
    前記ホスト手段に接続され該ホスト手段の機能を拡張すると共に、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有する拡張手段と、
    を備える計算機システムであって、
    前記ホスト手段内のスレッド間においてデータを受け渡す機能と、前記ホスト手段上のスレッドと前記拡張手段上のスレッドとの間においてデータを受け渡す機能と、を有する共通通信手段を備え
    前記共通通信手段は、
    前記ホスト手段上におけるプロセスのメモリ空間上に構成された前記格納手段と、
    前記拡張手段上におけるプロセスのメモリ空間上に構成された前記格納手段と、
    前記ホスト手段の格納手段と前記拡張手段の格納手段とを接続するデータ転送手段と、
    を有し
    前記ホスト手段及び拡張手段上の格納手段へのデータの格納及び取出しを行うことで、前記ホスト手段内のデータ送受信、および、前記ホスト手段と前記拡張手段間のデータ送受信、を行う、
    ことを特徴とする計算機システム。
  2. 請求項記載の計算機システムであって、
    前記格納手段は、前記プロセスのメモリ空間上に生成され、各処理間で受け渡すデータを記録するキューで構成されている、ことを特徴とする計算機システム。
  3. 請求項1又は2記載の計算機システムであって、
    前記データ転送手段は、
    前記ホスト手段上の格納手段とデータの送受信を行う前記ホスト手段上のデータ送受信手段と、
    前記拡張手段の格納手段及び前記ホスト手段のデータ送受信手段と、データの送受信を行う前記拡張手段上のデータ送受信手段と、
    を有している、ことを特徴とする計算機システム。
  4. 請求項1乃至のうちいずれか1項記載の計算機システムであって、
    パイプライン処理における各処理間を前記共通通信手段で接続するパイプライン構築手段を更に備える、ことを特徴とする計算機システム。
  5. 請求項記載の計算機システムであって、
    前記パイプライン構築手段は、データ処理実行時において、前記ホスト手段及び拡張手段のプロセッサコア数に応じて、前記各処理間を接続して前記処理手段及びデータ入力される入力手段を生成し、該生成した処理手段及び入力手段間を前記共通通信手段で接続することでパイプラインを構築する、ことを特徴とする計算機システム。
  6. 請求項記載の計算機システムであって、
    パイプライン構築手段は、前記データ処理実行時において、前記ホスト手段及び拡張手段のプロセッサコア数に応じて、処理を依頼する依頼部と、処理を実行する実行部と、前記格納手段にデータを投入するデータ投入部と、前記格納手段からデータを取り出すデータ取出部と、を相互に接続することで、前記処理手段及び入力手段を生成し、該生成した処理手段及び入力手段間を前記共通通信手段で接続することでパイプラインを構築する、ことを特徴とする計算機システム。
  7. 請求項1乃至のうちいずれか1項記載の計算機システムであって、
    前記拡張手段は、前記ホスト手段のプロセッサとソースコード互換性を有するプロセッサを有するアクセラレータである、ことを特徴とする計算機システム。
  8. データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有するホスト手段と、
    前記ホスト手段に接続され該ホスト手段の機能を拡張すると共に、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有する拡張手段と、
    を備える計算機システムの処理方法であって、
    共通通信手段により、前記ホスト手段内のスレッド間においてデータを受け渡すステップと、
    前記共通通信手段により、前記ホスト手段上のスレッドと前記拡張手段上のスレッドとの間においてデータを受け渡すステップと、を含み、
    前記共通通信手段は、
    前記ホスト手段上におけるプロセスのメモリ空間上に構成された前記格納手段と、
    前記拡張手段上におけるプロセスのメモリ空間上に構成された前記格納手段と、
    前記ホスト手段の格納手段と前記拡張手段の格納手段とを接続するデータ転送手段と、
    を有し
    前記ホスト手段及び拡張手段上の格納手段へのデータの格納及び取出しを行うことで、前記ホスト手段内のデータ送受信、および、前記ホスト手段と前記拡張手段間のデータ送受信、を行う、
    ことを特徴とする計算機システムの処理方法。
  9. データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有するホスト手段と、
    前記ホスト手段に接続され該ホスト手段の機能を拡張すると共に、データを格納する格納手段と、該格納されたデータを処理する処理手段と、を有する拡張手段と、
    を備える計算機システムのプログラムであって、
    共通通信手段により、前記ホスト手段内のスレッド間においてデータを受け渡す処理と、
    前記共通通信手段により、前記ホスト手段上のスレッドと前記拡張手段上のスレッドとの間においてデータを受け渡す処理と、をコンピュータに実行させ
    前記共通通信手段は、
    前記ホスト手段上におけるプロセスのメモリ空間上に構成された前記格納手段と、
    前記拡張手段上におけるプロセスのメモリ空間上に構成された前記格納手段と、
    前記ホスト手段の格納手段と前記拡張手段の格納手段とを接続するデータ転送手段と、
    を有し
    前記ホスト手段及び拡張手段上の格納手段へのデータの格納及び取出しを行うことで、前記ホスト手段内のデータ送受信、および、前記ホスト手段と前記拡張手段間のデータ送受信、を行う、
    ことを特徴とする計算機システムのプログラム。
JP2014501844A 2012-02-28 2012-12-21 計算機システム、その処理方法、及びプログラム Active JP6222079B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2012041900 2012-02-28
JP2012041900 2012-02-28
PCT/JP2012/008188 WO2013128531A1 (ja) 2012-02-28 2012-12-21 計算機システム、その処理方法、及びコンピュータ可読媒体

Publications (2)

Publication Number Publication Date
JPWO2013128531A1 JPWO2013128531A1 (ja) 2015-07-30
JP6222079B2 true JP6222079B2 (ja) 2017-11-01

Family

ID=49081793

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014501844A Active JP6222079B2 (ja) 2012-02-28 2012-12-21 計算機システム、その処理方法、及びプログラム

Country Status (3)

Country Link
US (1) US20150032922A1 (ja)
JP (1) JP6222079B2 (ja)
WO (1) WO2013128531A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108446096B (zh) 2018-03-21 2021-01-29 杭州中天微系统有限公司 数据计算系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA1244555A (en) * 1985-06-17 1988-11-08 Walter H. Schwane Process transparent multi storage mode data transfer and buffer control
JPH10232788A (ja) * 1996-12-17 1998-09-02 Fujitsu Ltd 信号処理装置及びソフトウェア
US6704801B1 (en) * 1999-02-18 2004-03-09 Nortel Networks Limited Atomic transmission of multiple messages in a virtual synchrony environment
US7356670B2 (en) * 2001-12-14 2008-04-08 Nxp B.V. Data processing system
JP4756553B2 (ja) * 2006-12-12 2011-08-24 株式会社ソニー・コンピュータエンタテインメント 分散処理方法、オペレーティングシステムおよびマルチプロセッサシステム
US8145749B2 (en) * 2008-08-11 2012-03-27 International Business Machines Corporation Data processing in a hybrid computing environment
JP5381242B2 (ja) * 2009-03-31 2014-01-08 富士通株式会社 マルチプロセッサシステム及び制御プログラム
JP5447065B2 (ja) * 2010-03-24 2014-03-19 富士ゼロックス株式会社 画像処理装置、画像形成システム及び画像処理プログラム

Also Published As

Publication number Publication date
US20150032922A1 (en) 2015-01-29
WO2013128531A1 (ja) 2013-09-06
JPWO2013128531A1 (ja) 2015-07-30

Similar Documents

Publication Publication Date Title
KR102245247B1 (ko) 트리거된 동작을 이용하는 gpu 원격 통신
KR102111741B1 (ko) 임베디드 멀티미디어 카드 및 이의 동작 방법
EP2908252A1 (en) Inter-core communication apparatus and method
JP4563829B2 (ja) ダイレクトメモリアクセス制御方法、ダイレクトメモリアクセス制御装置、情報処理システム、プログラム
CN107391400B (zh) 一种支持复杂访存指令的内存扩展方法和系统
US10102159B2 (en) Method of achieving low write latency in a data storage system
JP6998991B2 (ja) 情報処理用方法及び装置
CN104731569A (zh) 一种数据处理方法及相关设备
US10936517B2 (en) Data transfer using a descriptor
CN110825435B (zh) 用于处理数据的方法和装置
CN115934625A (zh) 一种用于远程直接内存访问的敲门铃方法、设备及介质
US20220365892A1 (en) Accelerating Method of Executing Comparison Functions and Accelerating System of Executing Comparison Functions
US8972693B2 (en) Hardware managed allocation and deallocation evaluation circuit
US9304772B2 (en) Ordering thread wavefronts instruction operations based on wavefront priority, operation counter, and ordering scheme
JP6222079B2 (ja) 計算機システム、その処理方法、及びプログラム
US9311225B2 (en) DMA channels
US20140052879A1 (en) Processor, information processing apparatus, and interrupt control method
US11392406B1 (en) Alternative interrupt reporting channels for microcontroller access devices
JP2005258509A (ja) ストレージ装置
JP2007102447A (ja) 演算処理装置
US10958597B2 (en) General purpose ring buffer handling in a network controller
CN108268280B (zh) 半导体装置的处理器及其操作方法
JP2018120307A (ja) アクセラレータ処理管理装置、ホスト装置、アクセラレータ処理実行システム、方法およびプログラム
US10223013B2 (en) Processing input/output operations in a channel using a control block
US20210055971A1 (en) Method and node for managing a request for hardware acceleration by means of an accelerator device

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151111

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170131

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170310

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170918

R150 Certificate of patent or registration of utility model

Ref document number: 6222079

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150