JP2000315163A - プロセッサ資源の均衡のとれた分配を実行する方法及びそのシステム - Google Patents

プロセッサ資源の均衡のとれた分配を実行する方法及びそのシステム

Info

Publication number
JP2000315163A
JP2000315163A JP2000026984A JP2000026984A JP2000315163A JP 2000315163 A JP2000315163 A JP 2000315163A JP 2000026984 A JP2000026984 A JP 2000026984A JP 2000026984 A JP2000026984 A JP 2000026984A JP 2000315163 A JP2000315163 A JP 2000315163A
Authority
JP
Japan
Prior art keywords
processors
iterations
program
loop
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2000026984A
Other languages
English (en)
Inventor
Bradley Lewis
ルイス ブラッドリー
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JP2000315163A publication Critical patent/JP2000315163A/ja
Pending legal-status Critical Current

Links

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/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

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

Abstract

(57)【要約】 【課題】複数の反復を含むループ命令を最適に均衡させ
て多数のスレッドに分配し、次いで前記スレッドをネッ
トワークに接続された複数のコンピュータ或いは1つの
装置における複数のプロセッサに割り当てる改良された
分配システムを提供すること。 【解決手段】タスクを均衡して即ち相対的に均一に複数
のプロセッサに分配することによりシステムの計算資源
をより効率的に使用することができる。本改良された分
配システムは先ず複数の反復を多数のプロセッサ間で分
配し、その後余剰の反復をプロセッサに均一に分配する
ことによって分散型の処理環境においてより効率的な資
源の割り当てをを実現する。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、並列コンピューテ
ィングの分野に関し、更に詳しくは、多数のループ命令
の反復を分散型ネットワークのマルチプロセッサ、或い
は並列コンピューティング環境のマルチコンピューティ
ングスレッドに分配することに関するものである。
【0002】
【従来の技術】「マルチスレッド化」という用語は、コ
ンピュータプログラムを論理的に独立した制御「スレッ
ド」に分割することを指し、かかるスレッドは並列実行
することが可能である。各スレッドは、一連の命令及び
前記命令が演算、入出力機能などのプログラムタスクを
実行する際に用いるデータを含んでいる。複数のプロセ
ッサを有するコンピュータシステムにおいては、少なく
とも2台のプロセッサが少なくとも1つのスレッドを実
行することによりプログラムのマルチプロセッシングま
たは並列化が実現される。マルチスレッド化されたプロ
グラムの全てのスレッドを1台のプロセッサで逐次処理
を行っても、プログラムの並列化は実現されない。
【0003】1台のプロセッサでは一度に一つのスレッ
ドの命令しか実行することができないが、1台のプロセ
ッサでも複数のスレッドを並列に処理することは可能で
ある。このためには例えば、1つのスレッドに対応する
命令を選択した命令に到達するまで実行し選択した命令
に到達したらこれを停止して、次に別のスレッドに対応
する命令を実行し、これを全てのスレッドを完了するま
で行えばよい。この方法によれば、プロセッサが一旦複
数のスレッドの実行を開始すれば所与の時間中全ての実
行スレッドが「実行中」と言える状態になりマルチプロ
セッシングが実現される。つまり、マルチプロセッシン
グという用語には、複数のプロセッサを使ってプログラ
ムを実行することと1台のプロセッサを使って複数のス
レッドを実行することの両方が含まれる。マルチプロセ
ッシングコンピュータシステム(時には、並列コンピュ
ータシステムと称される)は、幾つかの動作を同時に行
うことにより、一度に1つの動作を行うプロセッサを1
台のみ有する逐次コンピュータシステムに比べ、概ねよ
り早くより効率的にプログラムを実行することができ
る。
【0004】分散型コンピューティングネットワークで
は、ユーザはネットワークに接続された多数のコンピュ
ータの処理能力を享受することができる。分散型ネット
ワークは、別個のコンピュータに含まれる複数のプロセ
ッサの形態としても良いし或いは、プロセッサまたはス
レッドが大域メモリ資源を共有する並列システムの形態
としても良い。このような環境においては、多くの異な
る独立した演算を含むプログラムを迅速に並列処理する
ことができる。これは、前記演算を異なるスレッド間で
分割し該スレッドをネットワーク内の異なるプロセッサ
に割り当てることにより可能になる。
【0005】1つのタスクをネットワーク内の複数のプ
ロセッサに割り当てる周知の分散システムに、各プロセ
ッサが実行する動作の数を計算するものがある。例え
ば、フォートランベースのコンパイラを備えるシステム
では、該システムはDOループのようなループ命令の反
復を分配するが、この反復を分配する際に、反復の数
(例えば、ループが実行されるべき回数)がプロセッサ
の数で均一に割り切れないと、システムは残りの反復を
常に第1のプロセッサに割り当てる傾向がある。従っ
て、例えば8台のプロセッサを有するシステムが15回
の反復を行うループ命令を有する場合、各プロセッサが
1回ずつ反復を実行し残りの反復は第1のプロセッサが
実行することになる。結果として生じるこの様な不均衡
のため、1台のプロセッサに過度の負担をかけしかも他
のプロセッサを十分活用できないことになる。
【0006】プロセッサの数(NCPU)と反復の合計
回数(I)が与えられれば、コンパイラは各プロセッサ
またはスレッドが実行する反復の最大回数を、M=I/
NCPU+MOD(I,NCPU)を求めることによっ
て計算できる。プロセッサの数及び反復の回数はコンピ
ュータプログラマが手作業で入力しても良いし、コンパ
イラがシステム環境設定からこれらの値を求めるように
しても良い。この演算では、関数M(I,NCPU)
は、IをNCPUで割った数に最も近い整数のあとに残
る反復(即ち、余剰の反復)を返す。反復を割り当てる
この周知の方法は以下のフォートランコードで定義され
る。 Iterarions_Per = I/NCPU Extra_Iterations = M(I,NCPU) for i = 1 to NCPU do Mi = I/NCPU M1 = M1 + M(I,NCPU) C$PAR DOALL (parallelized operation) DO 10,I = 1,15 CALL DOWORK(I); where "DOWORK" represents some arbitrary calculation 10 CONTINUE このコードのC$PARプログラムはプログラマによって記
述された指令であり、コンパイラに、上述のDOALL命令
のループは並列化可能なことを示すものである。コンパ
イル中、コンパイラは、制御オペレーティングシステム
によって実行されると多数のスレッドを生じさせるコー
ドを各プロセッサに1つずつ生成して前記ループを並列
化する。しかしながら、この分配方法を用いると第1の
プロセッサ(M1)が残りの反復全てを受け取ることに
なり、分配が不均衡になってしまう。
【0007】表1は、周知の分配方法を用いた例を示
す。表1には、各プロセッサが実行する反復の回数、各
反復の実行に一定時間Xを要す場合の実行時間、及び、
それぞれ1、2、4及び8台のプロセッサで設定された
分散型或いは並列処理環境で達成できるスケーラビリテ
ィが示される。
【0008】
【表1】
【0009】上記スケーラビリティ要素は、プロセッサ
の数にその設定プロセッサにおける実行時間を掛け、こ
の数で1台のプロセッサにおける実行時間を割ったもの
表す。このパラメータは効率を表す要素であり、追加の
プロセッサがシステムにおいてどの程度効率的に機能し
ているかを評価する。このスケーラビリティパラメータ
が1台のプロセッサの場合におけるスケーラビリティで
ある1に近ければ近いほど、その分散グループのプロセ
ッサの効率が良いことを表す。表1からわかるように、
結果として生じる不均衡な負荷のためループ命令の実行
速度が2台のプロセッサでの場合と8台のプロセッサで
の場合とが同じになってしまい、スケーラビリティも理
想的なレベルである1を大きく下回り無駄が多くなる。
このように、並列分配システムは改良が望まれる。
【発明が解決しようとする課題】
【0010】以上説明したように、分散型或いは並列の
コンピューティング環境において多数のループ反復を有
するプログラムの並列処理を行うにあたり、周知の分配
方法はプロセッサの数で割りきれない余剰の反復を単に
第1のプロセッサに割り当てて反復の分配を行う。この
ため分配が不均衡になってしまい、結果として1台のプ
ロセッサに過大な負荷がかかる上他のプロセッサの処理
能力を十分活用できないことになる。本発明は周知の方
法を改良し、かかる余剰の反復についてもプロセッサに
均一に割り当てて反復を最適に均衡させて分配すること
ができる分配方法及びそのシステムを提供することを課
題とする。即ちシステムのコンピューティング資源を更
に効率よく利用することを課題とする。
【0011】
【課題を解決するための手段】上記課題を解決するため
に、本発明によるシステム及び方法は、データ処理シス
テムにおいて複数のループ反復を複数のプロセッサ間で
均衡させるための、コンピュータにより実行される方法
を提供する。該方法は、プログラムを実行する複数のプ
ロセッサからプログラムを実行するプロセッサの数を決
定する工程と、少なくとも2つの反復を割り当てずに残
して全てのプロセッサに分配する反復の数を決定する工
程と、分配されていない少なくとも2つの前記反復を少
なくとも2つの前記プロセッサに分配する工程とを備え
ることを要旨とするものである。
【0012】本発明による他の方法はまた、複数のプロ
セッサを有するデータ処理システムを提供する。該シス
テムは、複数の反復を含むプログラムを格納するメモリ
を有し、前記プログラムは、少なくとも2つの反復を割
り当てずに残して実行のために均等数の反復を各プロセ
ッサに割り当てて前記反復を分配するよう構成されたコ
ードを有し、前記コードは更に、前記割り当てられてい
ない反復を少なくとも2つのプロセッサに割り当てるよ
う構成されており、少なくとも1つのプロセッサが前記
プログラムを実行するよう構成されることを要旨とする
ものである。
【0013】上記の課題を解決するための手段及び下記
の詳細な説明は発明の請求の範囲を限定するものではな
く、単に第三者が発明を実施するための例と説明を提供
するためのものである。
【発明の実施の形態】
【0014】本明細書に組み込まれその一部を構成する
添付図面は発明の実施の形態を説明するものであり、以
下の説明と共に本発明の利益及び原理を説明するもので
ある。以下、本発明の一実施の形態を、添付図面に示し
た発明の説明より明らかな例を挙げて説明する。添付図
面では、異なる図面においても同一或いは類似の要素は
可能な限り同一の参照符号を用いて示した。
【0015】本発明に係るシステム及び方法は改良され
た分配システムを提供し、これによりプログラムの命令
をプロセッサにより均一に分配して、分散型または並列
コンピューティング環境において資源をより効率的に使
用することを可能にする。処理資源をより適切に割り当
てるため、本発明によるシステム及び方法を実装すると
システムの各プロセッサにスレッドが作成され、ループ
の繰り返し回数をシステムのプロセッサの数で割って各
スレッドに割り当てる反復の初期値が決定される。この
後、除算の剰余は各スレッドに均一に分散されるので、
結果として既存のシステムよりも改善された分配が行え
る。係る機能性を実現するために、プログラマは、1か
らシステムに含まれるプロセッサ数まで繰り返す外側ル
ープの内側にプログラムループを挿入する。この外側ル
ープを使うと、コンパイラは内側ループをより均一にプ
ロセッサに分配するコードを生成するよう命令される。
【0016】改良された分配システムは周知の方法を改
善せしめる。なぜなら、周知の分散システムは、ループ
反復を割り当てる際は先ず反復の回数をプロセッサの数
で割って各プロセッサに最小回数の反復を割り当て、剰
余の反復は第1のプロセッサに割り当てるからである。
これに対し前記改良されたシステムは剰余の反復回数を
全てのプロセッサに再び分配する。この第2の分配が完
了すると、プログラムは新たに均衡させた反復に従って
実行される。
【0017】本発明に係るシステム及び方法によれば、
分散型環境、ネットワーク、またはシステムは(1)別
個のコンピュータに含まれる複数のプロセッサ、(2)
共通の大域メモリを共有する複数のプロセッサまたはス
レッド、(3)多数のスレッドを並列処理する1つのプ
ロセッサ、のいずれかを含むものである。よって、改良
された分配方法を用いて、複数のスレッド、複数のプロ
セッサ、または複数の装置にプログラムを分配させるこ
とが可能である。
【0018】コンピュータネットワーク 図1は、本発明に係る方法及びシステムに用いるのに適
した分散型コンピュータシステム100を図示する。図
1のコンピュータシステム100は、コンピュータ12
0、130、140及び150を相互接続するネットワ
ーク110を含む。この構成では、ネットワーク110
は、ローカルエアリアネットワーク(LAN)でも良い
し、広域ネットワーク(WAN)でも良いし、或いはイ
ンターネットでも良い。
【0019】ネットワーク110はコンピュータ12
0、130、140及び150を連結するので、これに
より情報の共有、データの伝送、及び演算能力の共有が
できる。これらのコンピュータは、ネットワークの構成
に応じルーター、スイッチまたはハブのようなネットワ
ーク相互接続装置でネットワーク110に接続される。
【0020】概して、本発明に従って設計された動的分
散型コンピューティングシステムは該システムに連結さ
れた各コンピュータシステムに置くことができる。従っ
て、各コンピュータは発生した要求及び提供されるサー
ビスに応じ、クライアント或いはサーバーのいずれとし
ても動作する。一般的には、クライアントがサーバーコ
ンピュータ上でタスクを行うよう要求し、サーバーコン
ピュータがこのタスクを処理する。
【0021】コンピュータシステム 図2は、コンピュータ120を更に詳細に図示する。
尚、図にはコンピュータ120を示すがコンピュータ1
30、140及び150も同様な構成である。下記の説
明では、例えばIBM PS/2シリーズのパーソナル
コンピュータやSPARC 2.6ワークステーション
といった特定のコンピュータシステムの説明に共通して
用いられる用語に言及するが、下記の説明及びその概念
はネットワークコンピュータ或いは図1とは異なるアー
キテクチャを有するメインフレームコンピュータのよう
な他のコンピュータシステムにも等しく当てはまること
は、いわゆる当業者には当然認識されるものである。S
un、Sun Microsystems、及びSun
のマークは、米国及びその他の国におけるSun Mi
crosystems,Inc.の商標或いは登録商標
である。また、SPARCの商標は、米国及びその他の
国におけるSPARC International,
Inc.の登録商標であり、その許可の下に使用され
る。SPARCの商標を付した製品は、Sun Mic
rosystems,Inc.が開発したアーキテクチ
ャを基盤とする製品である。
【0022】コンピュータ120は、メモリ210、二
次記憶装置220、中央処理装置(CPU)230、入
力装置240、及びビデオディスプレイ250を有す
る。本開示の目的上、CPUという用語はプロセッサと
いう用語と交換可能とする。メモリ210は、該メモリ
内に格納されたプログラム212、前記プログラムをコ
ンパイルするコンパイラ214、コンパイル後のプログ
ラム212を実行するのに用いられるオペレーティング
システム216を含む。
【0023】プログラム212は、命令を含む実行プロ
グラムである。コンパイラ214は、プログラム212
の実行コードを生成するのに用いられる標準的なプログ
ラムコンパイラである。Sun Fortran−77
5.0はよく知られたコンパイラであり、本発明に係る
システム及び方法と共に用いることができるものの一例
である。オペレーティングシステム216は、コンパイ
ラ214が動作できる環境、及び、コンパイラ214が
プログラム212をコンパイルした後プログラム212
を実行するのに必要な命令を提供する。Sparc
2.0ワークステーションに実装されるSolaris
2.6はよく知られたオペレーティングシステムであ
り、本発明に係るシステム及び方法に用いることができ
るものの一例である。
【0024】尚、コンピュータ120を様々な構成要素
と共に示したが、このコンピュータが他にも追加の構成
要素或いは異なる構成要素を含み得ることは、当業者に
は当然認識されるものである。更に、本発明の実施態様
例はメモリに格納されるものとして説明したが、これら
の実施態様例はハードディスク、フロッピー(登録商
標)ディスク或いはCD−ROMのような二次記憶装
置、インターネットなどネットワークからの搬送波、或
いは他の形式のRAM或いはROMなど、いかなるタイ
プのコンピュータ可読媒体にも格納しそこから呼出すよ
うにしてもよいことは、当業者には当然認識されるもの
である。
【0025】分配動作 図3は、複数の反復を有するプログラムを複数のプロセ
ッサに分配するのに用いられる手続き300の主なステ
ップを示すフローチャートである。最初に、プログラマ
はDOループなど、ループ命令の複数の反復を含むプロ
グラムを用意する。プログラマがマルチプロセッサ環境
で作業している場合、このプログラムコード及びループ
命令はシステムの多数のプロセッサで並列処理される。
システムの環境設定によりループ命令を実行するのに使
用可能なシステムプロセッサの数が提供される。C$PAR
DOALL指令は、プログラムをコンパイルするコンパイラ
にループ命令が並列で実行されるよう命令する。下記の
コードは上述の説明に合致するコードを示す。 C$PAR DOALL (parallelized operation) DO 10, I = 1, 15 CALL DOWORK (I); where "DOWORK" represents some arbitrary calculation 10 CONTINUE 本発明に係るシステム及び方法によれば、プログラマは
内側DOループの周りに外側ループを挿入してシステム
のプロセッサに反復を分配する。以下に説明するよう
に、この外側ループは1からプロセッサの数に達するま
でカウントしてシステムのプロセッサまたはスレッドに
反復を均等に分配する。
【0026】プログラムが記述されると、コンパイルで
きる状態になる(ステップ420)。以下に詳細に説明
するように、コンパイラ214はC$PAR DOALL命令を用
いてループ命令の分配先とするための多数のスレッドを
発生させる。コンパイルの際はコンパイラ214はプロ
セッサの数及び反復の回数を示す環境設定を用いてプロ
グラム212の実行コードを生成する。この結果生成さ
れたコードを用いて次にシステムの各スレッド或いはプ
ロセッサが実行する反復の回数が求められる。
【0027】最後に、実行時にはオペレーティングシス
テム216はコンパイラ214が生成したコードを使っ
て前記スレッドをシステムのプロセッサに分配する(ス
テップ430)。オペレーティングシステム216は前
記スレッドをシステム内の1台のプロセッサに分散する
ことも、システム内の複数のプロセッサに分配すること
も選択できる。いずれの場合にも、一旦オペレーティン
グシステム216がスレッドを割り当てると、前記オペ
レーティングシステムがプログラム214及び割り当て
られた命令をスレッド間で並列に実行し、内側ループに
よって要求された結果を生成する。
【0028】図4は、図3に示す方法においてコンパイ
ラ214が実行するステップ(ステップ320)のフロ
ーチャートである。コンパイラ214は先ず、プログラ
ム212に含まれるループ命令を実行するのに使用可能
なプロセッサの数(NCPU)を決定する(ステップ4
05)。プロセッサの数はプログラム212のコンパイ
ル時に環境設定入力から求めても良いし、プログラマが
入力して行うシステムの予備設定から求めても良い。次
に、コンパイラ214はプログラム212に含まれるル
ープ命令を完了するのに必要なプログラム反復回数
(I)を求める(ステップ415)。これらの初期決定
によりコンパイラ212は各プロセッサまたはスレッド
が実行するよう割り当てられる反復の最小回数(NPE
R)を算出できる。
【0029】NCPUの値が与えられたとして、反復の
回数がプロセッサの数で均一に割り切れないときは、コ
ンパイラ214は割り当てられずに残っている余剰反復
回数(NEXTRA)を求める(ステップ420)。こ
のステップを行うには、NCPUに各プロセッサが実行
する反復の回数(NPER)を掛け、得られた結果をル
ープ命令の反復の回数(I)から差し引けばよい。NE
XTRA=I−(NPER*NCPU)割り当てられて
いない反復の回数が決定されると、コンパイラ214は
この残りの反復をプロセッサの数に割り当てる。
【0030】この割り当てを行うには、先ずNCPUが
NEXTRA以下かどうかを求める(ステップ42
5)。もしNCPUがNEXTRA以下であれば、パラ
メータISTARTの計算から始まりパラメータIEN
Dの計算で終わるループ命令を開始する。このタイプの
ループ命令はフォートランのようなプログラム言語では
しばしば用いられるものであり、ISTART及びIE
NDの2つのパラメータがループ命令を完了するのに必
要なループの反復回数を表すことは、当業者には当然認
識されるものである。
【0031】コンパイラ214は、NPERをNCPU
の値に加え、この整数値に1からNCPUを差し引いた
値を掛けてISTARTを算出する(例えば、ISTA
RT=(NCPU−1)*(NPER+NCPU))
(ステップ430)。コンパイラ214はまた、IST
ARTをNPERに加えてIENDを算出する(例え
ば、IEND=ISTART+NPER)(ステップ4
35)。
【0032】これに対し、NCPUがNEXTRAより
も大きいときは、コンパイラ214は、NPERをNC
PUの値に加え、この整数値に1からNCPUを差し引
いた値を掛け、次いでこの値に1を加えてISTART
を算出する(例えば、ISTART=1+(NCPU−
1)*(NPER+NCPU))。そして、コンパイラ
214は、ISTARTをNPERに加えてIENDを
算出する(ステップ445)。NCPUがNEXTRA
以下であるか否かに関わらず、剰余の反復全てがプロセ
ッサに割り当てられるまでループ命令は繰り返される
(ステップ450)。
【0033】全プロセスを更に詳細に下記のフォートラ
ンプログラムのループ命令コードで示すが、これはあく
までも例示の目的のためである。このループ命令コード
は15回の反復を含むプロセスの割り当てを行うもので
ある。 NPER = 15 / NCPU NEXTRA = 15 - (NPER*NCPU) C$PAR DOALL DO 20, NCPU = 1, NCPU if(NCPU .LE.NEXTRA)then ISTART = (NCPU - 1)*(NPER + NCPU) IEND = ISTART + NPER else ISTART = 1 + (NCPU - 1) * (NPER + NEXTRA) IEND = ISTART + NPER - 1 end if Do 10, I = ISTART, IEND CALL DO WORK(I) [i.e., some function] 10 Continue 20 Continue
【0034】図4に方法400として示す上述のコード
は、既存の分配方法に比べより効率的なプロセッサ資源
の割り当てを行う手段を提供するものである。表2は、
本実施例に係る方法とシステムのスケーラビリティが前
述の例よりも大幅に向上していることを示す。この例は
15回の反復を有するプログラムを1台乃至8台のプロ
セッサに割り当てた場合の分配、実行時間、及びスケー
ラビリティを示す。
【0035】
【表2】
【0036】結果として得られる分配によれば資源の割
り当てが更に効率的に行われ、スケーラビリティ要素が
1台のプロセッサシステムの場合に近くなり、既存の方
法に比べプログラムの実行時間が大幅に短縮される。
【0037】本発明が、発明の範囲或いはその精神から
逸脱することなく開示した実施形態の様々な変容と変形
が可能なことは、当業者には当然認識されるものであ
る。例えばここではプログラム言語のフォートランの例
を挙げたが、本発明に係るシステム及び方法はいかなる
タイプの分散型或いは並列コンピューティング環境にお
いても同様に効率よく動作する。更に、本発明に係るシ
ステム及び方法における上述の分配アルゴリズムはネッ
トワークの各プロセッサに格納されるので、該ネットワ
ークのどの分散プロセッサを用いても動作させることが
できる。
【0038】明細書の考察及びここに開示した発明の実
施形態の実施から、本発明の他の実施形態も当業者にと
っては当然とするところである。明細書及び実施例はあ
くまでも例であり、本発明の真の範囲及び精神は上述の
請求項及びその均等物によって定められるものである。
【0039】
【発明の効果】以上説明したように、本発明によるシス
テム及び方法は改良された分配システムを提供する。係
るシステムは複数の反復を有するループ命令を多数のス
レッド間で最適に均衡させ、前記スレッドをネットワー
クに接続された複数のコンピュータ或いは1台の装置の
複数のプロセッサに割り当てることによって周知のシス
テムを改善せしめるものである。タスクを複数のプロセ
ッサに均衡させて或いは相対的に均一に分配することに
より、システムのコンピューティング資源を更に効率よ
く利用できるようになる。これを達成するため、最初に
反復の回数をプロセッサの数で割った後、剰余の反復を
単に第1のプロセッサに割り当てる既存の方法とは違
い、改良された本分配方法は残りの反復もプロセッサに
均一に分配する。この結果、分散型或いは並列のコンピ
ューティング環境においてより効率的な資源の分配が行
うことができ、本発明は産業上極めて有益なものであ
る。
【図面の簡単な説明】
【図1】本発明に係るシステム及び方法に用いるのに適
した分散型コンピューティングネットワークを示したブ
ロック図である。
【図2】図1のコンピュータを更に詳細に示した図であ
る。
【図3】本発明に係るシステム及び方法によって複数回
反復されるループを多数のプロセッサに分配する際に実
行される主な工程を示したフローチャートである。
【図4】図3の分配方法において実行される工程を更に
詳細に示したフローチャートである。
【符号の説明】
100 分散型コンピュータシステム 110 ネットワーク 120 コンピュータ 130 コンピュータ 140 コンピュータ 150 コンピュータ 210 メモリ 212 プログラム 214 コンパイラ 216 オペレーティングシステム 220 二次記憶装置 230 中央処理装置 240 入力装置 250 ビデオディスプレイ

