JP7010365B2 - パラメータ設定装置、演算装置、それらの方法、およびプログラム - Google Patents

パラメータ設定装置、演算装置、それらの方法、およびプログラム Download PDF

Info

Publication number
JP7010365B2
JP7010365B2 JP2020508217A JP2020508217A JP7010365B2 JP 7010365 B2 JP7010365 B2 JP 7010365B2 JP 2020508217 A JP2020508217 A JP 2020508217A JP 2020508217 A JP2020508217 A JP 2020508217A JP 7010365 B2 JP7010365 B2 JP 7010365B2
Authority
JP
Japan
Prior art keywords
character string
unit
size
processing
thread
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
JP2020508217A
Other languages
English (en)
Other versions
JPWO2019181594A1 (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.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone 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 Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Publication of JPWO2019181594A1 publication Critical patent/JPWO2019181594A1/ja
Application granted granted Critical
Publication of JP7010365B2 publication Critical patent/JP7010365B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/126Character encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/131Fragmentation of text files, e.g. creating reusable text-blocks; Linking to fragments, e.g. using XInclude; Namespaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/40Processing or translation of natural language
    • G06F40/42Data-driven translation
    • G06F40/44Statistical methods, e.g. probability models
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09CCIPHERING OR DECIPHERING APPARATUS FOR CRYPTOGRAPHIC OR OTHER PURPOSES INVOLVING THE NEED FOR SECRECY
    • G09C1/00Apparatus or methods whereby a given sequence of signs, e.g. an intelligible text, is transformed into an unintelligible sequence of signs by transposing the signs or groups of signs or by replacing them by others according to a predetermined system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/36Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols with means for detecting characters not meant for transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/34Encoding or coding, e.g. Huffman coding or error correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Security & Cryptography (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Description

本発明は、テキストファイルの文字列に対する演算技術に関する。
1個以上のレコードを含み、各レコードが任意長の1個以上のセル(「フィールド」と呼ばれる場合もある)を含み、各セルが任意個の文字を含むテキストファイルの形式が知られている(例えば、非特許文献1等参照)。このようなテキストファイルの各セルに記述された値に対して特定の演算処理(例えば、非特許文献2,3等参照)を並列処理する場合、1つの単位処理で扱われるレコード数および並列数を特定する必要がある。この際、演算処理を効率的に行うためには、当該演算処理を行う演算装置のメインメモリサイズおよびキャッシュメモリサイズのみならず、入力されたテキストファイルの各レコードおよび各セルの位置および長さを考慮しなければならない。
Y. Shafranovich, "RFC4180: Common Format and MIME Type for Comma-Separated Values (CSV) Files," [online], October, 2005, SolidMatrix Technologies, Inc., [平成30年1月6日検索]、インターネット<http://www.ietf.org/rfc/rfc4180.txt> 五十嵐大,千田浩司,濱田浩気,高橋克巳,"軽量検証可能3パーティ秘匿関数計算の効率化及びこれを用いたセキュアなデータベース処理 (Secure Database Operations Using An Improved 3-party Veriable Secure Function Evaluation),"InSCIS2011,2011. A. Shamir, "How to Share a Secret", Communications of the ACM, November 1979, Volume 22, Number 11, pp.612-613.
しかしながら、このようなテキストファイルの各セルの長さは任意であり、また当該テキストファイルには各セルの位置および長さを表す情報は含まれていない場合も多い。そのため、各セルの位置や長さを特定するためには、入力されたテキストファイルの文字列を最初から順番に読み込まなければならない。よって、テキストファイルの各レコードおよび各セルの位置および長さを考慮し、1つの単位処理で扱われるレコード数および演算処理における並列数を特定し、効率的な演算処理を行うことは容易ではない。
本発明はこのような点に鑑みてなされたものであり、1個以上のレコードを含み、各レコードが任意長の1個以上のセルを含み、各セルが任意個の文字を含むテキストファイルに対する演算処理を効率的に行うことを目的とする。
上記の課題を解決するために、テキストファイルの文字列に対する演算処理のためのパラメータ設定装置が提供される。ただし、当該テキストファイルはW個のレコードを含み、レコードのそれぞれは任意長のG個のセルを含み、セルのそれぞれは任意個の文字を含む。WおよびGが1以上の整数であり、G個のセルは属性情報に対応している。Cがキャッシュメモリサイズ、Mがメインメモリサイズである。パラメータ設定装置は、最大サイズ設定部と最小サイズ設定部とエンコードサイズ設定部と演算サイズ設定部と参照サイズ設定部と処理単位算出部と並列数算出部とを有する。最大サイズ設定部は当該属性情報を入力としてテキストファイルの1レコード分の文字列のサイズの最大値Scsvを設定する。最小サイズ設定部は当該属性情報を入力として1レコード分の文字列のサイズの最小値scsvを設定する。エンコードサイズ設定部は1レコード分の文字列を所定の有限集合の元にエンコードして得られるエンコード情報の合計サイズの最大値Sencを設定する。演算サイズ設定部は1レコード分のエンコード情報に特定の演算を行って得られる演算値の合計サイズの最大値Sssを設定する。ただし、当該エンコードおよび当該演算はテキストファイルのrレコード分の文字列である処理単位文字列ごとに実行される処理である。参照サイズ設定部は1レコード分のセルそれぞれの位置および長さを表す参照情報の合計サイズSrefを設定する。処理単位算出部はレコード数rとしてC/(Scsv+Senc+Sref)の関数値を得る。並列数算出部は演算処理における並列数nとしてf/I・r・Scsvの関数値を得る。ただし、Iが処理単位文字列ごとに実行されるエンコードおよび演算の繰り返し回数の最大値であり、Sref≧Sssのときmax(Sref,Sss)=Srefであり、Sref<Sssのときmax(Sref,Sss)=Sssであり、fがscsv・M/(scsv+Senc+max(Sref,Sss))の関数値である。
以上により、1個以上のレコードを含み、各レコードが任意長の1個以上のセルを含み、各セルが任意個の文字を含むテキストファイルに対する演算処理を効率的に行うことができる。
図1は実施形態の演算システムを例示したブロック図である。 図2は実施形態のパラメータ設定装置の機能構成を例示したブロック図である。 図3は実施形態の演算装置の機能構成を例示したブロック図である。 図4は実施形態の処理部の機能構成を例示したブロック図である。 図5は実施形態のパラメータ設定処理を例示するためのフロー図である。 図6は実施形態の演算処理を例示するためのフロー図である。 図7は実施形態のスレッドiの処理を例示するためのフロー図である。 図8は実施形態の各スレッドの処理を例示するための概念図である。 図9は実施形態のテキストファイルを例示するための概念図である。 図10は実施形態のテキストファイルを例示するための概念図である。 図11は実施形態のテキストファイルを例示するための概念図である。 図12は実施形態のテキストファイルを例示するための概念図である。 図13は実施形態のスレッドiの処理を例示するためのフロー図である。 図14は実施形態の各スレッドの処理を例示するための概念図である。 図15は実施形態のテキストファイルを例示するための概念図である。 図16は実施形態のテキストファイルを例示するための概念図である。 図17は実施形態のテキストファイルを例示するための概念図である。 図18は実施形態のテキストファイルを例示するための概念図である。
以下、本発明の実施形態を説明する。
[概要]
まず概要を説明する。
<テキストファイル>
各実施形態ではテキストファイルの文字列に対する演算処理を行う。このテキストファイルはW個のレコードを含み、レコードのそれぞれは任意長のG個のセルを含み、セルのそれぞれは任意個の文字を含む。ただし、各セルの長さには各セルの属性に応じた上限がある。WおよびGが1以上の整数である。例えば、WおよびGの少なくとも一方は2以上の整数である。Wが2以上の整数であってもよいし、Gが2以上の整数であってもよいし、WおよびGの両方が2以上の整数であってもよい。Wが2以上の整数である場合、互いに隣接するレコードの間にはレコードの区切りを特定するための情報が存在する。例えば、互いに隣接するレコードの間に改行が存在し、複数のレコードは改行によって互いに区切られている。また、Gが2以上の整数である場合、互いに隣接するセルの間にはセル間の区切りを特定するための情報が存在する。例えば、互いに隣接するセルの間に区切り文字または改行が存在し、複数のセルは区切り文字または改行によって互いに区切られている。区切り文字の例はカンマ「,」である。その他の例として、互いに隣接するセルの間にタブまたは改行が存在してもよいし、互いに隣接するセルの間に半角スペースまたは改行が存在してもよい。Wが2以上の整数である場合、各レコードに含まれるセルの個数Gは互いに同一である。各レコードのG個のセルは属性情報(「スキーマ」とも呼ぶ)に対応している。属性情報は各セルがどのような属性の情報であるかを表しており、少なくとも各セルで表される文字列のサイズ(データ量)の最大値と最小値とを特定または推定するための情報を含んでいる。例えば、属性情報はセルがどのような有限集合の元を表しているのか示す情報を含んでいる。例えば、属性情報は「セルがpを法とした剰余(mod p)を表していること(pは正整数)」を表していてもよいし、「セルが所定個(例えば10個)の所定の有限体(例えば拡大体GF(2))の要素で表現される文字列であること」を表していてもよいし、「セルが所定の整数型の整数(例えば、符号付き32ビット整数)を表す文字列であること」を表していてもよい。G個の属性情報のそれぞれが各レコードのG個のセルのそれぞれに一対一で対応していてもよいし(すなわち、1個の属性情報が1個のセルの属性を表していてもよい)、1個の属性情報が各レコードの複数個(例えばG個)のセルに対応していてもよい(すなわち、1個の属性情報が複数個のセルの属性を表していてもよい)。前者の場合、1つのレコードに属する複数のセルの属性が互いに異なっていてもよいし、互いに同一であってもよい。また、Wが2以上の整数である場合、すべてのレコードのG個のセルに対応する「G個の属性の組」は互いに同一である。すなわち、すべてのレコードが有するg番目(ただし、g=1,…,G)のセルの属性att(g)は互いに同一である。その他、属性情報がセルが表す情報の種別を表現していてもよい。また属性情報はテキストファイルに含まれていてもよいし(例えば、テキストファイルのヘッダが属性情報あってもよい)、含まれていなくてもよい。テキストファイルの例は、CSV(Comma-Separated Values)ファイル、TSV(tab-separated values)ファイル、SSV(space-separated values)ファイルなどである。これらはCSV(character-separated values)ファイルやDSV(delimiter-separated values)ファイルとして総称される。
<パラメータ設定装置>
パラメータ設定装置は、テキストファイルの文字列に対する「演算処理」のためのパラメータを設定して出力する。この「演算処理」はどのようなものであってもよい。「演算処理」の例は秘密分散処理、秘密計算処理(例えば、非特許文献1,2等参照)、暗号化処理、署名生成処理などである。パラメータ設定装置が設定するパラメータは、1つの単位処理で扱われるレコード数および演算処理における並列数である。好ましくは、パラメータ設定装置は、さらにテキストファイルからまとめて読み込まれるデータのファイルバッファサイズも設定する。以下では、テキストファイルの文字列に対する演算処理を行う演算装置のキャッシュメモリのキャッシュメモリサイズ(キャッシュメモリの記憶容量)をCと表記し、メインメモリのメインメモリサイズ(メインメモリの記憶容量)をMと表記する。
パラメータ設定装置は、最大サイズ設定部と最小サイズ設定部とエンコードサイズ設定部と演算サイズ設定部と参照サイズ設定部と処理単位算出部と並列数算出部とを有する。ファイルバッファサイズも設定される場合、パラメータ設定装置はさらにバッファサイズ算出部も有する。
最大サイズ設定部は属性情報を入力としてテキストファイルの1レコード分の文字列のサイズの最大値Scsvを設定して出力する。最大値Scsvはテキストファイルの各レコードの文字列のサイズを大きめに見積もったレコードサイズである。すなわち、属性情報が表す各セルのサイズの最大値(またはその推定値)を1レコード分合計したものが最大値Scsvである。前述のように、属性情報は各セルで表される文字列のサイズの最大値を特定または推定するための情報を含み、最大サイズ設定部はこの情報を用いて最大値Scsvを設定する。例えば、属性情報が「セルが符号付き32ビット整数を表す文字列であること」を表す場合、当該セルのサイズの最大値は11バイト(符号のための1バイト+11桁の整数のための10バイト)である。
最小サイズ設定部は属性情報を入力として1レコード分の文字列のサイズの最小値scsvを設定して出力する。最小値scsvはテキストファイルの各レコードの文字列のサイズを小さめに見積もったレコードサイズである。すなわち、属性情報が表す各セルのサイズの最小値(またはその推定値)を1レコード分合計したものが最小値scsvである。前述のように、属性情報は各セルで表される文字列のサイズの最小値を特定または推定するための情報を含み、最小サイズ設定部はこの情報を用いて最小値scsvを設定する。例えば、属性情報が「セルが符号付き32ビット整数を表す文字列であること」を表す場合、当該セルのサイズの最小値は1バイトである。
エンコードサイズ設定部は1レコード分の文字列を所定の有限集合の元にエンコード(変換)して得られるエンコード情報の合計サイズの最大値Sencを設定して出力する。最大値Sencは1レコード分のエンコード情報の合計サイズを大きめに見積もったレコードサイズである。エンコード情報が属する「所定の有限集合」の例は、pを法とした剰余(mod p)で表される有限集合、所定ビットで表現される値の有限集合、所定のビット数の所定の整数型の整数で表現される有限集合などである。この「所定の有限集合」は次に述べる「演算」の内容に応じて予め定められている。最大値Sencは、例えば、エンコード情報が属する所定の有限集合および属性情報から特定される。例えば、属性情報が「セルが261を法とした剰余(mod 261)を表していること」を表しており、このセルの文字列が261を法とした剰余(mod 261)で表現されるエンコード情報にエンコードされる場合、当該セルに対応するエンコード情報の最大サイズは8バイトになる。エンコード情報が属する所定の有限集合は、例えば、予め定められている。
演算サイズ設定部は1レコード分のエンコード情報に特定の「演算」を行って得られる演算値の合計サイズの最大値Sssを設定して出力する。最大値Sssは1レコード分の演算値の合計サイズを大きめに見積もったレコードサイズである。この「演算」の例は秘密分散、秘密計算、暗号化、署名生成などである。「演算」は各セルを披演算子として行われるものであってもよいし、複数のセルを披演算子として行われるものであってもよい。最大値Sssは、例えば、エンコード情報が属する所定の有限集合、「演算」の内容、および属性情報から特定される。例えば、属性情報が「セルが261を法とした剰余(mod 261)を表していること」を表しており、このセルの文字列が261を法とした剰余(mod 261)で表現されるエンコード情報にエンコードされており、「演算」が各セルの値をShamir秘密分散方式(例えば、非特許文献3)でN(ただし、Nは正整数)個のパーティに秘密分散するものである場合、当該セルに対応する演算値の最大サイズは8Nバイトになる。
参照サイズ設定部はテキストファイル内の1レコード分のセルそれぞれの位置および長さを表す参照情報の合計サイズSrefを設定して出力する。「セルの位置」は、例えばセルの先頭文字の位置であってもよいし、セルの最終文字の位置であってもよいし、その他のセル内の文字の位置であってもよい。「セルの位置を表す情報」は、例えば、テキストファイルの文字列の先頭の文字から「セルの位置」の文字までの文字数であってもよいし、この文字数の関数値であってもよい。「セルの長さを表す情報」は、例えば、セルの文字数であってもよいし、この文字数の関数値であってもよい。参照情報は例えば属性情報から特定される。属性情報によって1レコードに属するセルの個数を特定できるからである。各セルの位置および長さを表すために必要なデータサイズはそれを表現する形式によって定まる。例えば、各セルの位置および長さを符号なし64ビット整数で表す場合、各セルの参照情報は16バイトになる。
上述した「エンコード」および「演算」はテキストファイルのrレコード分の文字列である処理単位文字列ごとに実行される。処理単位文字列ごとに実行される処理を「単位処理」と呼ぶことにする。処理単位算出部は1回の単位処理で処理されるレコード数rを表す「C/(Scsv+Senc+Sref)の関数値」を得て(レコード数rとしてC/(Scsv+Senc+Sref)の関数値を得て)出力する。キャッシュメモリサイズCは、予め定められたものであってもよいし、入力されたものであってもよい。最大値Scsvは最大サイズ設定部で得られたものであり、最大値Sencはエンコードサイズ設定部で得られたものであり、合計サイズSrefは参照サイズ設定部で得られたものである。「αの関数値」はαそのものであってもよいし、αに対応するその他の値であってもよい。「αの関数値」の例は、α以上の最小の整数、α以下の最大の整数、αに最も近い整数などである。例えば、r=C/(Scsv+Senc+Sref)であってもよいし、r=ROUNDUP(C/(Scsv+Senc+Sref))であってもよいし、r=ROUNDDOWN(C/(Scsv+Senc+Sref))であってもよいし、r=ROUND(C/(Scsv+Senc+Sref))であってもよい。ただし、ROUNDUP(α)はαを整数値に切り上げる切り上げ関数であり、ROUNDDOWN(α)はαを整数値に切り捨てる切り捨て関数であり、ROUND(α)はαをαに最も近い整数に丸める丸め関数である。ここで、Scsv+Senc+Srefは、処理部が、テキストファイルから1レコード分の文字列を読み込み、参照情報を参照しながら、エンコード情報にエンコードして秘密分散などの「演算」を行うまでの処理(以下、「1レコード分の一連の処理」という)のために必要なメモリサイズを表す。このメモリサイズがキャッシュメモリサイズ以下であれば、途中でメインメモリからデータを読み込むことなく高速に1レコード分の一連の処理を実行できる。C/(Scsv+Senc+Sref)は、何回分の「1レコード分の一連の処理」に必要なメモリサイズ(Scsv+Senc+Sref)をキャッシュメモリに確保できるかを表すものである。C/(Scsv+Senc+Sref)に対応するレコード数rの文字列を処理単位文字列とすることで、rレコード分の処理を行う際のメインメモリへのアクセス回数を削減し、高速に演算を行うことができる。
並列数算出部は演算処理における並列数nを表す「f/I・r・Scsvの関数値」を得て(並列数nとしてf/I・r・Scsvの関数値を得て)出力する。例えば、np=f0/I・r・Scsvであってもよいし、np=ROUNDUP(f0/I・r・Scsv)であってもよいし、np=ROUNDDOWN(f0/I・r・Scsv)であってもよいし、np=ROUND(f0/I・r・Scsv)であってもよい。fはscsv・M/(scsv+Senc+max(Sref,Sss))の関数値である。例えば、f0=scsv・M/(scsv+Senc+max(Sref,Sss))であってもよいし、f0=ROUNDUP(scsv・M/(scsv+Senc+max(Sref,Sss)))であってもよいし、f=ROUNDDOWN(scsv・M/(scsv+Senc+max(Sref,Sss)))であってもよいし、f=ROUND(scsv・M/(scsv+Senc+max(Sref,Sss)))であってもよい。ただし、Sref≧Sssのときmax(Sref,Sss)=Srefであり、Sref<Sssのときmax(Sref,Sss)=Sssである。Iは処理単位文字列ごとに実行される「エンコード」および「演算」の繰り返し回数の最大値である。例えば、Iは処理単位文字列ごとに実行される「エンコード」および「演算」の繰り返し回数である。メインメモリサイズMは、予め定められたものであってもよいし、入力されたものであってもよい。最小値scsvは最小サイズ設定部で設定されたものであり、最大値Sencはエンコードサイズ設定部で設定されたものであり、最大値Sssは演算サイズ設定部で設定されたものであり、合計サイズSrefは参照サイズ設定部で設定されたものであり、繰り返し回数の最大値Iは予め定められたものである。好ましくは、繰り返し回数の最大値Iは、rレコード分の文字列である処理単位文字列の「エンコード」および「演算」を行うための合計処理量に対する、前処理の合計処理量(演算数の合計)の比率が所定値以下となるように定められている。rは処理単位算出部で得られたものであってもよいし、C,Scsv,Senc,Srefから得られたものであってもよい。すなわち、f/I・r・Scsvの関数値が得られるのであれば、必ずしもf/I・r・Scsvの関数値の生成に処理単位算出部で得られたrが用いられなくてもよい。ここで、X=(scsv+Senc+max(Sref,Sss))/scsvは、1レコード分の一連の処理に必要なメモリサイズが、テキストファイルから読み込まれた1レコード分の文字列のメモリサイズの最大何倍であるかを表している。そのため、Scsv・Xは1レコード分の一連の処理に必要なメモリサイズの最大値を表し、I・r・Scsv・Xはrレコード分の一連の処理をI回繰り返すために必要なメモリサイズの最大値を表す。fはscsv・M/(scsv+Senc+max(Sref,Sss))=M/Xの関数値であるため、f/I・r・Scsvは、メインメモリサイズMが「rレコード分の一連の処理(「1レコード分の一連の処理」をrレコード分行う処理)」をI回繰り返す処理に必要なメモリサイズの何倍であるか、を表す。そのため、f/I・r・Scsvに対応する値を並列数nとすることでメインメモリのバッファオーバーフローを抑制できる。なお、エンコードの際には参照情報が必要となるため、Srefの領域をメインメモリに確保しておく必要がある。一方、エンコード後の秘密分散などの「演算」の際には参照情報は必要ないが、得られた演算値を格納するSssの領域をメインメモリに確保する必要がある。すなわち、SrefおよびSssの両方の領域が同時に必要となることはない。max(Sref,Sss)の領域をメインメモリに確保できれば十分である。
バッファサイズ算出部は、演算処理の際にテキストファイルの文字列からまとめて読み込まれるデータのファイルバッファサイズfを表す「f/nの関数値」を得て(ファイルバッファサイズfとしてf/nの関数値を得て)出力する。例えば、f=f0/npであってもよいし、f=ROUNDUP(f0/np)であってもよいし、f=ROUNDDOWN(f0/np)であってもよいし、f=ROUND(f0/np)であってもよい。fは上述の通りであり、nは並列数算出部で得られたものであってもよいし、f,I,r,Scsvから得られたものであってもよい。すなわち、f/nの関数値が得られるのであれば、必ずしもf/nの関数値の生成に並列数算出部で得られたnが用いられなくてもよい。ここで、n=f/I・r・Scsvとするとf/n=I・r・Scsvとなる。これは、rレコード分の処理をI回繰り返すためにテキストファイルから読み込まれる文字列のファイルバッファサイズfに対応する。ファイルバッファサイズfが大きいほうがシーケンシャルアクセルに近くなり高速だが、必要なメインメモリの記憶容量が大きくなる。上述のように得られたファイルバッファサイズfは、予め定められたメインメモリサイズMの制約の中で高速な処理を実現するものである。
<演算装置(一般版)>
演算装置は入力されたテキストファイルの文字列に対する演算処理を行う。演算装置はこの演算処理でパラメータ設定装置で得られたレコード数rおよび並列数nを用いる。パラメータ設定装置でさらにファイルバッファサイズfが得られる場合には、演算装置はこの演算処理でさらにパラメータ設定装置で得られたファイルバッファサイズfを用いる。パラメータ設定装置でファイルバッファサイズfが得られない場合、演算装置はファイルバッファサイズfとして予め定められた値を用いてもよいし、属性情報に対応するその他のファイルバッファサイズfが用いられてもよい。
テキストファイルが秘密分散などの「演算」の対象ではない文字を含む場合がある。例えば、CSVファイルにおけるカンマはセルの区切りを表す文字であって「演算」の対象ではない。CSVファイルではセルの文字列がダブルクォーテーション「“」「”」で囲まれる場合があるが、ダブルクォーテーションも「演算」の対象ではない。改行を表す文字(例えば、¥n)なども「演算」の対象ではない(これらのダブルクォーテーション「“」「”」はセルに含まれない)。このような「演算」の対象ではない文字を「特殊文字」と呼ぶことにする。セル内において特殊文字の前にエスケープ文字を付加し、特殊文字を「演算」の対象の文字と扱うことを許す形式もある。このような場合、セル内の各文字単独でその文字が「演算」の対象を表すか否かを判別できず、セル間の区切りを判別できないことがある。例えば、「演算」の対象としてダブルクォーテーション「“」を用いる場合に、エスケープ文字として「“」をさらに付加する形式がある。例えば、セルの「123“456」という値を「演算」の対象とする場合に、当該セルを“123““456”と表記する場合がある。このような場合、セル“123““456”を先頭から順番に読んでいかなければセル間の区切りを判別できない。例えば、後半の“456”のみが読み込まれた場合、これが「456」を表す1つのセルであるのか、「“456」を含む値を表すセルの一部であるのかを判別できない。その他、「演算」の対象として改行を表す文字「¥n」を用いる場合に、エスケープ文字として「¥」をさらに付加する形式もある。例えば、セルの「123¥n456」という値を「演算」の対象とする場合に、当該セルを“123¥¥n456”と表記する場合がある。このような場合、セル“123¥¥n456”を先頭から順番に読んでいかなければセル間の区切りを判別できない。このような場合、テキストファイルの各セルの位置および長さを特定する処理を並列に行うことはできず、この処理をテキストファイルの先頭から順番に行っていかなければならない。
このような形式のテキストファイルに対応可能な演算装置はメインメモリとキャッシュメモリと複数の処理部とを有する。各処理部は、読み込み部とファイル読み込みロック解除部とパース部とバッファ境界ロック解除部とエンコード部と演算部と並列性ロック解除部とを有する。これら複数の処理部は何れかのスレッドの処理に割り当てられる。スレッドiの処理を行う処理部は以下の処理を行う。なお、iは各スレッドを表し、i∈{0,…,T-1}であり、Tがテキストファイルの文字列のサイズTSに対応するスレッド数を表す正整数であり、1≦n≦Tである。例えば、各スレッドiでテキストファイルから読み込まれる文字列のサイズTSについてTS=TS+…+TST-1もしくはTS≦TS+…+TST-1を満たす、または、f・T≧TSを満たす。また、初期状態でスレッド0のファイル読み込みロックおよびバッファ境界ロックならびにスレッド0,…,n-1の並列性ロックが解除されているものとする。
読み込み部は、スレッドiのファイル読み込みロックおよび並列性ロックが解除された後、テキストファイルの文字列からファイルバッファサイズfの領域に格納可能な文字列Sを読み込んでメインメモリに格納する。i=0の場合、文字列Sはテキストファイルの先頭の文字を先端とする「ファイルバッファサイズfの領域に格納可能なデータ量の文字列」である。i≧1の場合、文字列Sはスレッドi-1で読み込まれた文字列Si‐1の終端の文字の直後の文字を先端とする「ファイルバッファサイズfの領域に格納可能なデータ量の文字列」である。「ファイルバッファサイズfの領域に格納可能な文字列」は、例えば、ファイルバッファサイズfの領域に格納可能な最長の文字列であってもよいし、ファイルバッファサイズfから定数を減じたサイズの領域に格納可能な最長の文字列であってもよい。
文字列Sがメインメモリに格納された後、ファイル読み込みロック解除部がスレッドi+1のファイル読み込みロックを解除する。これにより、複数のスレッドでのメインメモリへのアクセスが互いに競合することを防止できる。ただし、i+1>Tに対応するスレッドは存在せず、存在しないスレッドのファイル読み込みロックは解除されない。
スレッドiのバッファ境界ロックが解除された後、パース部が文字列Sに含まれる各セルの位置および長さを表す参照情報を計算してメインメモリに格納する。例えば、パース部は文字列Sの各セルを特定し、特定した各セルの参照情報を計算してメインメモリに格納する。例えば、パース部はセルの境界に位置する情報(例えば、区切り文字または改行)に基づいて各セルを特定し、特定した各セルの参照情報を計算してメインメモリに格納する。i=0の場合、文字列Sに含まれる終端の文字がセルの終端である場合とセルの終端でない場合がある。文字列Sに含まれる終端の文字がセルの終端でない場合、スレッド0では終端の文字を含むセルを特定できず、その参照情報も計算できない。i≧1の場合、文字列Sの始端の文字がセルの始端である場合とセルの始端でない場合があり、文字列Sに含まれる終端の文字がセルの終端である場合とセルの終端でない場合がある。文字列Sの始端の文字がセルの始端でない場合、文字列Sのみから文字列Sの始端の文字を含むセルを特定できない。この場合、パース部は、文字列Si-1のうちスレッドi-1で特定されたセルに含まれない文字と、文字列Sとを用い、文字列Sの始端の文字を含むセルを特定する。文字列Sに含まれる終端の文字がセルの終端でない場合、スレッドiでは終端の文字を含むセルを特定できず、その参照情報も計算できない。なお、テキストデータの終端の文字列ST-1に含まれる終端の文字はセルの終端である。特定されたセルに対応する参照情報を用いることにより、当該セルが属するレコードと当該セルに対応する属性(例えば、当該レコードの最初から何番目の属性であるかを表す情報)とを特定できる。パース部は、メインメモリに参照情報を格納する領域が足りなくなったときに、rレコード分の参照情報を格納するためのバッファ領域をメインメモリにまとめて確保する。バッファ領域の確保には所定の処理(オーバーヘッド)が必要である。1レコードごとにバッファ領域を確保するのではなく、単位処理に対応するrレコードごとにバッファ領域をまとめて確保することで、オーバーヘッドを抑制しつつ、可変長のレコードを処理できる。
文字列Sに含まれる各セルの位置および長さを表す参照情報が計算された後、バッファ境界ロック解除部がスレッドi+1のバッファ境界ロックを解除する。i+1>Tに対応するスレッドは存在せず、存在しないスレッドのバッファ境界ロックは解除されない。
スレッドi+1のバッファ境界ロックの解除後、エンコード部は、参照情報によって特定される情報に基づいて、テキストデータから結合文字列CSに含まれる処理対象のrレコード分の文字列である処理単位文字列PSi,jを選択し、選択した処理単位文字列PSi,jを所定の有限集合の元であるエンコード情報Ei,jにエンコードする処理を、キャッシュメモリを利用して行う。処理単位文字列PSi,jの始端は何れかのレコードの始端であり、処理単位文字列PSi,jの終端は何れかのレコードの終端である。i=0の場合の結合文字列CSはSであり、i≧1の場合の結合文字列CSは結合文字列CSi‐1の直後に文字列Sを結合したものであり、Jが正整数であり、j=0,…,J-1である。例えば、文字列Sの文字数がrレコード分の文字数以上である場合、エンコード部は、文字列Sから処理単位文字列PSi,jを選択するか、または、文字列Sと文字列Si‐1とを結合した文字列から処理単位文字列PSi,jを選択する。文字列Sの文字数がrレコード分の文字数未満である場合、エンコード部は文字列Sから文字列Si’までを結合した文字列から処理単位文字列PSi,jを選択する。ただし、0≦i’≦i-1である。i=0の場合、エンコード部は文字列Sの先頭から処理単位文字列PS0,0,…,PS0,J-1を選択する。i≧1の場合、エンコード部は文字列Si-1のうち処理単位文字列として選択されていない文字を先頭とした処理単位文字列PSi,0,…,PSi,J-1を選択する。J≧2の場合、PSi,j-1の直後にPSi,jが続く。
エンコード部は処理単位文字列PSi,jごとにエンコードを行う。テキストデータではコード指向でデータが並び(レコード1,レコード2,…,レコードWの順序でデータが並ぶ)、すべてのレコードは互いに同一の「属性の組」に対応する。一般に、異なる種類のデータを続けて処理するよりも、同種のデータを続けて処理した方が処理速度が速い。そのため、エンコード部は、処理単位文字列PSi,jのうち同じ属性情報に対応するrレコード分のr個のセルのエンコードを続けて行うことが望ましい。エンコード部は参照情報によって特定される情報に基づいて処理単位文字列PSi,jを選択し、選択した処理単位文字列PSi,jをエンコード情報Ei,jにエンコードする。この処理の過程で必要となるrレコード分の参照情報、処理単位文字列PSi,j、エンコード情報Ei,jをキャッシュメモリに格納して演算を行うことで高速な処理が可能となる。前述のようにC/(Scsv+Senc+Sref)に対応するレコード数rを用いることで、このような処理が可能となっている。
演算部は、エンコード情報Ei,jに特定の「演算」を行って演算値SSi,jを得てメインメモリに格納する処理を、キャッシュメモリを利用して行う。演算部は、同じ属性情報に対応するrレコード分のr個のセルに対応する「演算」を続けて行うことが望ましい。この処理の過程でもrレコード分の参照情報、処理単位文字列PSi,j、エンコード情報Ei,jをキャッシュメモリに格納して演算を行うことで高速な処理が可能となる。
演算値SSi,jが得られた後、並列性ロック解除部はスレッドi+nの並列性ロックを解除する。ただし、i+n>Tに対応するスレッドは存在せず、存在しないスレッドの並列性ロックは解除されない。その後、スレッドiの処理を行っていた処理部が開放され、当該処理部が他のスレッドの処理を行うことが可能になる。
<演算装置(高速版)>
テキストファイルの各セルが、単独で「演算」の対象を表すか否かを判別可能な文字のみを含む場合、テキストファイルの各セルの位置および長さを特定する処理を並列に行うことができ、さらに高速な演算が可能となる。例えば、エスケープ文字を使用していないテキストファイルの場合にはこのような並列処理が可能になる。このようなテキストファイルに対応可能な演算装置はメインメモリとキャッシュメモリと複数の処理部とを有する。各処理部は、読み込み部とファイル読み込みロック解除部とパース部とセル特定部とバッファ境界ロック解除部とエンコード部と演算部と並列性ロック解除部とを有する。これら複数の処理部は何れかのスレッドの処理に割り当てられる。スレッドiの処理を行う処理部は以下の処理を行う。初期状態でスレッド0のファイル読み込みロックならびにバッファ境界ロックおよびスレッド0,…,n-1の並列性ロックが解除されているものとする。
読み込み部は、スレッドiのファイル読み込みロックおよび並列性ロックが解除された後、テキストファイルの文字列からファイルバッファサイズfの領域に格納可能な文字列Sを読み込んでメインメモリに格納する。この詳細は演算装置(一般版)と同じである。
文字列Sがメインメモリに格納された後、ファイル読み込みロック解除部がスレッドi+1のファイル読み込みロックを解除する。この詳細は演算装置(一般版)と同じである。
パース部が文字列Sに含まれる各セルの位置および長さを表す参照情報を計算してメインメモリに格納する。パース部はスレッドiのバッファ境界ロックが解除される前にこの処理を開始できる。すなわち、パース部は、i≧1において、文字列Si-1に含まれる各セルの位置および長さを表す参照情報の計算が終わる前に、文字列Sに含まれる各セルの位置および長さを表す参照情報の計算を開始できる。例えば、パース部は文字列Sのセルを特定し、特定した各セルの参照情報を計算してメインメモリに格納する。例えば、パース部はセルの境界に位置する情報(例えば、区切り文字または改行)に基づいてセルを特定し、特定した各セルの参照情報を計算してメインメモリに格納する。i=0の場合、文字列Sに含まれる終端の文字がセルの終端である場合とセルの終端でない場合がある。文字列Sに含まれる終端の文字がセルの終端でない場合、パース部は終端の文字を含むセルを特定できず、その参照情報も計算できない。i≧1の場合、文字列Sの始端の文字がセルの始端である場合とセルの始端でない場合があり、文字列Sに含まれる終端の文字がセルの終端である場合とセルの終端でない場合がある。文字列Sの始端の文字がセルの始端でない場合、パース部は文字列Sの始端の文字を含むセルを特定できず、その参照情報も計算できない。文字列Sに含まれる終端の文字がセルの終端でない場合、パース部は終端の文字を含むセルを特定できず、その参照情報も計算できない。なお、終端の文字列ST-1に含まれる終端の文字はセルの終端である。なお、パース部は、メインメモリに参照情報を格納する領域が足りなくなったときに、rレコード分の参照情報を格納するためのバッファ領域をメインメモリにまとめて確保する。これにより、オーバーヘッドを抑制しつつ、可変長のレコードを処理できる。
i≧1の場合、文字列Sは文字列Si‐1の直後に続く文字列である。i≧1の場合、セル特定部は、スレッドiのバッファ境界ロックが解除された後、参照情報と文字列Si‐1と文字列Sとを用い、文字列Si‐1に含まれる最後のセルの直後に続くセルの位置に対応する情報Aを得てメインメモリに格納する。情報Aは、例えば、文字列Si‐1に含まれる最後のセルの直後に続くセルが属するレコードを表す情報と当該セルに対応する属性を表す情報(例えば、当該レコードの最初から何番目の属性に対応するかを表す情報)であってもよいし、文字列Si‐1に含まれる最後のセルの直後に続くセルの位置および長さを表す情報であってもよい。文字列Si‐1の終端がセルの終端である場合には文字列Sの先頭のセルが「文字列Si‐1に含まれる最後のセルの直後に続くセル」となる。この場合には情報Aのメインメモリへの格納が省略されてもよい。一方、文字列Si‐1の終端がセルの終端でない場合、セル特定部は文字列Si‐1と文字列Sとを用い、「文字列Si‐1に含まれる最後のセルの直後に続くセル」を生成して情報Aを得る。これにより、パース部が特定できなかったセルの位置に対応する情報が得られる。参照情報と情報Aとによってテキストファイルの各セルが属するレコードと当該セルに対応する属性(例えば、当該レコードの最初から何番目の属性であるかを表す情報)とを特定できる。なお、i=0の場合、セル特定部は何もしない。
バッファ境界ロック解除部は、情報Aが得られた後にスレッドi+1のバッファ境界ロックを解除する。この詳細は演算装置(一般版)と同じである。その後、スレッドiの処理を行っていた処理部が開放され、当該処理部が他のスレッドの処理を行うことが可能になる。
その後エンコード部は、参照情報および情報Aによって特定される情報に基づいて、結合文字列CSに含まれる処理対象のrレコード分の文字列である処理単位文字列PSi,jを選択し、処理単位文字列PSi,jを所定の有限集合の元であるエンコード情報Ei,jにエンコードする処理を、キャッシュメモリを利用して行う。この詳細は参照情報に加えて情報Aを用いる以外、演算装置(一般版)と同じである。
演算部は、エンコード情報Ei,jに特定の「演算」を行って演算値SSi,jを得てメインメモリに格納する処理を、キャッシュメモリを利用して行う。この詳細は演算装置(一般版)と同じである。
演算値SSi,jが得られた後、並列性ロック解除部はスレッドi+nの並列性ロックを解除する。この詳細は演算装置(一般版)と同じである。
[第1実施形態]
図面を用いて第1実施形態を説明する。第1実施形態では、パラメータ設定装置が1つの単位処理で扱われるレコード数r、並列数n、ファイルバッファサイズfを設定し、演算装置(一般版)がエスケープ文字の使用が可能なCSV(Comma-Separated Values)ファイル(テキストファイル)の秘密分散(演算)を行う例を説明する。以下では、これまで説明した事項との相違点を中心に説明し、既に説明した事項については説明を省略する場合がある。
<構成>
図1に例示するように、本実施形態の演算システム1は、パラメータ設定装置11、演算装置12、およびN個のサーバ装置13-1~13-Nを有する。ただし、Nは2以上の正整数である。パラメータ設定装置11から演算装置12への情報の伝達が可能であり、演算装置12からサーバ装置13-1~13-Nへの情報の伝達が可能である。なお、情報の伝達はネットワークを介して行われてもよいし、その他の通信手段を用いて行われてもよいし、可搬型の記録媒体を介して行われてもよい。
図2に例示するように、パラメータ設定装置11は、入力部111a、出力部111b、記憶部112、制御部113、最大サイズ設定部114a、最小サイズ設定部114b、エンコードサイズ設定部114c、演算サイズ設定部114d、参照サイズ設定部114e、処理単位算出部114f、並列数算出部114g、およびバッファサイズ算出部114hを有する。パラメータ設定装置11は、制御部113の制御の下で各処理を実行する。パラメータ設定装置11で得られた各値は記憶部112に格納され、必要に応じて記憶部112から読み出されて他の処理に用いられる。
図3に例示するように、演算装置12は、入力部121a、出力部121b、補助記憶部122、メインメモリ123、制御部125、および処理部126-1~126-Qを有する。ただし、Qは2以上の整数である。演算装置12は、制御部125の制御の下で各処理を実行する。
図4に例示するように、処理部126-q(ただし、q=1,…,Q)は、キャッシュメモリ1260-q、読み込み部1261-q、パース部1262-q、エンコード部1265-q、演算部1266-q、ファイル読み込みロック解除部1267-q、バッファ境界ロック解除部1268-q、および並列性ロック解除部1269-qを有する。
<パラメータ設定処理>
図5を用いて、パラメータ設定装置11のパラメータ設定処理を説明する。
演算処理対象のテキストデータの属性情報がパラメータ設定装置11(図2)の入力部111aに入力され、記憶部112に格納される。属性情報はテキストデータから読み込まれたものであってもよいし、テキストデータ以外から与えられたものであってもよい(ステップS111a)。
最大サイズ設定部114aは、記憶部112から読み出した属性情報を入力としてテキストファイルの1レコード分の文字列のサイズの最大値Scsvを設定して出力する(ステップS114a)。
最小サイズ設定部114bは、記憶部112から読み出した属性情報を入力として1レコード分の文字列のサイズの最小値scsvを設定して出力する(ステップS114b)。
エンコードサイズ設定部114cは、記憶部112から読み出した属性情報を入力とし、エンコード情報が属する「所定の有限集合」を表す情報に基づいて、1レコード分の文字列を所定の有限集合の元にエンコード(変換)して得られるエンコード情報の合計サイズの最大値Sencを設定して出力する。本実施形態のエンコード情報が属する「所定の有限集合」は秘密分散が行われる有限集合であり、予め定められている(ステップS114c)。
演算サイズ設定部114dは、記憶部112から読み出した属性情報を入力とし、エンコード情報が属する所定の有限集合および秘密分散方式に基づいて、1レコード分のエンコード情報の秘密分散(演算)によって得られる秘密分散値(演算値)の合計サイズの最大値Sssを設定して出力する。本実施形態の秘密分散方式は予め定められている(ステップS114d)。
参照サイズ設定部114eは、記憶部112から読み出した属性情報を入力とし、テキストファイル内の1レコード分のセルそれぞれの位置および長さを表す参照情報の合計サイズSrefを設定して出力する(ステップS114e)。
処理単位算出部114fは、Scsv、encおよびSrefを入力とし、C/(Scsv+Senc+Sref)の関数値r(1回の単位処理で処理されるレコード数r、すなわち処理単位文字列が含むレコード数r)を得て出力する。キャッシュメモリサイズCは予め定められたものであってもよいし、入力されたものであってもよい(ステップS114f)。
並列数算出部114gは、Scsv、csv、Sref、Senc、Iおよびrを入力とし、f/I・r・Scsvの関数値n(演算処理における並列数n)を得て出力する。fはscsv・M/(scsv+Senc+max(Sref,Sss))の関数値である。メインメモリサイズMは予め定められたものであってもよいし、入力されたものであってもよい(ステップS114g)。
バッファサイズ算出部114hは、fおよびnを入力とし、f/nの関数値f(演算処理の際にテキストファイルの文字列からまとめて読み込まれるデータのファイルバッファサイズf)を得て出力する(ステップS114h)。
出力部111bは、上述のように得られたr,n,fを出力する(ステップS111b)。
<演算処理>
図6から図12を用い、演算装置12の演算処理を説明する。
図6に例示するように、パラメータ設定装置11から出力されたr,n,fとが演算装置12(図3)の入力部121aに入力され、補助記憶部122に格納される(ステップS111aa)。また演算処理対象のテキストデータが入力部121aに入力され、補助記憶部122に格納される。図9から図12にテキストデータを例示する。図9に例示するテキストデータは、各セルがダブルクォーテーションで囲まれたCSVファイルである。セルの値としてダブルクォーテーション「“」を用いる場合にはその前にエスケープ文字として「“」が付加される。例えば、“4selddks““k304kdkk400-03d”は、「4selddks“k304kdkk400-03d」という秘密分散対象の値を表している。図10に例示するように、このテキストファイルはW個のレコードrec(1),…,rec(W)を含み、レコードrec(w)(ただし、w=1,…,W)のそれぞれは任意長のG個のセルcell(w,g)を含み(ただし、g=1,…,G)、セルcell(w,g)のそれぞれは任意個の文字を含む。セルcell(w,g)はレコードrec(w)の最初からg番目の属性att(g)に対応する(ステップS111ab)。
その後、補助記憶部122からr,n,fがメインメモリ123に読み込まれ、スレッドi=0,…,T-1の演算処理が実行される。演算処理はi=0のスレッドから開始される。なお、初期状態でスレッド0のファイル読み込みロックおよびバッファ境界ロックならびにスレッド0,…,n-1の並列性ロックが解除されている。制御部125は処理部126-1~126-Qのうち使用されていない処理部126-qをスレッドiに割り当て、可能な限り複数のスレッドが並列に各スレッドiの処理を実行する(ステップS126)。これによって得られた各秘密分散値は出力部121bから出力され、各サーバ装置13-1~13-Nにそれぞれ送られ、各サーバ装置13-1~13-Nに格納される(ステップS111b)。以下にスレッドiの処理の詳細を説明する。
≪スレッドiの処理≫
図7および図8に例示するように、スレッドiの処理を行う処理部126-qの読み込み部1261-qは、スレッドiのファイル読み込みロックおよび並列性ロックの両方が解除されたかを判定する。スレッド0のファイル読み込みロックおよび並列性ロックは初期状態で解除されている(ステップS1261a-q)。スレッドiのファイル読み込みロックおよび並列性ロックの両方が解除されていない場合にはステップS1261a-qの判定が繰り返される。
一方、スレッドiのファイル読み込みロックおよび並列性ロックの両方が解除されている場合、読み込み部1261-qは、メインメモリ123からファイルバッファサイズfを読み込み、メインメモリ123にファイルバッファサイズfの領域を確保する。さらに、読み込み部1261-qは、補助記憶部122に格納されたテキストファイルの文字列からファイルバッファサイズfの領域に格納可能な文字列Sを読み込む。図11の例では、文字列Sとして以下が読み込まれる。
“石田”,“太郎”,“1990/2/8”,“100-0002”,“sjeifdfgjrrf”,“45dkfjkejdf5”
“石田”,“次郎”,“1985/5/2”,“111-0112”,“25df4d4ed”,“1s4dlccclseed”
“石田”,“花子”,“2001/4/8”,“111-2222”,“5d4e4d4ffg”,“skekdjjfaae”
“佐藤”,“太郎”,“1992/7/11”,“111-0345”,“dlekd4f3e”,“4selddks“
図12の例では、文字列Sとして以下が読み込まれる。
“k304kdkk400-03d”
“佐藤”,“次郎”,“1989/8/21”,“123-0434”,“dkesopd445e”,“4ssjdejdoseae3230dds”
“佐藤”,“花子”,“1995/2/3”,“145-0234”,“skdeofl4s3d3”,“skek94kdskd4dc”
“田中”,“太郎”,“1992/3/23”,“134-0134”,“dj394949495kf”,“47s52\n5412485d”
“田中”,“次郎”,“1979/4/21”,“11
読み込み部1261-qは、メインメモリ123に確保したファイルバッファサイズfの領域に文字列Sを格納する(図7のステップS1261b-q、図8のR)。
文字列Sがメインメモリ123に格納された後、ファイル読み込みロック解除部1267-qがスレッドi+1のファイル読み込みロックを解除する(図7のステップS1267-q、図8のURi+1)。
パース部1262-qは、スレッドiのバッファ境界ロックが解除されたか否かを判定する。スレッド0のバッファ境界ロックは初期状態で解除されている(ステップS1262a-q)。スレッドiのバッファ境界ロックが解除されていない場合にはステップS1262a-qの判定が繰り返される。
一方、スレッドiのバッファ境界ロックが解除されている場合、パース部1262-qはi≧1であるか否かを判定する(ステップS1262b-q)。i≧1でない場合(すなわち、i=0の場合)、パース部1262-qは、メインメモリ123から読み出した文字列Sをパースし、文字列Sに含まれる各セルの位置および長さを表す参照情報を計算してメインメモリ123に格納する。例えば、図11に例示した文字列Sの場合、パース部1262-qは、文字列Sをパースしてセル「石田」「太郎」「1990/2/8」「100-0002」「sjeifdfgjrrf」「45dkfjkejdf5」「石田」「次郎」「1985/5/2」「111-0112」「25df4d4ed」「1s4dlccclseed」「石田」「花子「2001/4/8」「111-2222」「5d4e4d4ffg」「skekdjjfaae」「佐藤」「太郎」「1992/7/11」「111-0345」「dlekd4f3e」を特定し、それらの参照情報を計算する。最後の「“4selddks“」の終端はセルの終端ではないため、スレッド0では「“4selddks“」の参照情報は計算されない。パース部1262-qは、メインメモリ123に参照情報を格納する領域が足りなくなったときに、メインメモリ123からrを読み込み、rレコード分の参照情報を格納するためのバッファ領域をメインメモリ123にまとめて確保する。その後、処理がステップS1268-qに進む(図7のステップS1262c-q、図8のP)。一方、i≧1である場合、パース部1262-qは、スレッドi-1でのパース結果(特定された各セルの参照情報およびセルに含まれない文字を特定する情報)をメインメモリ123から読み込み、文字列Si-1のうちスレッドi-1で特定されたセルに含まれない文字を特定する。文字列Si-1の終端がセルの終端である場合には、文字列Si-1のうちスレッドi-1で特定されたセルに含まれない文字は存在しない(ステップS1262d-q)。次にパース部1262-qは、メインメモリ123から文字列Sを読み出し、スレッドi-1で特定されたセルに含まれない文字と文字列Sとを結合した文字列をパースし、この文字列に含まれる各セルの位置および長さを表す参照情報を計算してメインメモリ123に格納する。文字列Si-1の終端がセルの終端である場合には、パース部1262-qは文字列Sをパースし、文字列Sに含まれる各セルの位置および長さを表す参照情報を計算してメインメモリ123に格納する。例えば、図11および図12に例示した文字列SおよびSの場合、パース部1262-qは、文字列Si-1のうちスレッドi-1で特定されたセルに含まれない文字「“4selddks“」と文字列Si-1とを結合した文字列
“4selddks““k304kdkk400-03d”
“佐藤”,“次郎”,“1989/8/21”,“123-0434”,“dkesopd445e”,“4ssjdejdoseae3230dds”
“佐藤”,“花子”,“1995/2/3”,“145-0234”,“skdeofl4s3d3”,“skek94kdskd4dc”
“田中”,“太郎”,“1992/3/23”,“134-0134”,“dj394949495kf”,“47s52\n5412485d”
“田中”,“次郎”,“1979/4/21”,“11
をパースし、この文字列に含まれる各セル「4selddks““k304kdkk400-03d」「佐藤」「次郎」「1989/8/21」「123-0434」「dkesopd445e」「4ssjdejdoseae3230dds」「佐藤」「花子」「1995/2/3」「145-0234」「skdeofl4s3d3」「skek94kdskd4dc」「田中」「太郎」「1992/3/23」「134-0134」「dj394949495kf」「47s52\n5412485d」「田中」「次郎」「1979/4/21」の位置および長さを表す参照情報を計算してメインメモリ123に格納する。最後の“11の終端はセルの終端ではないため、スレッド1では“11の参照情報は計算されない。パース部1262-qは、メインメモリ123に参照情報を格納する領域が足りなくなったときに、メインメモリ123からrを読み込み、rレコード分の参照情報を格納するためのバッファ領域をメインメモリ123にまとめて確保する。その後、処理がステップS1268-qに進む(図7のステップS1262e-q、図8のP)。
ステップS1268-qでは、バッファ境界ロック解除部1268-qがスレッドi+1のバッファ境界ロックを解除する。ただし、i+1>Tに対応するスレッドは存在せず、存在しないスレッドのバッファ境界ロックは解除されない(図7のステップS1268-q、図8のUBi+1)。
その後、エンコード部1265-qは、参照情報によって特定される情報に基づいて、テキストデータから結合文字列CSに含まれる処理対象のrレコード分の文字列である処理単位文字列PSi,j(ただし、j=0,…,J-1)を選択し、処理単位文字列PSi,jおよび処理単位文字列PSi,jに対応するrレコード分の参照情報をキャッシュメモリ1260-qに格納する。r=2とした図11および図12の例では、結合文字列CS=Sから処理単位文字列PS0,0が選択され、結合文字列CS=S+Sから処理単位文字列PS1,0およびPS1,1が選択される(ステップS1263-q)。エンコード部1265-qは、キャッシュメモリ1260-qの処理単位文字列PSi,jおよび参照情報を用い、処理単位文字列PSi,jを所定の有限集合の元であるエンコード情報Ei,jにエンコードし、エンコード情報Ei,jをキャッシュメモリ1260-qに格納する(図7のステップS1265-q、図8のE)。
演算部1266-qは、キャッシュメモリ1260-qから読み出したエンコード情報Ei,jの秘密分散を行って秘密分散値(演算値)SSi,jを得てメインメモリ123に格納する。この際、処理単位文字列PSi,jに対応するrレコード分の参照情報をメインメモリ123に格納しておく必要はないため、秘密分散値SSi,0,…,SSi,J-1がこのrレコード分の参照情報が格納されていた領域に上書きされてもよい(図7のステップS126-q、図8のSS)。
その後、並列性ロック解除部1269-qが、メインメモリ123からnを読み込み、スレッドi+nの並列性ロックを解除する。ただし、i+n>Tに対応するスレッドは存在せず、存在しないスレッドの並列性ロックは解除されない。その後、制御部125はスレッドiへの処理部126-qの割り当てを解除する。これにより、処理部126-qを他のスレッドに割り当てることが可能になる(図7のステップS1269-q、図8のUPi+np)。
[第2実施形態]
第2実施形態では、パラメータ設定装置が1つの単位処理で扱われるレコード数r、並列数n、ファイルバッファサイズfを設定し、演算装置(高速版)がエスケープ文字の使用が禁止されたCSV(Comma-Separated Values)ファイル(テキストファイル)の秘密分散(演算)を行う例を説明する。
<構成>
図1に例示するように、本実施形態の演算システム2は、パラメータ設定装置11、演算装置22、およびN個のサーバ装置13-1~13-Nを有する。パラメータ設定装置11から演算装置22への情報の伝達が可能であり、演算装置22からサーバ装置13-1~13-Nへの情報の伝達が可能である。
図2に例示するように、パラメータ設定装置11は、入力部111a、出力部111b、記憶部112、制御部113、最大サイズ設定部114a、最小サイズ設定部114b、エンコードサイズ設定部114c、演算サイズ設定部114d、参照サイズ設定部114e、処理単位算出部114f、並列数算出部114g、およびバッファサイズ算出部114hを有する。パラメータ設定装置11は、制御部113の制御の下で各処理を実行する。パラメータ設定装置11で得られた各値は記憶部112に格納され、必要に応じて記憶部112から読み出されて他の処理に用いられる。
図3に例示するように、演算装置2は、入力部121a、出力部121b、補助記憶部122、メインメモリ123、制御部125、および処理部226-1~226-Qを有する。ただし、Qは2以上の整数である。演算装置12は、制御部125の制御の下で各処理を実行する。
図4に例示するように、処理部26-q(ただし、q=1,…,Q)は、キャッシュメモリ1260-q、読み込み部1261-q、パース部262-q、セル特定部2264-q、エンコード部1265-q、演算部1266-q、ファイル読み込みロック解除部1267-q、バッファ境界ロック解除部1268-q、および並列性ロック解除部1269-qを有する。
<パラメータ設定処理>
第1実施形態と同一である。
<演算処理>
図6および図13から図18を用い、演算装置22の演算処理を説明する。
図6に例示するように、パラメータ設定装置11から出力されたr,n,fとが演算装置22(図3)の入力部121aに入力され、補助記憶部122に格納される(ステップS111aa)。また演算処理対象のテキストデータが入力部121aに入力され、補助記憶部122に格納される。図15から図18にテキストデータを例示する。図15に例示するテキストデータは、各セルがダブルクォーテーションで囲まれていないCSVファイルである。本実施形態のテキストデータでのエスケープ文字の使用は許可されておらず、各セルは単独で秘密分散(演算)の対象を表すか否かを判別可能な文字のみを含む。図16に例示するように、このテキストファイルはW個のレコードrec(1),…,rec(W)を含み、レコードrec(w)(ただし、w=1,…,W)のそれぞれは任意長のG個のセルcell(w,g)を含み(ただし、g=1,…,G)、セルcell(w,g)のそれぞれは任意個の文字を含む。セルcell(w,g)はレコードrec(w)の最初からg番目の属性att(g)に対応する(ステップS211ab)。
その後、補助記憶部122からr,n,fがメインメモリ123に読み込まれ、スレッドi=0,…,T-1の演算処理が実行される。演算処理はi=0のスレッドから開始される。なお、初期状態でスレッド0のファイル読み込みロックおよびスレッド0,…,n-1の並列性ロックが解除されている。制御部125は処理部226-1~226-Qのうち使用されていない処理部226-qをスレッドiに割り当て、可能な限り複数のスレッドが並列に各スレッドiの処理を実行する(ステップS226)。これによって得られた各秘密分散値は出力部121bから出力され、各サーバ装置13-1~13-Nにそれぞれ送られ、各サーバ装置13-1~13-Nに格納される(ステップS111b)。以下にスレッドiの処理の詳細を説明する。
≪スレッドiの処理≫
図13および図14に例示するように、スレッドiの処理を行う処理部226-qの読み込み部1261-qは、スレッドiのファイル読み込みロックおよび並列性ロックの両方が解除されたかを判定する。スレッド0のファイル読み込みロックおよび並列性ロックは初期状態で解除されている(ステップS1261a-q)。スレッドiのファイル読み込みロックおよび並列性ロックの両方が解除されていない場合にはステップS1261a-qの判定が繰り返される。
一方、スレッドiのファイル読み込みロックおよび並列性ロックの両方が解除されている場合、読み込み部1261-qは、メインメモリ123からファイルバッファサイズfを読み込み、メインメモリ123にファイルバッファサイズfの領域を確保する。さらに、読み込み部1261-qは、補助記憶部122に格納されたテキストファイルの文字列からファイルバッファサイズfの領域に格納可能な文字列Sを読み込む。図17の例では、文字列Sとして以下が読み込まれる。
石田,太郎,1990/2/8,100-0002,東京都渋谷区〇〇〇,03-3234-5678
石田,次郎,2000/4/2,274-16,神奈川県藤沢市江の島〇〇〇,03-9999-9999
石田,花子,1985/6/2,352-725,東京都港区〇〇〇,03-1111-9999
佐藤,太郎,2001/5/1,100-0002,東京都千代田区〇〇〇,03-3234-5678
佐藤,次
図18の例では、文字列Sとして以下が読み込まれる。
郎,2001/6/2,274-16,神奈川県藤沢市江の島〇〇〇,03-9999-9999
佐藤,花子,2002/7/2,352-725,東京都新宿区新宿〇〇〇,03-1111-9999
田中,太郎,2001/1/1,100-0002,東京都千代田区〇〇〇,03-1234-5678
田中,次郎,2001/1/2,251-0036,神奈川県藤沢市江の島〇〇〇
読み込み部1261-qは、メインメモリ123に確保したファイルバッファサイズfの領域に文字列Sを格納する(図13のステップS1261b-q、図14のR)。
文字列Sがメインメモリ123に格納された後、ファイル読み込みロック解除部1267-qがスレッドi+1のファイル読み込みロックを解除する(図13のステップS1267-q、図14のURi+1)。
パース部2262-qはメインメモリ123から読み出した文字列Sをパースし、文字列Sに含まれる各セルの位置および長さを表す参照情報を計算してメインメモリ123に格納する。例えば、図17に例示した文字列Sの場合、パース部2262-qは、文字列Sをパースしてセル「石田」「太郎」「1990/2/8」「100-0002」「東京都渋谷区〇〇〇」「03-3234-5678」「石田」「次郎」「2000/4/2」「274-16」「神奈川県藤沢市江の島〇〇〇」「03-9999-9999」「石田」「花子」「1985/6/2」「352-725」「東京都港区〇〇〇」「03-1111-9999」「佐藤」「太郎」「2001/5/1」「100-0002」「東京都千代田区〇〇〇」「03-3234-5678」「佐藤」を特定し、それらの参照情報を計算する。最後の「次」の終端はセルの終端ではないため、スレッド0では「次」の参照情報は計算されない。例えば、図1に例示した文字列S の場合、パース部2262-qは、文字列Sをパースしてセル「2001/6/2」「274-16」「神奈川県藤沢市江の島〇〇〇」「03-9999-9999」「佐藤」「花子」「2002/7/2」「352-725」「東京都新宿区新宿〇〇〇」「03-1111-9999」「田中」「太郎」「2001/1/1」「100-0002」「東京都千代田区〇〇〇」「03-1234-5678」「田中」「次郎」「2001/1/2」「251-0036」「神奈川県藤沢市江の島〇〇〇」を特定し、それらの参照情報を計算する。最初の「郎」の始端はセルの始端ではないため、スレッド1では「郎」の参照情報は計算されない。なお、パース部2262-qは、メインメモリ123に参照情報を格納する領域が足りなくなったときに、メインメモリ123からrを読み込み、rレコード分の参照情報を格納するためのバッファ領域をメインメモリ123にまとめて確保する。パース部2262-qはスレッドiのバッファ境界ロックが解除される前にこの処理を開始できる。すなわち、パース部2262-qは、i≧1において、文字列Si-1に含まれる各セルの参照情報の計算が終わる前に、文字列Sに含まれる各セルの参照情報の計算を開始できる(図13のステップS2262-q、図14のP)。
その後、セル特定部2264-qが、スレッドiのバッファ境界ロックが解除されたか否かを判定する。スレッド0のバッファ境界ロックは初期状態で解除されている(ステップS2264a-q)。スレッドiのバッファ境界ロックが解除されていない場合にはステップS2264-qの判定が繰り返される。
一方、スレッドiのバッファ境界ロックが解除されており、かつ、i≧1である場合、セル特定部2264-qは、参照情報と文字列Si‐1と文字列Sとを用い、文字列Si‐1に含まれる最後のセルの直後に続くセルの位置に対応する情報Aを得てメインメモリに格納する。一方、スレッドiのバッファ境界ロックが解除されており、かつ、i=0の場合、セル特定部2264-qは何もしない(ステップS2264b-q)。
その後、バッファ境界ロック解除部1268-qがスレッドi+1のバッファ境界ロックを解除する。ただし、i+1>Tに対応するスレッドは存在せず、存在しないスレッドのバッファ境界ロックは解除されない(図13のステップS1268-q、図14のUBi+1)。
その後、処理部126-qに代えて処理部226-qのエンコード部1265-qおよび演算部1266-qが、第1実施形態で説明したステップS1263-q,S1265-q,S1269-qの処理を実行する(図13のステップS1263-q,S1265-q,S1269-q、図14のE,SS,UPi+np)。
[その他の変形例等]
なお、本発明は上述の実施形態に限定されるものではない。例えば、第1実施形態および第2実施形態では、パラメータ設定装置が1つの単位処理で扱われるレコード数r、並列数n、ファイルバッファサイズfを設定したが、パラメータ設定装置がファイルバッファサイズfを設定しない実施形態であってもよい。また、第1実施形態および第2実施形態では、テキストファイルとしてCSV(Comma-Separated Values)ファイルを例示したが、前述したその他のテキストファイルに対する処理が行われてもよい。さらに、第1実施形態および第2実施形態では、「演算」として秘密分散を行う例を説明したが、「演算」としてその他の演算が行われてもよい。
上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
上記の各装置は、例えば、CPU(central processing unit)等のプロセッサ(ハードウェア・プロセッサ)およびRAM(random-access memory)・ROM(read-only memory)等のメモリ等を備える汎用または専用のコンピュータが所定のプログラムを実行することで構成される。このコンピュータは1個のプロセッサやメモリを備えていてもよいし、複数個のプロセッサやメモリを備えていてもよい。このプログラムはコンピュータにインストールされてもよいし、予めROM等に記録されていてもよい。また、CPUのようにプログラムが読み込まれることで機能構成を実現する電子回路(circuitry)ではなく、プログラムを用いることなく処理機能を実現する電子回路を用いて一部またはすべての処理部が構成されてもよい。1個の装置を構成する電子回路が複数のCPUを含んでいてもよい。
上述の構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体の例は、非一時的な(non-transitory)記録媒体である。このような記録媒体の例は、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等である。
このプログラムの流通は、例えば、そのプログラムを記録したDVD、CD-ROM等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。処理の実行時、このコンピュータは、自己の記憶装置に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるASP(Application Service Provider)型のサービスによって、上述の処理を実行する構成としてもよい。
コンピュータ上で所定のプログラムを実行させて本装置の処理機能が実現されるのではなく、これらの処理機能の少なくとも一部がハードウェアで実現されてもよい。
1,2 演算システム
11 パラメータ設定装置
12,22 演算装置
13-1~13-N サーバ装置

Claims (12)

  1. テキストファイルの文字列に対する演算処理のためのパラメータ設定装置であって、
    前記テキストファイルはW個のレコードを含み、前記レコードのそれぞれは任意長のG個のセルを含み、前記セルのそれぞれは任意個の文字を含み、WおよびGが1以上の整数であり、前記G個のセルは属性情報に対応しており、
    Cがキャッシュメモリサイズ、Mがメインメモリサイズであり、
    前記属性情報を入力として前記テキストファイルの1レコード分の文字列のサイズの最大値Scsvを設定する最大サイズ設定部と、
    前記属性情報を入力として前記1レコード分の文字列のサイズの最小値scsvを設定する最小サイズ設定部と、
    前記1レコード分の文字列を所定の有限集合の元にエンコードして得られるエンコード情報の合計サイズの最大値Sencを設定するエンコードサイズ設定部と、
    前記1レコード分の前記エンコード情報に特定の演算を行って得られる演算値の合計サイズの最大値Sssを設定する演算サイズ設定部と、
    前記1レコード分の前記セルそれぞれの位置および長さを表す参照情報の合計サイズSrefを設定する参照サイズ設定部と、
    前記エンコードおよび前記演算は前記テキストファイルのrレコード分の文字列である処理単位文字列ごとに実行される処理であり、レコード数rとしてC/(Scsv+Senc+Sref)の関数値を得る処理単位算出部と、
    Iが前記処理単位文字列ごとに実行される前記エンコードおよび前記演算の繰り返し回数の最大値であり、Sref≧Sssのときmax(Sref,Sss)=Srefであり、Sref<Sssのときmax(Sref,Sss)=Sssであり、fがscsv・M/(scsv+Senc+max(Sref,Sss))の関数値であり、前記演算処理における並列数nとしてf/I・r・Scsvの関数値を得る並列数算出部と、
    を有するパラメータ設定装置。
  2. 請求項1のパラメータ設定装置であって、
    前記演算処理の際に前記テキストファイルの文字列からまとめて読み込まれるデータのファイルバッファサイズfとしてf/nの関数値を得るバッファサイズ算出部をさらに有するパラメータ設定装置。
  3. 請求項1または2のパラメータ設定装置であって、
    前記繰り返し回数の最大値Iは、前記処理単位文字列の前記エンコードおよび前記演算を行うための合計処理量に対する前処理の合計処理量の比率が所定値以下となるように定められている、パラメータ設定装置。
  4. テキストファイルの文字列に対する演算処理を行う演算装置であって、
    前記テキストファイルはW個のレコードを含み、前記レコードのそれぞれは任意長のG個のセルを含み、前記セルのそれぞれは任意個の文字を含み、WおよびGが1以上の整数であり、fが定められたファイルバッファサイズであり、nが並列数であり、rがレコード数を表す正整数であり、iが各スレッドを表し、i∈{0,…,T-1}であり、Tが前記テキストファイルの文字列のサイズに対応するスレッド数を表す正整数であり、1≦n≦Tであり、初期状態でスレッド0のファイル読み込みロックおよびバッファ境界ロックならびにスレッド0,…,n-1の並列性ロックが解除されており、
    メインメモリとキャッシュメモリと複数の処理部とを有し、
    前記複数の処理部のうちスレッドiの処理を行う処理部は、
    前記スレッドiのファイル読み込みロックおよび並列性ロックが解除された後、前記テキストファイルの文字列から前記ファイルバッファサイズfの領域に格納可能な文字列Sを読み込んで前記メインメモリに格納する読み込み部と、
    前記文字列Sが前記メインメモリに格納された後にスレッドi+1のファイル読み込みロックを解除するファイル読み込みロック解除部と、
    スレッドiのバッファ境界ロックが解除された後、前記文字列Sに含まれる各セルの位置および長さを表す参照情報を計算して前記メインメモリに格納するパース部と、
    前記文字列Sに含まれる各セルの位置および長さを表す参照情報が計算された後にスレッドi+1のバッファ境界ロックを解除するバッファ境界ロック解除部と、
    i=0の場合の結合文字列CSがSであり、i≧1の場合の結合文字列CSが結合文字列CSi‐1の直後に前記文字列Sを結合したものであり、Jが正整数であり、j=0,…,J-1であり、前記参照情報によって特定される情報に基づいて前記結合文字列CSに含まれる処理対象のrレコード分の文字列である処理単位文字列PSi,jを選択し、前記処理単位文字列PSi,jを所定の有限集合の元であるエンコード情報Ei,jにエンコードする処理を、前記キャッシュメモリを利用して行うエンコード部と、
    前記エンコード情報Ei,jに特定の演算を行って演算値SSi,jを得て前記メインメモリに格納する処理を、前記キャッシュメモリを利用して行う演算部と、
    前記演算値SSi,jが得られた後にスレッドi+nの並列性ロックを解除する並列性ロック解除部と、
    を有する演算装置。
  5. テキストファイルの文字列に対する演算処理を行う演算装置であって、
    前記テキストファイルはW個のレコードを含み、前記レコードのそれぞれは任意長のG個のセルを含み、前記セルのそれぞれは任意個の文字を含み、WおよびGが1以上の整数であり、fが定められたファイルバッファサイズであり、nが並列数であり、rがレコード数を表す正整数であり、iが各スレッドを表し、i∈{0,…,T-1}であり、Tが前記テキストファイルの文字列のサイズに対応するスレッド数を表す正整数であり、1≦n≦Tであり、初期状態でスレッド0のファイル読み込みロックおよびスレッド0,…,n-1の並列性ロックが解除されており、
    メインメモリとキャッシュメモリと複数の処理部とを有し、
    前記複数の処理部のうちスレッドiの処理を行う処理部は、
    前記スレッドiのファイル読み込みロックおよび並列性ロックが解除された後、前記テキストファイルの文字列から前記ファイルバッファサイズfの領域に格納可能な文字列Sを読み込んで前記メインメモリに格納する読み込み部と、
    前記文字列Sが前記メインメモリに格納された後にスレッドi+1のファイル読み込みロックを解除するファイル読み込みロック解除部と、
    前記文字列Sに含まれる各セルの位置および長さを表す参照情報を計算して前記メインメモリに格納するパース部と、
    i≧1の場合、前記文字列Sは文字列Si‐1の直後に続く文字列であり、スレッドiのバッファ境界ロックが解除された後、前記参照情報と前記文字列Si‐1と前記文字列Sとを用い、前記文字列Si‐1に含まれる最後のセルの直後に続くセルの位置に対応する情報Aを得るセル特定部と、
    前記情報Aが得られた後にスレッドi+1のバッファ境界ロックを解除するバッファ境界ロック解除部と、
    i=0の場合の結合文字列CSがSであり、i≧1の場合の結合文字列CSが結合文字列CSi‐1の直後に前記文字列Sを結合したものであり、Jが正整数であり、j=0,…,J-1であり、前記参照情報および前記情報Aによって特定される情報に基づいて、前記結合文字列CSに含まれる処理対象のrレコード分の文字列である処理単位文字列PSi,jを選択し、前記処理単位文字列PSi,jを所定の有限集合の元であるエンコード情報Ei,jにエンコードする処理を、前記キャッシュメモリを利用して行うエンコード部と、
    前記エンコード情報Ei,jに特定の演算を行って演算値SSi,jを得て前記メインメモリに格納する処理を、前記キャッシュメモリを利用して行う演算部と、
    前記演算値SSi,jが得られた後にスレッドi+nの並列性ロックを解除する並列性ロック解除部と、
    を有する演算装置。
  6. 請求項5の演算装置であって、
    前記セルは単独で前記演算の対象を表すか否かを判別可能な文字のみを含み、
    前記パース部は、i≧1において、前記文字列Si-1に含まれる各セルの位置および長さを表す参照情報の計算が終わる前に、前記文字列Sに含まれる各セルの位置および長さを表す参照情報の計算を開始する、演算装置。
  7. 請求項4から6の何れかの演算装置であって、
    Cが前記キャッシュメモリのキャッシュメモリサイズ、Mが前記メインメモリのメインメモリサイズであり、
    csvが前記テキストファイルの1レコード分の文字列のサイズの最大値であり、
    csvが前記1レコード分の文字列のサイズの最小値であり、
    encが前記1レコード分の文字列を前記有限集合の元にエンコードして得られるエンコード情報の合計サイズの最大値であり、
    ssが前記1レコード分の前記エンコード情報に前記演算を行って得られる演算値の合計サイズの最大値であり、
    refが前記1レコード分の前記セルそれぞれの位置および長さを表す参照情報の合計サイズであり、
    前記レコード数rがC/(Scsv+Senc+Sref)の関数値であり、
    Iが前記処理単位文字列PSi,jごとに実行される前記エンコードおよび前記演算の繰り返し回数の最大値であり、Sref≧Sssのときmax(Sref,Sss)=Srefであり、Sref<Sssのときmax(Sref,Sss)=Sssであり、fがscsv・M/(scsv+Senc+max(Sref,Sss))の関数値であり、前記並列数nがf/I・r・Scsvの関数値であり、
    前記ファイルバッファサイズfがf/nの関数値である、演算装置。
  8. 請求項4から7の何れかの演算装置であって、
    前記パース部は、前記メインメモリに前記参照情報を格納する領域が足りなくなったときに、前記rレコード分の前記参照情報を格納するためのバッファ領域を前記メインメモリにまとめて確保する、演算装置。
  9. 請求項1からの何れかのパラメータ設定装置の各部の処理を実行する方法。
  10. 請求項4から8の何れかの演算装置の各部の処理を実行する方法。
  11. 請求項1からの何れかのパラメータ設定装置としてコンピュータを機能させるためのプログラム。
  12. 請求項4から8の何れかの演算装置としてコンピュータを機能させるためのプログラム。
JP2020508217A 2018-03-19 2019-03-11 パラメータ設定装置、演算装置、それらの方法、およびプログラム Active JP7010365B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2018051009 2018-03-19
JP2018051009 2018-03-19
PCT/JP2019/009597 WO2019181594A1 (ja) 2018-03-19 2019-03-11 パラメータ設定装置、演算装置、それらの方法、プログラム、および記録媒体

Publications (2)

Publication Number Publication Date
JPWO2019181594A1 JPWO2019181594A1 (ja) 2021-03-11
JP7010365B2 true JP7010365B2 (ja) 2022-01-26

Family

ID=67986173

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020508217A Active JP7010365B2 (ja) 2018-03-19 2019-03-11 パラメータ設定装置、演算装置、それらの方法、およびプログラム

Country Status (6)

Country Link
US (1) US11907641B2 (ja)
EP (1) EP3770889B1 (ja)
JP (1) JP7010365B2 (ja)
CN (1) CN111868805B (ja)
AU (1) AU2019238219B2 (ja)
WO (1) WO2019181594A1 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7351343B2 (ja) * 2019-10-10 2023-09-27 日本電信電話株式会社 秘密多重反復計算装置、方法及びプログラム
JP7464555B2 (ja) 2021-03-12 2024-04-09 Kddi株式会社 データ提供装置、集計システム及びデータ提供プログラム

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001076014A (ja) 1999-09-03 2001-03-23 Kyowa Exeo Corp Cadデータファイル変換方法およびcadデータファイル変換プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2013101324A (ja) 2011-10-11 2013-05-23 Nippon Telegr & Teleph Corp <Ntt> データベース撹乱パラメータ設定装置、方法及びプログラム並びにデータベース撹乱システム

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040199537A1 (en) * 2003-04-03 2004-10-07 Duff Robert Cory System for storing and retrieving database information
CN101271472B (zh) * 2003-09-15 2011-04-13 起元科技有限公司 数据处理方法和数据处理系统
CN101375284B (zh) * 2004-10-25 2012-02-22 安全第一公司 安全数据分析方法和系统
US20080049930A1 (en) * 2006-08-25 2008-02-28 Samsung Electronics Co., Ltd. Method and apparatus for encrypting data
US10515141B2 (en) * 2012-07-18 2019-12-24 Software Ag Usa, Inc. Systems and/or methods for delayed encoding of XML information sets
KR101553986B1 (ko) * 2012-10-30 2015-09-18 동국대학교 산학협력단 분산 데이터 저장, 복원 시스템 및 방법
CN104615585B (zh) * 2014-01-06 2017-07-21 腾讯科技(深圳)有限公司 处理文本信息的方法及装置
EP3206200B1 (en) * 2014-10-08 2020-12-09 Nippon Telegraph and Telephone Corporation Device, method and program for detecting positions of partial character strings
US9959069B2 (en) * 2015-02-12 2018-05-01 Microsoft Technology Licensing, Llc Externalized execution of input method editor
JP6753401B2 (ja) * 2015-07-24 2020-09-09 富士通株式会社 符号化プログラム、符号化装置、及び符号化方法
JP2017059132A (ja) * 2015-09-18 2017-03-23 株式会社デンソーウェーブ 端末装置及び端末装置のためのコンピュータプログラム
US10928992B2 (en) * 2019-03-11 2021-02-23 International Business Machines Corporation HTML editing operations

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001076014A (ja) 1999-09-03 2001-03-23 Kyowa Exeo Corp Cadデータファイル変換方法およびcadデータファイル変換プログラムを記録したコンピュータ読み取り可能な記録媒体
JP2013101324A (ja) 2011-10-11 2013-05-23 Nippon Telegr & Teleph Corp <Ntt> データベース撹乱パラメータ設定装置、方法及びプログラム並びにデータベース撹乱システム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
與那嶺 裕 ほか,閾値秘密分散法に基づく広域ネットワークストレージに関する研究,電子情報通信学会技術研究報告,日本,電子情報通信学会,2005年09月09日,Vol.105,No.290,p.37-44

Also Published As

Publication number Publication date
EP3770889A4 (en) 2021-12-15
WO2019181594A1 (ja) 2019-09-26
US11907641B2 (en) 2024-02-20
CN111868805A (zh) 2020-10-30
EP3770889A1 (en) 2021-01-27
US20210027009A1 (en) 2021-01-28
JPWO2019181594A1 (ja) 2021-03-11
EP3770889B1 (en) 2023-08-23
CN111868805B (zh) 2023-08-29
AU2019238219B2 (en) 2021-06-24
AU2019238219A1 (en) 2020-10-01

Similar Documents

Publication Publication Date Title
CN110348231B (zh) 实现隐私保护的数据同态加解密方法及装置
US8074068B2 (en) Secret sharing device, method, and program
Li et al. OPoR: Enabling proof of retrievability in cloud computing with resource-constrained devices
JP5826934B2 (ja) 秘密分散システム、データ分散装置、分散データ変換装置、秘密分散方法、およびプログラム
JP7010365B2 (ja) パラメータ設定装置、演算装置、それらの方法、およびプログラム
JP2017028617A (ja) 秘密計算システム、秘密計算装置、およびプログラム
KR101825838B1 (ko) 데이터의 부분 암호화 방법, 데이터의 부분 복호화 방법 및 부분 암호화된 데이터를 복호화하는 프로그램을 저장하는 저장매체
CN114143311B (zh) 一种基于区块链的隐私保护方案聚合方法及装置
JP6273226B2 (ja) 暗号化システム、認証システム、暗号化装置、復号装置、認証子生成装置、検証装置、暗号化方法、認証方法
Cheon et al. High-Throughput Deep Convolutional Neural Networks on Fully Homomorphic Encryption Using Channel-By-Channel Packing
Balmany et al. Dynamic proof of retrievability based on public auditing for coded secure cloud storage
KR102306676B1 (ko) 스토리지 디바이스용 호스트 키 생성 방법 및 시스템
US20130254545A1 (en) Method, system and apparatus for transmitting digital contents
JP5530025B2 (ja) データ分割装置およびデータ分割プログラム
JP6273224B2 (ja) 暗号化システム、暗号化装置、復号装置、暗号化方法
EP3232319B1 (en) Random number generation apparatus, random number generation method and program
Lentini et al. A comparison of data fragmentation techniques in cloud servers
US20240184760A1 (en) Method of storing blockchain transaction data using fountain codes and apparatus for the same
CN116484443B (zh) 一种基于鸿蒙系统的可信安全存储方法及装置
JP6927332B2 (ja) 検索装置、検索方法、プログラム、および記録媒体
WO2023281693A1 (ja) 秘密計算システム、装置、方法及びプログラム
Gorke et al. Cloud storage file recoverability
CN106059770A (zh) 用于模幂运算的高效平稳编码
JP6273223B2 (ja) 暗号化システム、暗号化装置、復号装置、暗号化方法、暗号化プログラム、復号プログラム
Corena et al. Pollution-free regenerating codes with fast reconstruction verification for verifiable cloud storage

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200904

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200904

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211116

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211129

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211227

R150 Certificate of patent or registration of utility model

Ref document number: 7010365

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150