JPH04287121A - タプルスペース方式 - Google Patents

タプルスペース方式

Info

Publication number
JPH04287121A
JPH04287121A JP5189891A JP5189891A JPH04287121A JP H04287121 A JPH04287121 A JP H04287121A JP 5189891 A JP5189891 A JP 5189891A JP 5189891 A JP5189891 A JP 5189891A JP H04287121 A JPH04287121 A JP H04287121A
Authority
JP
Japan
Prior art keywords
tuple
tuple space
program
space
data type
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.)
Withdrawn
Application number
JP5189891A
Other languages
English (en)
Inventor
Yasunori Kimura
康則 木村
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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP5189891A priority Critical patent/JPH04287121A/ja
Publication of JPH04287121A publication Critical patent/JPH04287121A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、複数のプロセッサから
タプルスペースへタプルの操作を行うタプルスペース方
式であって、Lindaのようなタプルとタプルスペー
ス(仮想共有メモリ)を使ってプログラム間の同期、通
信、並列実行を高速に可能とするタプルスペース方式に
関するものである。
【0002】近年、4ないし8台程度のプロセッサを1
つの共有メモリにバスを通して結合したり、1つの独立
した計算機システムをネットワークで多数結合したりす
るマルチプロセッサによる並列計算によって、処理の高
速化が行われている。このような計算機システムのプロ
グラミング手法は、未だ研究開発が十分行われていなく
、特に共有メモリを使用したシステムがネットワークで
結合した場合のような計算機システムをいかに使いこな
すかが問題となっている。このような問題に対処する1
つの手法として提案されたモデルがLindaと呼ばれ
るものである。このモデルは、ユーザプログラマは、タ
プルスペース(仮想共有メモリ)を使って並列プログラ
ムを陽に記述する。タプルスペースへのデータの出し入
れは、タプルというデータ構造を使って行う。この際、
タプルスペースを使って効率的に並列処理可能にするこ
とが望まれている。
【0003】
【従来の技術】従来、Lindaのモデルは、図7に示
すように、タプルスペース(TS)を設け、6種類のプ
リミティブを使ってユーザは並列プログラムを記述して
いる。例えば図中で”out”は、、プログラム中から
”out”の引数であるデータをタプルとしてタプルス
ペースに出力するプリミティブである。このとき、タプ
ルの引数は、タプルスペースに置く前にプログラム中で
評価する。この例では、ストリングの”pi”を評価し
、次の整数の3.1415を評価し、その結果を要素と
するタプル(”pi”,3.1415)をタプルスペー
スに置く。
【0004】”eval”は、”out”と同様な機能
を持っているが、引数を評価することなくタプルをタプ
ルスペースに置き、評価は”eval”を実行したプロ
グラムと並列に行う点が”out”と異なる。この機能
により、並列実行が可能となる。また、タプルスペース
からタプルを取り出すには、”in”を用いる。いずれ
のタプルを取り出すかはタプルの引数のパターンマッチ
ングで行う。引数と、プログラム中に記述したテンプレ
ートとが一致したタプルを1つ取り出す。一致したタプ
ルが複数ある場合には、任意の1つを選択する。一致す
るタプルが存在しない場合、それが現れるまで実行を中
断し、現れた時点で取り出す。この機能により、同期を
実現している。従って、”out”と、”in”を組み
合わせることにより、通信を行うことができる。
【0005】
【発明が解決しようとする課題】上述した従来のLin
daシステムは、プログラムの実行開始時に1つのタプ
ルスペースのみが当該プログラムに与えられ、プログラ
ムの終了によって消滅する。従って、ユーザプログラマ
がタプルスペースを陽に生成したり、消滅させたりでき
ない。また、同時に複数のタプルスペースをプログラム
上で扱うことができない。これらの事実により、以下の
問題があった。
【0006】(1)  タプルスペースが1つしか存在
しないので、小さなプログラムを記述する場合はそれで
十分であるが、大きな実用的なプログラムを複数の人間
で記述する場合には、違う意味で使うつもりのタプルが
、たまたま同じタプルの構造をもってしまったりして、
プログラムのバグを生み易いと共に、タプルの検索時間
が長くなり、全体の実行時間が遅くなってしまうという
問題がある。
【0007】(2)  大規模なプログラムを記述する
場合、プログラムの品質を上げるために、プログラムの
モジュール化の手法を用いるが、タプルスペースが1つ
しか与えられていない場合には、モジュール間で扱うデ
ータが全てこの1つのタプルスペースに置かなければな
らず、モジュール化を行いにくく、モジュール化の効果
が現れ難いという問題がある。
【0008】(3)  1つのタプルスペースが、プロ
グラムの始めに与えられ、終了時に消滅する。これでは
、プログラマは、タプルスペースにあるデータタプルや
アクティブタプルの細かな制御ができない問題がある。 特に、アクティブタプルは、タスクを1つ作ってフォー
クするので、その実行や中断、実行の状況のチェックな
ど、こまかな制御を行う必要が発生することがあるが、
従来のシステムではこれを行うことが困難である。
【0009】本発明は、タプルスペースのデータ型を設
けて複数生成および継承の指定を可能とし、タプルの衝
突の危険性を回避し、検索時間の短縮を図り、プログラ
ムを効率良く記述できるようにすることを目的としてい
る。
【0010】
【課題を解決するための手段】図1および図4を参照し
て課題を解決するための手段を説明する。図1および図
4において、データ型は、タプルスペースを宣言するデ
ータ型である。タプルスペース領域2は、タプルスペー
スを生成する領域である。
【0011】
【作用】本発明は、図1および図4に示すように、プロ
グラム中でデータ型としてタプルスペースを記述したこ
とに対応して、実行時に、タプルスペース領域2中にこ
れら記述されたタプルスペースを動的に生成したり、消
滅したりするようにしている。また、プログラム中でデ
ータ型としてタプルスペースを宣言および継承の有無を
指定したことに対応して、実行時に、タプルスペース領
域2中にこれら記述されたタプルスペースを複数生成、
および指定されたタプルスペース間に継承を持たせてタ
プルの検索範囲を制限したり、消滅したりするようにし
ている。
【0012】従って、タプルスペースのデータ型を設け
て複数生成および継承の指定を設けることにより、タプ
ルの衝突の危険性を回避、検索時間の短縮を図り、プロ
グラムを効率良く記述できるようにすることが可能とな
る。
【0013】
【実施例】次に、図1ないし図6を用いて本発明の実施
例の構成および動作を順次詳細に説明する。図1の(イ
)は、ブロック図を示す。図1の  (イ)において、
共有メモリ1は、複数のプロセッサPE#1、PE#2
、PE#3、PE#4などが共有バスを介してアクセス
するメモリであって、ここではコンパイルしたコードを
格納するコード領域3、本実施例に係わるタプルスペー
スを置くタプルスペース領域2、およびその他の実行時
データを置くその他のデータ領域4から構成されている
【0014】PE#1、PE#2、PE#3、PE#4
は、プログラムに従って動作するプロセセッサである。 図1の(ロ)は、タプルスペースを示す。ここで、タプ
ルスペース領域2は、図1の(イ)の共有メモリ1中に
設けたタプルスペース領域2である。このタプルスペー
ス領域2中には、図示のようにシステムが初めに1つの
タプルスペース#ORG(以下タプルスペースは、先頭
に#を付加する)を作成し、これ以外の#Aないし#G
はプログラム中でデータ型を宣言して動的に必要に応じ
て作成したものである。この際、必要に応じてタプルス
ペース間で継承を持たせるように指定できる(図4の■
の既述で#Cは#ORGを継承すると指定している)。
【0015】次に、継承を指定しない場合の構成および
動作を、図2のフローチャートの順序に従い、図4およ
び図5のプログラムをもとに詳細に説明する。図2にお
いて、S1は、領域宣言する。これは、図4の■の記述
TUPLESPACE  #A,#B,#C;によって
、タプルスペースのデータ型を宣言する。これに続いて
、図4の■の記述 #A=create  TS(); #B=create  TS(); #C=create  TS(#ORG);によって、
実際のタプルスペース#A、#B、#Cを生成する。こ
こで、#Cは、cteate  TSの引数、#ORG
によって、タプルスペース#Cがタプルスペース#OR
Gを継承する旨を指定、即ち#C中でプリミティブを実
行して所望のタプルが当該#Cにないとき、#ORGの
タプルもその検索の対象とする旨の指定を行ったことと
なる。尚、#A、#Bは、指定がないので、検索は自身
の#A、#Bのみで行う。
【0016】S2は、#Aの領域へのデータの出し入れ
を行う。これは、右側に記述したプリミティブout(
#A,100,“foo”);によって(図4の■)、
#Aにタプル(100,“foo”)を出している。 in(#A,100,?S);によって(図4の■)、
変数Sが“foo”に束縛される。
【0017】S3は、並列実行プロセスの生成を行う。 これは、右側に記述したプリミティブ eval(#A,f()); によって(図4の■)、#Aで図5の関数f()を並列
実行する(この関数f()は#D、#Eの2つを使い、
その和を#Aに置くプログラムである)。
【0018】S5は、領域宣言する。これは、右側に記
述した #D=create  TS(); #E=create  TS(); によって(図5の■)、タプルスペース#D、#Eの領
域宣言する。S6は、並列実行プロセスの生成を行う。 これは、右側に記述した eval(#D,g()); eval(#E,h()); によって(図5の■)、並列実行プロセスを生成する。
【0019】S7は、#D、#Eからのデータの取り込
みを行う。これは、右側に記述した in(#D,“Res”,Rd); in(#E,“Res”,Re); によって(図5の■)、結果を取り込む。 S8は、#Aへのデータの出力を行う。これは、右側に
記述した out(#A,“Res”,Rd+Re);によって(
図5の■)、#Aへ結果(ここでは和)を出力する(置
く)。
【0020】S4は、S5ないしS8の実行によって、
eval(#A,f())の実行が終了してその結果が
得られたので、この段階で初めて中断を解消し、この結
果を、#Aから取り出す。そして、図5の最下行でこれ
ら#D、#Eの領域を削除して消滅させ、実行成功とし
て終了する。以上のように、本発明で設けたデータ型で
領域宣言して動的にタプルスペースを生成して並列処理
を行ってその結果を取り出した後、生成したタプルスペ
ースを消滅させることにより、必要に応じてタプルスペ
ースの生成、消滅を繰り返し、効率的に並列処理をプロ
グラミングして実行することが可能となる。
【0021】次に、継承を指定した場合の構成および動
作を、図3のフローチャートの順序に従い詳細に説明す
る。図3において、S11は、領域宣言する。これは、
TUPLESPACE  #A,#B,#C;によって
、タプルスペースのデータ型を宣言する。これに続いて
、 #A=create  TS(); #B=create  TS(); #C=create  TS(#ORG);によって、
実際のタプルスペース#A、#B、#Cを生成する。こ
こで、#Cは、cteate  TSの引数、#ORG
によって、タプルスペース#Cがタプルスペース#OR
Gを継承する旨を指定する。尚、#A、#Bは、指定が
ないので、検索は自身の#A、#Bのみで行う。
【0022】S12は、#Aの領域へのデータの出力を
行う。これは、右側に記述したプリミティブout(#
ORG,“int”,100);out(#C,“in
t”,200);によって、#ORGに“int”,1
00を出力し、#Cに“int”,200を出力する。
【0023】S13は、並列実行プロセスの生成を行う
。これは、右側の記述したプリミティブeval(#C
,ff()); によって、#C中で関数f()を求める並列実行プロセ
スを生成する。S14は、タプルの取り出しを行う。こ
れは、右側に記述した in(#C,“int”,100); によって、その結果を取り出す。
【0024】S15は、S14で取り出した結果と等し
いタプルを検索するが、#Cには見つからないので、こ
の#Cを継承とS11で宣言しておいた#ORGを検索
し、ここではS12で出力しておいた等しいタプルを見
つけ、タプルの取り出しに成功する。以上のように、本
発明で設けたデータ型で領域宣言および継承を指定して
動的にタプルスペースを生成して並列処理を行ってその
結果を取り出し、等しいタプルを継承と指定したタプル
スペースを検索して該当するタプルを効率的に取り出す
ことができる。これにより、必要に応じてタプルスペー
スの生成、消滅を繰り返し、更に、タプルスペース間の
継承を指定して検索を容易にした効率的な並列処理をプ
ログラミングし、実行することが可能となる。
【0025】図4は、本発明のプログラム例(その1)
を示す。ここで、■は、タプルスペースのデータ型の宣
言文を示す。ここでは、タプルスペース#A、#B、#
Cが宣言されている。■は、#A、#B、#Cを生成す
るプログラムの記述である。■は、出力するプリミティ
ブである。
【0026】■は、取り込むプリミティブである。■は
、関数f()を実行させて、その結果を#Aに置くプリ
ミティブである。図5は、本発明のプログラム例(その
2)を示す。これは、図4の■の関数f()である。 ■は、#D、#Eを生成するプログラムの記述である。
【0027】■は、関数g()、h()を実行させて、
その結果を#D、#Eにそれぞれ置くプリミティブであ
る。■は、#D、#Eからデータを取り込むプリミティ
ブである。■は、結果(ここでは和)を#Aに出力する
プリミティブである。図6は、本発明のプログラム例(
その3)を示す。これは、タプルスペースの実行の中断
、再開、消滅の記述例を示す。
【0028】   suspend  TS(#AA);・・・・・・
・・・・・・・・・・(1)は、#AAの実行を中断す
るプリミティブである。   resume  TS(#AA);・・・・・・・
・・・・・・・・・・(2)は、#AAの実行を再開す
るプリミティブである。   delete  TS(#AA);・・・・・・・
・・・・・・・・・・(3)は、#AA自体を消滅する
プリミティブである。
【0029】
【発明の効果】以上説明したように、本発明によれば、
タプルスペースのデータ型を設けて複数生成および継承
の指定を設ける構成を採用しているため、タプルの衝突
の危険性を回避し、検索時間の短縮を図り、プログラム
を効率良く記述できるようにすることができる。また、
ユーザプログラムに対しては、プログラムのモジュール
化を行い易くなり、更にタプルスペースをデータとして
扱えるようになった。更に、タプルスペースに階層を持
たせ、プログラムを効率良く書き、細かな制御を行うこ
とができるようになった。
【図面の簡単な説明】
【図1】本発明の1実施例構成図である。
【図2】本発明の動作説明図(継承なし)である。
【図3】本発明の動作説明図(継承あり)である。
【図4】本発明のプログラム例(その1)である。
【図5】本発明のプログラム例(その2)である。
【図6】本発明のプログラム例(その3)である。
【図7】従来技術の説明図である。
【符号の説明】
1:共有メモリ 2:タプルスペース領域 3:コード領域 4:その他のデータ領域 PE#1ないしPE#4:プロセッサ

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】  複数のプロセッサからタプルスペース
    へタプルの操作を行うタプルスペース方式において、デ
    ータ型にタプルスペースを設け、プログラム中で上記設
    けたデータ型でタプルスペースを記述したことに対応し
    て、実行時に、タプルスペース領域(2)中にこれら記
    述されたタプルスペースを動的に生成したり、消滅した
    りするように構成したことを特徴とするタプルスペース
    方式。
  2. 【請求項2】  複数のプロセッサからタプルスペース
    へタプルの操作を行うタプルスペース方式において、デ
    ータ型にタプルスペースを設けると共にタプルスペース
    間の継承の有無の指定を設け、プログラム中で上記設け
    たデータ型でタプルスペースを宣言および継承の有無を
    指定したことに対応して、実行時に、タプルスペース領
    域(2)中にこれら記述されたタプルスペースを複数生
    成、および指定されたタプルスペース間に継承を持たせ
    てタプルの検索範囲を制限したり、消滅したりするよう
    に構成したことを特徴とするタプルスペース方式。
JP5189891A 1991-03-18 1991-03-18 タプルスペース方式 Withdrawn JPH04287121A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5189891A JPH04287121A (ja) 1991-03-18 1991-03-18 タプルスペース方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5189891A JPH04287121A (ja) 1991-03-18 1991-03-18 タプルスペース方式

Publications (1)

Publication Number Publication Date
JPH04287121A true JPH04287121A (ja) 1992-10-12

Family

ID=12899698

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5189891A Withdrawn JPH04287121A (ja) 1991-03-18 1991-03-18 タプルスペース方式

Country Status (1)

Country Link
JP (1) JPH04287121A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010531023A (ja) * 2007-06-19 2010-09-16 クゥアルコム・インコーポレイテッド ユーザの電子的コミュニティを管理する装置と方法
JP2011526016A (ja) * 2008-06-18 2011-09-29 クゥアルコム・インコーポレイテッド 分散型検索の結果のマネタイズおよび優先順位付け
US8930531B2 (en) 2008-06-18 2015-01-06 Qualcomm Incorporated Persistent personal messaging in a distributed system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010531023A (ja) * 2007-06-19 2010-09-16 クゥアルコム・インコーポレイテッド ユーザの電子的コミュニティを管理する装置と方法
JP2011526016A (ja) * 2008-06-18 2011-09-29 クゥアルコム・インコーポレイテッド 分散型検索の結果のマネタイズおよび優先順位付け
US8930531B2 (en) 2008-06-18 2015-01-06 Qualcomm Incorporated Persistent personal messaging in a distributed system

Similar Documents

Publication Publication Date Title
Aho et al. On finding lowest common ancestors in trees
Ahuja et al. Linda and friends
US7853937B2 (en) Object-oriented, parallel language, method of programming and multi-processor computer
Bal et al. Object distribution in Orca using compile-time and run-time techniques
US5848274A (en) Incremental byte code compilation system
JPH0432416B2 (ja)
US8578389B1 (en) Method and system for merging directed acyclic graphs representing data flow codes
JP2002525744A (ja) テキスト・オブジェクトのコンパイル方法およびシステム
van Dijk Sylvan: multi-core decision diagrams
Busi et al. Coordination models: A guided tour
WO1989001203A1 (en) Mimd computer system
US9830206B2 (en) Cross-thread exception handling
Hoch et al. Compile-time partitioning of a non-strict language into sequential threads
US6090155A (en) Optimizing apparatus and method for defining visibility boundaries in compiled code
JPH07200312A (ja) ディジタルデータ処理システムとエラー処理方法
JPH04287121A (ja) タプルスペース方式
Donaldson et al. Automatic offloading of C++ for the Cell BE processor: a case study using Offload
Ungethüm et al. Mastering the NEC vector engine accelerator for analytical query processing
Sibertin-Blanc et al. Syroco: A c++ implementation of cooperative objects
Wiedmann Steps toward an APL compiler
US20080282237A1 (en) Method and Apparatus For Generating Execution Equivalence Information
Zehendner A module-based assembly language with parallel processing constructs and its implementation in the ASTOR architecture
Zenith A rationale for programming with Ease
WO2024065868A1 (zh) 一种用于图计算并行执行的中间表示方法及装置
Yelon et al. Agents: An undistorted representation of problem structure

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19980514