Claims (14)

    【特許請求の範囲】
  1. 【請求項1】 各プロセッサにスレッドを生成する工程
    と、 ループ反復を、少なくとも2つ割り当てずに残して前記
    生成された各スレッドに均等数ずつ割り当てる工程と、 前記割り当てられていないループ反復を少なくとも2つ
    のスレッドに分配する工程と、 を有することを特徴とする多数のプロセッサと多数のル
    ープ反復を有するプログラムとで構成されるデータ処理
    システムに用いられる方法。
  2. 【請求項2】 前記プロセッサは複数の装置に含まれ、 前記割り当て工程は、前記複数の装置に含まれるプロセ
    ッサに前記均等数のループ反復を割り当てる副工程を含
    むことを特徴とする請求項1に記載の方法。
  3. 【請求項3】 前記割り当てられていないループ反復の
    分配工程は、前記複数の装置に含まれるプロセッサに前
    記割り当てられてないループ反復を分配する副工程を含
    むことを特徴とする請求項2に記載の方法。
  4. 【請求項4】 前記プログラムはフォートランコードで
    記述されており、 前記割り当て工程は、フォートランループ反復を、少な
    くとも2つ割り当てずに残して前記生成された各スレッ
    ドに割り当てる副工程を含むことを特徴とする請求項3
    に記載の方法。
  5. 【請求項5】 前記分配工程は、前記割り当てられてい
    ないフォートランループ反復を少なくとも2つのスレッ
    ドに分配する副工程を含むことを特徴とする請求項4に
    記載の方法。
  6. 【請求項6】 1からプロセッサ数まで繰り返す外側ル
    ープと並列化のための分割された機能を実行する内側ル
    ープとを含むコードをデータ処理システムに受信する工
    程と、 前記コードをコンパイルしてプログラムを生成する工程
    と、 前記プログラムを実行して内側ループの反復をプロセッ
    サに分配させる工程と、 を有することを特徴とする多数のプロセッサと多数のル
    ープ反復を有するプログラムとで構成されるデータ処理
    システムに用いられる方法。
  7. 【請求項7】 前記プロセッサは複数の装置に含まれ、
    更に、 前記実行工程は、 前記プロセッサの数を決定する副工程と、 前記内側ループの反復を複数の装置に含まれる前記プロ
    セッサに分配する副工程と、 を含むことを特徴とする請求項6に記載の方法。
  8. 【請求項8】 複数の反復を含むプログラムを格納する
    メモリを有し、前記プログラムは、少なくとも2つの反
    復を割り当てずに残して実行のために均等数の反復を各
    プロセッサに割り当てて前記反復を分配するよう構成さ
    れるとともに前記割り当てられていない反復を少なくと
    も2つのプロセッサに割り当てるよう構成されたコード
    を有するものであり、更に、 前記プログラムを実行するよう構成されたプロセッサの
    少なくとも1つを有することを特徴とする複数のプロセ
    ッサから構成されるデータ処理システム。
  9. 【請求項9】 少なくとも1つの前記プロセッサは並列
    に動作し且つ多数のスレッドを含み、 前記コードは更に複数の反復を前記多数のスレッドに割
    り当てるよう構成されたものであることを特徴とする。
    請求項8に記載のシステム。
  10. 【請求項10】 前記プログラムは内側ループと外側ル
    ープとを含み、 前記外側ループは1から前記複数のプロセッサ数まで実
    行されるものであることを特徴とする請求項8に記載の
    方法。
  11. 【請求項11】 前記複数のプロセッサは1つの装置に
    位置することを特徴とする請求項10に記載のシステ
    ム。
  12. 【請求項12】 前記複数のプロセッサは複数の装置に
    位置することを特徴とする請求項10に記載の装置。
  13. 【請求項13】 データ処理システムにコードを受信す
    る手段を有し、前記コードは1からプロセッサ数まで繰
    り返す外側ループと並列化のための分割された機能を実
    行する内側ループとを含むものであり、更に、 前記コードをコンパイルしてプログラムを生成する手段
    と、 前記プログラムを実行して前記内側ループの反復をプロ
    セッサに分配させる手段と、 を有することを特徴とする多数のプロセッサと多数のル
    ープ反復を含むプログラムとから構成されるデータ処理
    システム。
  14. 【請求項14】前記プロセッサは複数の装置に含まれ、
    更に、 前記実行手段は、 前記プロセッサの数を決定する手段と、 前記内側ループの反復を前記複数の装置に含まれるプロ
    セッサに分配する手段と、 を有することを特徴とする請求項13に記載のシステ
    ム。
JP2000026984A 1999-02-04 2000-02-04 プロセッサ資源の均衡のとれた分配を実行する方法及びそのシステム Pending JP2000315163A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US24413399A 1999-02-04 1999-02-04
US09/244133 1999-02-04

Publications (1)

Publication Number Publication Date
JP2000315163A true JP2000315163A (ja) 2000-11-14

Family

ID=22921486

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2000026984A Pending JP2000315163A (ja) 1999-02-04 2000-02-04 プロセッサ資源の均衡のとれた分配を実行する方法及びそのシステム

Country Status (2)

Country Link
EP (1) EP1031923A2 (ja)
JP (1) JP2000315163A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10296315B2 (en) 2014-12-12 2019-05-21 Samsung Electronics Co., Ltd. Multiple-thread processing methods and apparatuses

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7418470B2 (en) 2000-06-26 2008-08-26 Massively Parallel Technologies, Inc. Parallel processing systems and method
US8325761B2 (en) 2000-06-26 2012-12-04 Massivley Parallel Technologies, Inc. System and method for establishing sufficient virtual channel performance in a parallel computing network
US7055144B2 (en) * 2001-07-12 2006-05-30 International Business Machines Corporation Method and system for optimizing the use of processors when compiling a program
CA2472442A1 (en) * 2002-01-10 2003-07-24 Massively Parallel Technologies, Inc. Parallel processing systems and method
US8108512B2 (en) 2006-09-01 2012-01-31 Massively Parallel Technologies, Inc. System and method for accessing and using a supercomputer
US7958194B2 (en) 2008-08-25 2011-06-07 Massively Parallel Technologies, Inc. System and method for parallel processing using a Type I Howard Cascade
US10216692B2 (en) 2009-06-17 2019-02-26 Massively Parallel Technologies, Inc. Multi-core parallel processing system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10296315B2 (en) 2014-12-12 2019-05-21 Samsung Electronics Co., Ltd. Multiple-thread processing methods and apparatuses

Also Published As

Publication number Publication date
EP1031923A2 (en) 2000-08-30

Similar Documents

Publication Publication Date Title
KR101738641B1 (ko) 멀티 코어 시스템의 프로그램 컴파일 장치 및 방법
Deng et al. Preemptive scheduling of parallel jobs on multiprocessors
Cierniak et al. Compile-time scheduling algorithms for a heterogeneous network of workstations
KR102163402B1 (ko) 멀티 노드와 멀티 gpu를 이용한 분산 학습 시스템 및 방법
Wong Group-based optimisation of signal timings using parallel computing
CN113391918A (zh) 用于处理计算作业的方法、设备和计算机程序产品
US20170371713A1 (en) Intelligent resource management system
JP2000315163A (ja) プロセッサ資源の均衡のとれた分配を実行する方法及びそのシステム
Feoktistov et al. Multi-agent approach for dynamic elasticity of virtual machines provisioning in heterogeneous distributed computing environment
Sant'Ana et al. Plb-hec: A profile-based load-balancing algorithm for heterogeneous cpu-gpu clusters
Díaz et al. Derivation of self-scheduling algorithms for heterogeneous distributed computer systems: Application to internet-based grids of computers
Beisel et al. Programming and scheduling model for supporting heterogeneous accelerators in Linux
Shachnai et al. Multiprocessor scheduling with machine allotment and parallelism constraints
JPH09293057A (ja) 階層構造型マルチプロセッサシステムにおけるタスク割り当て方法
ONeill et al. SHEPARD: Scheduling on heterogeneous platforms using application resource demands
CN111090508B (zh) 一种基于OpenCL的异构协同并行计算中设备间动态任务调度方法
JPH08185377A (ja) 分散計算機システム
RU2787958C2 (ru) Динамическое выделение неоднородных вычислительных ресурсов, определяемое во время выполнения приложения
US20090187895A1 (en) Device, method, program, and recording medium for converting program
Islam et al. Threads Scheduling and Load Balancing with Loop Iteration in Multicore Processors: a Case Study with OpenMP
Hunold et al. Dynamic scheduling of multi-processor tasks on clusters of clusters
Suttner Static partitioning with slackness
Gupta et al. Optimizing Greedy Algorithm to Balance the Server Load in Cloud Simulated Environment
JP2024040165A (ja) アプリケーションの実行中に決定される異種コンピューティングリソースの動的な割り当て
Philip Increasing chunk size loop scheduling algorithms for data independent loops

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090714

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20091215