專利名稱:多處理器系統(tǒng)及其信息處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種由兩個以上的處理器共享內(nèi)存進行并行處理的共享內(nèi)存型多處理器系統(tǒng)的信息處理方法,特別地,涉及一種利用2 個以上的處理器對共享內(nèi)存上的大規(guī)模表格形式的數(shù)據(jù)進行并行排 序的信息處理方法。本發(fā)明還涉及一種執(zhí)行上述信息處理方法的共享內(nèi)存型多處理 器系統(tǒng),本發(fā)明還涉及一種用于實現(xiàn)上述信息處理方法的程序。 本發(fā)明另外還涉及一種用于存儲上述程序的存儲介質(zhì)。
背景技術(shù):
近年,計算機在整個社會得到了迅速普及,以互聯(lián)網(wǎng)為首的計算 機網(wǎng)絡(luò)也已滲透到了經(jīng)濟和生活的各個領(lǐng)域,其中,對大規(guī)模數(shù)據(jù)進 行存儲和處理更是隨處可見。另一方面,也開發(fā)出了一些用于處理大規(guī)模數(shù)據(jù)的、具有較高效 率的算法,處理大規(guī)模數(shù)據(jù),特別是處理大規(guī)模表格形式的數(shù)據(jù)時, 常常被用到的處理是排序。 一般來說,作為效率較高的排序算法,基 數(shù)排序(Radix Sort)法和記數(shù)排序(Counting Sort或者Distribution Counting Sort)法已為大家所熟知。記數(shù)排序法有時也被應(yīng)用到基數(shù) 排序法中的各位的排序上,它是一種高效的排序算法,但是,使用記 數(shù)排序法時需要滿足下面幾個前提條件1) 排序的對象是整數(shù);2) 需要事先知道作為排序?qū)ο蟮恼麛?shù)的上限值和下限值;3) 作為排序?qū)ο蟮恼麛?shù)的上限值和下限值之差不能太大。 對此,本發(fā)明人已經(jīng)提出了一種適用于對大規(guī)模表格形式數(shù)據(jù)進 行高速檢索、合計、排序的數(shù)據(jù)管理結(jié)構(gòu)(參考國際公開W000/10103 號公報)。該數(shù)據(jù)管理結(jié)構(gòu)具有用于表示表格形式數(shù)據(jù)的項目的各項目 值的信息塊。在該信息塊中,屬于表格形式數(shù)據(jù)的項目的項目值,由實際項目值的數(shù)組來表示。生成一數(shù)組,其中,與各記錄的項目值相 對應(yīng)的項目值編號按記錄編號的順序排列,各記錄的項目值就可以通 過從項目值的數(shù)組中找到與該記錄的項目值編號對應(yīng)的值的方法來 確定。另外,作為表格形式數(shù)據(jù)中的處理對象的記錄則由按順序排列 了記錄編號的數(shù)組來確定。信息塊是用于按照表格形式數(shù)據(jù)的各項目的項目值的項目值編 號的順序保存與所述項目值編號相對應(yīng)的項目值的表格,其中,各項 目值的項目值編號是被賦予在各項目的項目值上的順序(整數(shù))。項 目值本身可以是數(shù)值(包括整數(shù)、定點小數(shù)、浮點小數(shù)等),也可以 是文字串等各類型的數(shù)據(jù)。所以,該數(shù)據(jù)管理結(jié)構(gòu)具有可以用整數(shù)的 項目值編號來處理各種類型的數(shù)據(jù)的值的特點。也就是說,依據(jù)這個 數(shù)據(jù)管理結(jié)構(gòu),例如,當對文字串類型數(shù)據(jù)進行排序時,可以不將文 字串類型數(shù)據(jù)本身作為對象進行排序,而將與文字串類型數(shù)據(jù)的值相 對應(yīng)的項目值編號作為對象進行排序。此時,排序的結(jié)果由按順序排 列了記錄編號的數(shù)組來表示。因此,本發(fā)明人提出的基于信息塊的數(shù) 據(jù)管理結(jié)構(gòu)在滿足上述記數(shù)排序的1)至3)的前提條件方面具有優(yōu)點,另一方面,為了高速地實現(xiàn)處理大規(guī)模數(shù)據(jù)所必需的龐大的計 算,還嘗試使用了并行處理。另外,對于排序也提出了各種各樣的并 行排序算法。 一般地,并行處理的體系結(jié)構(gòu)大致可以分為"分散內(nèi)存 型"和"共享內(nèi)存型,,兩種。分散內(nèi)存型體系結(jié)構(gòu)是各處理器分別具有本地內(nèi)存,將這些處理器和內(nèi)存結(jié)合起來構(gòu)成一個系統(tǒng)。在這種方式 中,從理論上說是可以實現(xiàn)由數(shù)百至數(shù)萬個處理器組成的硬件系統(tǒng)的 設(shè)計,但是,在分散內(nèi)存型體系結(jié)構(gòu)中也存在著一些例如數(shù)據(jù)管理困 難、處理器間的通訊效率低等的技術(shù)問題。與此相對的,共享內(nèi)存型 體系結(jié)構(gòu)則是2個以上的多個處理器共享一個巨大容量的內(nèi)存空間的
方式。但是,在這種方式中,處理器群和共享內(nèi)存之間的流量(Traffic) 問題是一個瓶頸,因此,實際上使用一百個以上的處理器來構(gòu)成系統(tǒng) 并非易事。盡管如此,近年,也出現(xiàn)了一種具有由多個CPU構(gòu)成的共享內(nèi)存 型多處理器系統(tǒng)的個人計算機。這種個人計算機中所使用的標準的 CPU以內(nèi)存總線(Memory Bus)的5至6倍的內(nèi)部時鐘頻率來工作, 其內(nèi)部具有自動并行執(zhí)行功能以及管道(Pipeline)處理功能,大致使用一個時鐘頻率(內(nèi)存總線)來處理一個數(shù)據(jù)。 發(fā)明內(nèi)容綜上所述,為了處理大規(guī)模表格形式數(shù)據(jù),需要將高效的排序算 法和共享內(nèi)存型多處理器系統(tǒng)相結(jié)合。記數(shù)排序法作為一種為人熟知的高效排序算法,因為其被上述l) 至3)所述的前提條件所制約,所以如果不采用本發(fā)明人提出的基于上 述信息塊的數(shù)據(jù)管理結(jié)構(gòu),很難將其應(yīng)用于大規(guī)模表格形式數(shù)據(jù)處理 中。另外,使用共享內(nèi)存型多處理器系統(tǒng)對大規(guī)模表格形式數(shù)據(jù)進行 并行排序的技術(shù)還不為人所熟知。因此,本發(fā)明的目的在于,提供一使用基于上述信息塊的數(shù)據(jù)管 理結(jié)構(gòu)的、使用多個處理器并行地對保存在共享內(nèi)存內(nèi)的大規(guī)模表格 形式數(shù)據(jù)進行排序的信息處理方法。另外,本發(fā)明的目的還在于,提供一執(zhí)行上述信息處理方法的共 享內(nèi)存型多處理器系統(tǒng)。另外,本發(fā)明的目的還在于,提供一用于實現(xiàn)上述信息處理方法 的程序,另外,本發(fā)明的目的還在于,提供一用于保存上述程序的存儲介質(zhì)。為了實現(xiàn)上述目的,本發(fā)明采用如下技術(shù)手段。 本發(fā)明依據(jù)所述基于信息塊的數(shù)據(jù)管理結(jié)構(gòu),該信息塊是用于按
項目值編號相對應(yīng)的項目值的表格,其中,各項目值的項目值編號是 被賦予在各項目的項目值上的順序(整數(shù))。項目值本身可以是數(shù)值 (包括整數(shù)、定點小數(shù)、浮點小數(shù)等),也可以是文字串等類型的數(shù) 據(jù)。通過使用這種數(shù)據(jù)管理結(jié)構(gòu),可以用整數(shù)的項目值編號來處理各 種類型的數(shù)據(jù)的值。也就是說,依據(jù)這個數(shù)據(jù)管理結(jié)構(gòu),對任意類型 的數(shù)據(jù)進行排序時,可以不將該任意類型的數(shù)據(jù)本身作為對象進行排 序,而將與該任意類型的數(shù)據(jù)的值相對應(yīng)的項目值編號作為對象來進 行排序。因此,基于這樣的信息塊的數(shù)據(jù)管理結(jié)構(gòu)滿足上述記數(shù)排序 的前提條件。另外,作為表格形式數(shù)據(jù)中的處理對象的記錄由按順序 排列了記錄編號的數(shù)組來確定,所以排序的結(jié)果是由按順序排列了記 錄編號的數(shù)組來表示的。通過將上述數(shù)據(jù)管理結(jié)構(gòu)應(yīng)用于共享內(nèi)存型多處理器系統(tǒng),本發(fā) 明可以得到一使用多個處理器對保存在共享內(nèi)存內(nèi)的大規(guī)模表格形 式數(shù)據(jù)進行并行排序的信息處理方法、以及、 一用于執(zhí)行該信息處理 方法的共享內(nèi)存型多處理器系統(tǒng)。因此,本發(fā)明的信息處理方法的步 驟為,首先,對作為處理對象的記錄進行分割,并將其分配給多個處理器;然后,各處理器累計與作為處理對象的記錄編號相關(guān)聯(lián)的項目 值編號的本地出現(xiàn)次數(shù);其次,將由各處理器累計的項目值編號的本 地出現(xiàn)次數(shù)變換成項目值編號的全局累計數(shù),即多個處理器共同使 用的累計數(shù);最后,各處理器通過將該全局累計數(shù)作為指針來使用, 調(diào)換被分配的記錄的順序。因此,由本發(fā)明可知,在共享內(nèi)存型多處 理器系統(tǒng)中,可以基于記錄的某項目的項目值(例如,整數(shù)值、定點 小數(shù)值、浮點小數(shù)值、文字串等)對記錄進行并行排序。分配作為處理對象的記錄給多個處理器、累計本地出現(xiàn)次數(shù)、以 及、調(diào)換被分配的記錄的順序可以通過由多個處理器并行處理來實 現(xiàn)。另外,全局累計數(shù)的計算也可以由多個處理器并行處理來實現(xiàn), 但是,因為需要按順序訪問內(nèi)存,這樣導(dǎo)致了訪問高速緩沖存儲器 (Cache)的訪問率比較高,因此,可以只使用一個或一部分的處理器來 進行處理以保持高速性。
本發(fā)明的上述原理可以由以下具體形態(tài)來實施。本發(fā)明的第一形態(tài)是在共享內(nèi)存型多處理器中依據(jù)記錄的預(yù)定 的項目的項目值來調(diào)換記錄順序的信息處理方法。共享內(nèi)存型多處理 器系統(tǒng)包括一共享內(nèi)存以及能夠向該共享內(nèi)存進行訪問的多個處理 器,其中,該共享內(nèi)存用于存儲記錄編號數(shù)組、項目值編號數(shù)組以及 項目值數(shù)組,該記錄編號數(shù)組用于依據(jù)預(yù)定的記錄順序保存表格形式 數(shù)據(jù)的記錄的記錄編號,該項目值編號數(shù)組用于依據(jù)記錄編號保存與 表格形式數(shù)據(jù)的記錄的預(yù)定的項目的項目值相對應(yīng)的項目值編號,該 項目值數(shù)組用于依據(jù)與表格形式數(shù)據(jù)的項目值相對應(yīng)的項目值編號的順序保存該項目值。本發(fā)明的信息處理方法包括如下步驟分割上述記錄編號數(shù)組并將其分配給第一組的多個處理器(以下 簡稱為"第一組處理器")的步驟;在上述第一組處理器的各處理器上,累計與被分配的記錄編號數(shù) 組的一部分中所包含的記錄相對應(yīng)的項目值編號的出現(xiàn)次數(shù)的步驟;分割上述項目值編號的范圍并將其分配給第二組的多個處理器 (以下簡稱為"第二組處理器,,)的步驟;在上述第二組處理器的各處理器上,依據(jù)在所述項目值編號的順 序,在所述項目值一致的范圍內(nèi),按照所述記錄編號數(shù)組的一部分的 順序,將所述被分配的項目值編號的各自的出現(xiàn)次數(shù)變換成累計數(shù)的 步驟;在上述笫一組處理器的各處理器上,將與所述被分配的記錄編號 數(shù)組的一部分中所包含的記錄相對應(yīng)的所述項目值編號的累計數(shù)作 為指針來使用,將所述被分配的記錄編號數(shù)組的一部分中所包含的記 錄編號保存至另 一記錄編號數(shù)組中的步驟。上述信息處理方法可以實現(xiàn)項目值編號出現(xiàn)次數(shù)累計的并行化 處理、將出現(xiàn)次數(shù)變換至累計數(shù)的并行化處理、以及、生成另一記錄 編號數(shù)組的并行化處理。因此,通過將記數(shù)排序技術(shù)擴張至共享內(nèi)存 型多處理器系統(tǒng),本發(fā)明可以在共享內(nèi)存型多處理器系統(tǒng)中對大規(guī)模 表格形式數(shù)據(jù)進行并行排序。另外,需要說明的是,構(gòu)成多處理器系
統(tǒng)的多個處理器中,任意的第一組處理器都可以用來處理記錄編號數(shù) 組的各部分,任意的第二組處理器都可以用來處理項目值編號范圍內(nèi) 的各部分。另外,需要注意的是,第一組處理器的處理器個數(shù)和第二 組處理器的處理器個數(shù)可以是構(gòu)成多處理器系統(tǒng)的處理器的總數(shù),也 可以是其中的一部分。另外,本發(fā)明的信息處理方法,通過對項目值編號導(dǎo)入基數(shù)排序 的概念,在共享內(nèi)存型多處理器系統(tǒng)中,可以對大規(guī)模表格形式數(shù)據(jù) 進行分階段并行排序。例如,在項目值編號數(shù)組較大的情況下,如果 能夠?qū)椖恐稻幪枖?shù)組進行壓縮后再使用,就可以實現(xiàn)高速處理。因此,本發(fā)明的信息處理方法包括依據(jù)上述項目值編號的范圍設(shè)定上述項目值編號的基數(shù)的步驟; 對于上述項目值編號的當前位,按照由上述基數(shù)所表示的上述項目值編號的最下位至最上位的順序,反復(fù)進行第一次將上述記錄編號數(shù)組作為當前的記錄編號數(shù)組,從第二次開始將另一記錄編號數(shù)組作為當前的記錄編號數(shù)組的排序處理的步驟。這樣,按最下位至最上位的順序,并行排序處理在每個項目值編號處都被進行。該排序處理包括以下步驟分割上述當前記錄編號數(shù)組并將其分配給第一組處理器的步驟; 在上述第一組處理器的各處理器上,累計與被分配的記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的項目值編號的當前位的值的出現(xiàn)次數(shù)的步驟;分割上述項目值編號的當前位的值的范圍并將其分配給笫二組 處理器的步驟;在上述第二組處理器的各處理器上,按照上述項目值編號的當前 位的值的順序,在上述項目值編號的當前位的值一致的范圍內(nèi),按照 上述記錄編號數(shù)組的一部分的順序,將被分配的項目值編號的當前位 的值的各自的出現(xiàn)次數(shù)變換成累計數(shù)的步驟;在上述第一組處理器的各處理器上,將與被分配的記錄編號數(shù)組 的一部分中所包含的記錄相對應(yīng)的上述項目值編號的當前位的值的
累計數(shù)作為指針,將被分配的上述記錄編號數(shù)組的一部分中所包含的 記錄編號保存至另一記錄編號數(shù)組中的步驟。由本發(fā)明可知,因為與項目值編號的當前位相關(guān)的排序處理被按 最下位至最上位的順序反復(fù)進行,所以可以實現(xiàn)基于基數(shù)排序概念的 項目值編號的排序。因此,在共享內(nèi)存型多處理器系統(tǒng)上,可以對大 規(guī)模表格形式數(shù)據(jù)進行并行排序。在上述多階段并行排序中,將項目值編號的當前位的值的各自出 現(xiàn)次數(shù)換算成累計總數(shù)的步驟由第二組處理器并行執(zhí)行。但是,該步 驟如果不采用多個處理器并行執(zhí)行,同樣也可以被高速處理。其原因 在于該步驟的處理是順序進行的,對高速緩沖存儲器的訪問率較高。因此,本發(fā)明的信息處理方法包括如下步驟依據(jù)上述項目值編號的范圍設(shè)定上述項目值編號的基數(shù)的步驟; 對于上述項目值編號的當前位,按照由上述基數(shù)所表示的上述項目值編號的最下位至最上位的順序,反復(fù)進行第一次將上述記錄編號數(shù)組作為當前的記錄編號數(shù)組,從第二次開始將另一記錄編號數(shù)組作為當前的記錄編號數(shù)組的排序處理的步驟。 該排序處理包括以下步驟分割上述當前記錄編號數(shù)組并將其分配給多個處理器的步驟;在各處理器上,累計與被分配的記錄編號數(shù)組的一部分中所包含 的記錄相對應(yīng)的項目值編號的當前位的值的出現(xiàn)次數(shù)的步驟;至少在一個處理器上,按照上述項目值編號的當前值的順序,在 與上述項目值編號的當前位的值一致的范圍內(nèi),依據(jù)上述記錄編號數(shù) 組的一部分的順序,將被分配的項目值編號的當前位的值的各自的出 現(xiàn)次數(shù)變換成累計數(shù)的步驟;在上述各處理器上,將與被分配的記錄編號數(shù)組的一部分中所包 含的記錄相對應(yīng)的上述項目值編號的當前位的值的累計數(shù)作為指針, 將被分配的上述記錄編號數(shù)組的一部分中所包含的記錄編號保存至 另一記錄編號數(shù)組中的步驟。在該信息處理方法中,項目值編號的當前位的范圍也可以不分割 給多個處理器,可以使用至少一個處理器,最好是一個處理器,將項目 值編號的當前位的值的出現(xiàn)次數(shù)按順序變換成累計數(shù)。此時,因為與 項目值編號的當前位相關(guān)的排序處理也是按照最下位至最上位的順 序被反復(fù)執(zhí)行的,同樣也可以實現(xiàn)基于基數(shù)排序概念的項目值編號的 排序。因此,在共享內(nèi)存型多處理器系統(tǒng)上,可以對大規(guī)模表格形式 數(shù)據(jù)進行并行排序。另夕卜,為了實現(xiàn)上述目的,本發(fā)明還提供一依據(jù)記錄的預(yù)定的項 目的項目值調(diào)換記錄順序的信息處理方法,該信息處理方法應(yīng)用于一 共享型多處理器系統(tǒng),該系統(tǒng)包括一共享內(nèi)存以及能夠訪問該共享內(nèi) 存的多個處理器,其中,該共享內(nèi)存用于存儲記錄編號數(shù)組、項目值 編號數(shù)組以及項目值數(shù)組,該記錄編號數(shù)組用于依據(jù)預(yù)定的記錄順序 保存表格形式數(shù)據(jù)的記錄的記錄編號,該項目值編號數(shù)組用于依據(jù)記 錄編號保存與表格形式數(shù)據(jù)的記錄的預(yù)定的項目的項目值相對應(yīng)的 項目值編號,該項目值數(shù)組用于依據(jù)與表格形式數(shù)據(jù)的項目值相對應(yīng)的項目值編號的順序保存該項目值,該信息處理方法包括如下步驟 分割上述記錄編號數(shù)組并將其分配給上述多個處理器的步驟; 在上述多個處理器的各處理器上,將被分配的記錄編號數(shù)組的一 部分中所包含的記錄的順序依據(jù)與該記錄相對應(yīng)的項目值編號進行 替換,并將該記錄的記錄編號保存至另一記錄編號數(shù)組的步驟。另外,為了實現(xiàn)上述目的,本發(fā)明還提供一根據(jù)記錄的預(yù)定的項 目的項目值調(diào)換記錄順序的信息處理方法,該信息處理方法應(yīng)用于一 共享內(nèi)存型多處理器系統(tǒng)中,該共享內(nèi)存型多處理器系統(tǒng)包括一共享 內(nèi)存和能夠訪問該共享內(nèi)存的多個處理器,其中,該共享內(nèi)存用于存 儲記錄編號數(shù)組、項目值編號數(shù)組以及項目值數(shù)組,該記錄編號數(shù)組 用于依據(jù)預(yù)定的記錄順序保存表格形式數(shù)據(jù)的記錄的記錄編號,該項 目值編號數(shù)組用于依據(jù)記錄編號保存與表格形式數(shù)據(jù)的記錄的預(yù)定 的項目的項目值相對應(yīng)的項目值編號,該項目值數(shù)組用于依據(jù)與表格 形式數(shù)據(jù)的項目值相對應(yīng)的項目值編號的順序保存該項目值,該信息 處理方法包括如下步驟
依據(jù)上述項目值編號的范圍設(shè)定上述項目值編號的基數(shù)的步驟; 對于由上述基數(shù)所表示的上述項目值編號的上面的位進行替換上述記錄編號數(shù)組中的記錄編號,并生成按上述項目值編號的上面的位的值的順序所區(qū)分的中間記錄編號數(shù)組的步驟;依據(jù)上述中間記錄編號數(shù)組的每個區(qū)間來分配處理器的步驟; 上述依據(jù)每個區(qū)間所分配的各處理器,按照上述項目值編號的下面的位的值的順序,替換上述中間記錄編號數(shù)組的上述區(qū)間內(nèi)的記錄編號的步驟。本發(fā)明的第二形態(tài)是一具有共享內(nèi)存和能夠訪問該內(nèi)存的多個 處理器的、執(zhí)行上述本發(fā)明的信息處理方法的共享內(nèi)存型多處理器系 統(tǒng)。在本發(fā)明的共享內(nèi)存型多處理器系統(tǒng)中,該共享內(nèi)存用于存儲記 錄編號數(shù)組、項目值編號數(shù)組以及項目值數(shù)組,該記錄編號數(shù)組用于 依據(jù)預(yù)定的記錄順序保存表格形式數(shù)據(jù)的記錄的記錄編號,該項目值 編號數(shù)組用于依據(jù)記錄編號保存與表格形式數(shù)據(jù)的記錄的預(yù)定的項 目的項目值相對應(yīng)的項目值編號,該項目值數(shù)組用于依據(jù)與表格形式 數(shù)據(jù)的項目值相對應(yīng)的項目值編號的順序保存該項目值。因此,本發(fā) 明的共享內(nèi)存型多處理器可以使用基于塊信息的數(shù)據(jù)管理結(jié)構(gòu)。各處理器具有如下單元用于決定上述記錄編號數(shù)組中的、自處理器負責(zé)處理的一部分的 決定單元;用于累計與上述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng) 的項目值編號的出現(xiàn)次數(shù)的累計單元;按照上述項目值編號的順序,在上述項目值編號一致的范圍內(nèi), 依據(jù)上述記錄編號數(shù)組的一部分的順序,將上述負責(zé)處理范圍內(nèi)的項 目值編號的各自的出現(xiàn)次數(shù)變換成累計數(shù)的變換單元;將與上述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的上述 項目值編號的累計數(shù)作為指針來使用,將上述記錄編號的一部分中所 包含的記錄編號保存至另 一記錄編號數(shù)組的保存單位。因為各處理器可以并行工作,因此可以實現(xiàn)出現(xiàn)次數(shù)累計的并行 化處理、將出現(xiàn)次數(shù)變換成累計總數(shù)的并行化處理、以及、生成另一 記錄編號數(shù)組的并行化處理。在進行將項目值編號的出現(xiàn)次數(shù)變換成累計數(shù)時,需要使得到的 累計數(shù)按項目值編號的順序移動。為此,負責(zé)將上述項目值編號范圍 內(nèi)的領(lǐng)先范圍的處理器的上述出現(xiàn)次數(shù)變換成累計數(shù)的變換單元所 得到的上述累計數(shù),要被負責(zé)將其后范圍的處理器的上述出現(xiàn)次數(shù)變 換成累計數(shù)的變換單元所參照。另外,本發(fā)明的共享內(nèi)存型多處理器還可以通過對項目值編號導(dǎo) 入基數(shù)排序的概念對大規(guī)模表格形式數(shù)據(jù)進行多階段排序,因此,各處理器包含以下單元依據(jù)上述項目值編號的范圍設(shè)定上述項目值編號的基數(shù)的基數(shù) 設(shè)定單元;按照由上述基數(shù)所表示的上述項目值編號的最下位至最上位的 順序設(shè)定當前位,反復(fù)進行第一次將上述記錄編號數(shù)組設(shè)定為當前的 記錄編號數(shù)組,從第二次開始將另一記錄編號數(shù)組設(shè)定為當前的記錄 編號數(shù)組的排序處理的反復(fù)處理單元。這樣,從項目值編號的最下位至最上位的每位的并行處理都按順 序被執(zhí)行。上述反復(fù)處理單元還包括以下單元用于決定上述記錄編號數(shù)組中的、自處理器負責(zé)處理的一部分的 記錄編號決定單元;用于累計與上述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng) 的項目值編號的當前位的值的出現(xiàn)次數(shù)的出現(xiàn)次數(shù)累計單元;用于決定上述項目值編號的當前位的值的范圍內(nèi)的、自處理器負 責(zé)處理的范圍的項目值編號范圍決定單元;按照上述項目值編號的當前位的值的順序,在上述項目值編 號的當前位的值一致的范圍內(nèi),依據(jù)上述記錄編號數(shù)組的一部分的順 序,將上述負責(zé)處理的范圍內(nèi)的項目值編號的當前位置的值的出現(xiàn)次 數(shù)變換成累計數(shù)的累計數(shù)變換單元;將與上述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的上述 項目值編號的當前位的值的累計數(shù)作為指針來使用,將上述記錄編號 數(shù)組的一部分中所包含的記錄編號保保存至另一記錄編號數(shù)組的另 一記錄編號保存單位。因此,本發(fā)明可以實現(xiàn)項目值編號的各位的并行排序處理。由本 發(fā)明可知,在項目值編號的各位的排序處理中,多個處理器可以實現(xiàn) 出現(xiàn)次數(shù)的累計、出現(xiàn)次數(shù)向累計總數(shù)的變換、以及、另一記錄編號 數(shù)組的生成的并行處理。另外,由于出現(xiàn)次數(shù)向累計數(shù)的變換由多個處理器分別負責(zé)執(zhí) 行,因此,在本發(fā)明中,負責(zé)將上述項目值編號的當前位的范圍內(nèi)的 領(lǐng)先范圍的處理器的上述出現(xiàn)次數(shù)變換成累計數(shù)的變換單元所得到 的上述累計總數(shù),要被負責(zé)將其后范圍的處理器的上述出現(xiàn)次數(shù)變換 成累計總數(shù)的變換單元所參照。另外,基于對大規(guī)模表格形式數(shù)據(jù)進行多階段并行排序的本發(fā)明 的共享內(nèi)存型多處理器系統(tǒng)也可以使用至少一個,最好是一個處理器 來進行當前位的值的各自出現(xiàn)次數(shù)的累計數(shù)累計。因此,在本發(fā)明的共享內(nèi)存型多處理器系統(tǒng)中,各處理器包括如下單元依據(jù)上述項目值編號的范圍設(shè)定上述項目值編號的基數(shù)的基數(shù) 設(shè)定單元;按照由上述基數(shù)所表示的上述項目值編號的最下位至最上位的 順序設(shè)定當前位,反復(fù)進行第一次將上述記錄編號數(shù)組設(shè)定為當前的 記錄編號數(shù)組,從第二次開始將另一記錄編號數(shù)組設(shè)定為當前的記錄 編號數(shù)組的排序處理的反復(fù)處理單元。執(zhí)行各處理器的上述排序處理的反復(fù)處理單元包括以下單元用于決定上述記錄編號數(shù)組中的、自處理器負責(zé)處理的一部分的 記錄編號決定單元;用于累計與上述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng) 的項目值編號的當前位的值的出現(xiàn)次數(shù)的出現(xiàn)次數(shù)累計單元。另外,執(zhí)行至少一個處理器的上述排序處理的反復(fù)處理單元還包 括累計數(shù)變換單元,該累計數(shù)變換單元按照上述項目值編號的當前位 的值的順序,在上述項目值編號的當前值一致的范圍內(nèi),依據(jù)上述記 錄編號數(shù)組的一部分的順序,將上述項目值編號的當前位的值的各自 出現(xiàn)次數(shù)變換成累計數(shù)。另外,執(zhí)行上述排序處理的上述反復(fù)處理單元還包括另 一記錄編 號保存單位,該另一記錄編號保存單位將與上述記錄編號數(shù)組的一部 分中所包含的記錄相對應(yīng)的上述項目值編號的當前位的值的累計數(shù) 作為指針來使用,將上述記錄編號數(shù)組的一部分中所包含的記錄編號 保保存至另 一記錄編號數(shù)組。由本發(fā)明可知,由于各處理器可以不需要決定項目值編號的當前 位的值的范圍內(nèi)的自處理器負責(zé)處理的范圍,也不需要采用多個處理 器來并行執(zhí)行出現(xiàn)次數(shù)向累計數(shù)的變換處理,因此可以簡化共享內(nèi)存 型多處理器系統(tǒng)的構(gòu)成。另外,本發(fā)明的笫三形態(tài)是提供一用于實現(xiàn)上述信息處理方法的程序。再有,本發(fā)明的第四形態(tài)是提供一儲存上述程序的存儲介質(zhì)。 綜上所述,本發(fā)明可以提供一在共享內(nèi)存型的并行處理環(huán)境下能 夠?qū)崿F(xiàn)大規(guī)模表格形式數(shù)據(jù)的高速并行排序的信息處理裝置。附圖概述圖l是本發(fā)明的一個實施例的計算機系統(tǒng)概要圖。圖2是用于說明數(shù)據(jù)管理結(jié)構(gòu)的表格形式數(shù)據(jù)的一個例子的示意圖。圖3是本發(fā)明的一個實施例的數(shù)據(jù)管理結(jié)構(gòu)的說明圖。 圖4A和圖4B是本發(fā)明的一個實施例的作為排序?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu) 的i兌明圖。圖5是本發(fā)明的 一個實施例的并行排序方法的流程圖。 圖6是本發(fā)明的一個實施例的并行排序方法的初始化步驟的說明圖。圖7A和圖7B是本發(fā)明的 一個實施例的并行排序方法的計數(shù)步驟
的說明圖之一。圖8A和圖8B是本發(fā)明的 一個實施例的并行排序方法的計數(shù)步驟 的說明圖之二。圖9A和圖9B是本發(fā)明的 一個實施例的并行排序方法的計數(shù)步驟 的說明圖之三。圖IOA和圖IOB是本發(fā)明的 一個實施例的升序的并行排序方法的 累計數(shù)處理步驟的說明圖。圖11A和圖11B是本發(fā)明的一個實施例的升序的并行排序方法的 傳送步驟的說明圖之一。圖12A和圖12B是本發(fā)明的 一個實施例的升序的并行排序方法的 傳送步驟的說明圖之二。圖13A和圖13B是本發(fā)明的 一個實施例的升序的并行排序方法的 傳送步驟的說明圖之三。圖14A至圖14C是對圖4B所示的數(shù)據(jù)結(jié)構(gòu)利用本發(fā)明的一個實施 例的升序的并行排序方法進行排序后的結(jié)果的示意圖之一。圖15A和圖15B是對圖4B所示的數(shù)據(jù)結(jié)構(gòu)利用本發(fā)明的一個實施 例的升序的并行排序方法進行排序后的結(jié)果的示意圖之二。圖16A和圖16B是本發(fā)明的 一 個實施例的降序的并行排序方法的 累計數(shù)處理步驟的說明圖。圖17A和圖17B是本發(fā)明的一個實施例的降序的并行排序方法的 傳送步驟的說明圖之一。圖18A和圖18B是本發(fā)明的 一個實施例的降序的并行排序方法的 傳送步驟的說明圖之二。圖19A和圖19B是本發(fā)明的 一個實施例的降序的并行排序方法的 傳送步驟的說明圖之三。圖20A和圖20B是對圖4B所示的數(shù)據(jù)結(jié)構(gòu)利用本發(fā)明的一個實施 例的降序的并行排序方法進行排序后的結(jié)果的示意圖之一。圖21A至圖21C是對圖4B所示的數(shù)據(jù)結(jié)構(gòu)利用本發(fā)明的一個實施 例的降序的并行排序方法進行排序后的結(jié)果的示意圖之二。
圖22是本發(fā)明的 一個實施例的多階段并行排序方法的流程圖。圖23A和圖23B是本發(fā)明的 一個實施例的多階段并行排序方法的 第一階段的計數(shù)步驟的說明圖之一。圖24A和圖24B是本發(fā)明的 一個實施例的多階段并行排序方法的 第一階段的計數(shù)步驟的說明圖之二。圖25A和圖25B是本發(fā)明的 一個實施例的多階段并行排序方法的 第一階段的計數(shù)步驟的說明圖之三。圖26A和圖26B是本發(fā)明的 一個實施例的升序的多階段并行排序 方法的第一階段的累計數(shù)處理步驟的說明圖。圖27A和圖27B是本發(fā)明的 一個實施例的升序的多階段并行排序 方法的第一階段的傳送步驟的說明圖之一。圖28A和圖28B是本發(fā)明的一個實施例的升序的多階段并行排序 方法的第一階段的傳送步驟的說明圖之二。圖29和圖29B是本發(fā)明的 一個實施例的升序的多階段并行排序 方法的第一階段的傳送步驟的說明圖之三。圖30是本發(fā)明的 一個實施例的多階段并行排序方法的第二階段 的初始化步驟的說明圖。圖31A和圖31B是本發(fā)明的一個實施例的多階段并行排序方法的 第二階段的計數(shù)步驟的說明圖之一。圖32A和圖32B是本發(fā)明的 一個實施例的多階段并行排序方法的 第二階段的計數(shù)步驟的說明圖之二。圖33A和圖33B是本發(fā)明的 一個實施例的多階段并行排序方法的 第二階段的計數(shù)步驟的說明圖之三。圖34是本發(fā)明的一個實施例的升序的多階段并行排序方法的第 二階段的累計數(shù)處理步驟的說明圖。圖35A和圖35B是本發(fā)明的 一個實施例的升序的多階段并行排序 方法的第二階段的傳送步驟的說明圖之一。圖36A和圖36B是本發(fā)明的 一個實施例的升序的多階段并行排序 方法的第二階段的傳送步驟的說明圖之二。圖37A和圖37B是本發(fā)明的一個實施例的升序的多階段并行排序 方法的笫二階段的傳送步驟的說明圖之三。圖38A至圖38C是對圖4B所示的數(shù)據(jù)結(jié)構(gòu)利用本發(fā)明的一個實施 例的升序的并行排序方法進行排序后的結(jié)果的示意圖之一。圖39A和圖39B是對圖4B所示的數(shù)據(jù)結(jié)構(gòu)利用本發(fā)明的一個實施 例的升序的并行排序方法進行排序后的結(jié)果的示意圖之二。圖40是用于說明多階段排序的數(shù)據(jù)結(jié)構(gòu)圖。圖41A至圖41D是多階段排序的第一階段的計數(shù)處理以及累計數(shù) 處理的說明圖。圖42A和圖42B是多階段排序的第一階段的記錄編號傳送的說明圖。圖43是多階段排序的第一階段的記錄編號傳送結(jié)果的說明圖。 圖44是多階段排序的第二階段的初始狀態(tài)的示意圖。 圖45A至圖45C是多階段排序的第二階段的計數(shù)處理以及累計數(shù) 處理的說明圖。圖46A和圖46B是多階段排序的第二階段的記錄編號傳送的說明圖。本發(fā)明的最佳實施方式以下參考
本發(fā)明的最佳具體實施例。 [計算機系統(tǒng)構(gòu)成]圖l是用于執(zhí)行本發(fā)明的、依據(jù)記錄的預(yù)定項目的項目值進行調(diào) 換記錄順序的信息處理方法的計算機系統(tǒng)的一個實施例的概略圖。如 圖1所示,該計算機系統(tǒng)10包括用于通過執(zhí)行程序?qū)ο到y(tǒng)全體以及 各組成部分進行控制的p個處理器(CPU)12-l,12-2,…12-p、用于保存工 作數(shù)據(jù)等的共享內(nèi)存(例如、RAM: Random Access Memory) 14、 用于保存程序等的ROM ( Read Only Memory) 16、用于訪問硬盤等 固定存儲介質(zhì)18和CD-ROM19的CD-ROM驅(qū)動器20、用于CD-ROM 驅(qū)動器20等與外部網(wǎng)絡(luò)(圖中未表示)相連接的外部端子間設(shè)置的接
口(I/F)22、由鍵盤和鼠標組成的輸入裝置24、以及、CRT顯示裝置 26。 CPU12、 RAM14、 ROM16、外部存儲介質(zhì)18、 I/F22、輸入裝置 24以及顯示裝置26經(jīng)由總線(Bus) 28相互連接。盡管圖中未表示, 各CPU也可以包含其本身固有的本地內(nèi)存。本實施例的、依據(jù)記錄的預(yù)定項目的項目值調(diào)換記錄順序的程 序,其可以被保存在CD-ROM19內(nèi),然后由CD-ROM驅(qū)動器20所讀取, 也可以被預(yù)先保存在ROM16內(nèi)。另外,也可以暫時將從CD-ROM19 讀出的程序保存在外部存儲介質(zhì)18的預(yù)定領(lǐng)域內(nèi)?;蛘?,上述程序也 可以經(jīng)由網(wǎng)絡(luò)(圖中未表示)、外部端子以及I/F22由外部供給。另外,本發(fā)明的實施例中的共享內(nèi)存型多處理器系統(tǒng)是通過使計 算機系統(tǒng)10執(zhí)行依據(jù)記錄的預(yù)定項目的項目值調(diào)換記錄順序的程序 來實現(xiàn)的。[基于信息塊的數(shù)據(jù)管理結(jié)構(gòu)]圖2是用于說明數(shù)據(jù)管理結(jié)構(gòu)的表格形式數(shù)據(jù)的一個例子的示意 圖。通過采用上述國際公開第WO00/10103號中提出的數(shù)據(jù)管理結(jié)構(gòu), 該表格形式數(shù)據(jù)在計算機內(nèi)被保存成如圖3所示的數(shù)據(jù)結(jié)構(gòu)。如圖3所示,在與表格形式數(shù)據(jù)的各記錄的排列順序的編號以及 內(nèi)部數(shù)據(jù)的排列順序的編號相對應(yīng)的數(shù)組301 (以下將該數(shù)組簡稱為 "OrdSet,,)中,按表格形式的每個記錄將內(nèi)部數(shù)據(jù)的排列順序的編號 設(shè)置為數(shù)值。該例中,所有的表格數(shù)據(jù)都被表示為內(nèi)部數(shù)據(jù),所以表 格形式數(shù)據(jù)的記錄編號和內(nèi)部數(shù)據(jù)的排列順序的編號一致。例如,關(guān)于性別,與表格形式數(shù)據(jù)的記錄0相對應(yīng)的內(nèi)部數(shù)據(jù)的 排列順序的編號由數(shù)組OrdSet301可知其為"0"。排列順序的編號為 "0"的記錄的實際性別值,也就是"男"或"女",可以通過參照指向按 照預(yù)定順序?qū)嶋H值排序后得到的數(shù)值列表(以下將該數(shù)值列表簡稱 為"VL")303的指針數(shù)組(以下將該指針數(shù)組簡稱為"VNo,,)302得到。指指向?qū)嶋H數(shù)值列表303中的元素的指針。因此,與表格形式數(shù)據(jù)的記 錄"0"相對應(yīng)的性別的項目值可以通過如下步驟取得(l)從數(shù)組 OrdSet301中取出與記錄"0,,相對應(yīng)的排列順序編號"0"; (2)從指向數(shù) 值列表的指針數(shù)組302中取出與記錄"0"相對應(yīng)的元素"1,,; (3)從數(shù) 值列表303中取出由從指向數(shù)值列表的指針數(shù)組302中取出的元素"1" 所指向的元素"女"。對于其他記錄以及年齡和身高等,也可以采用同樣的方法取出其 項目值。如上所述,表格形式數(shù)據(jù)由數(shù)值列表VL和指向該數(shù)值列表的指 針數(shù)組VNo的組合來表示,該組合被稱為"信息塊"。圖3中,與性別、 年齡以及身高相關(guān)的信息塊被分別表示為信息塊308、 309和310。單一的一臺計算機,如果其只具有單一內(nèi)存(實際上也可以有多 個內(nèi)存,但其都被設(shè)置在一個地址空間并被訪問,從這個意義上說就 是單一內(nèi)存),可以在該單一內(nèi)存內(nèi)保存順序集合的數(shù)組OrdSet、構(gòu) 成各信息塊的數(shù)值列表VL、以及、指針數(shù)組VNo。但是,為了保存大 量的記錄,內(nèi)存容量也將隨之變得很大,因此,最好是能夠?qū)@些大 量的記錄進行并行處理。因此,本實施例中,保存在共享內(nèi)存內(nèi)的記錄數(shù)據(jù)被多個處理器 所訪問,通過多個處理器的并行處理實現(xiàn)高速排序。 [并行排序]其次,對本發(fā)明的一個實施例的、在共享內(nèi)存型多處理器系統(tǒng)上 依據(jù)記錄的預(yù)定項目的項目值調(diào)換記錄順序的信息處理方法、即并行 排序方法進行說明。圖4A和圖4B是作為排序?qū)ο蟮臄?shù)據(jù)結(jié)構(gòu)的示意 圖。圖4A所示表格形式數(shù)據(jù)401采用行列形式來表示,作為排序?qū)ο?的數(shù)據(jù)構(gòu)造,其包含從記錄0到記錄19的20個記錄,各記錄由年齡和 地區(qū)兩個項目構(gòu)成。圖4B所示數(shù)據(jù)結(jié)構(gòu)402表示保存在計算機系統(tǒng)10 的共享內(nèi)存14內(nèi)的數(shù)據(jù)結(jié)構(gòu)。圖4B的記錄編號數(shù)組(OrdSet:表示順 序的集合)403是按照預(yù)定順序保存記錄編號0至19的數(shù)組。本例中, 記錄編號是按照0至19的順序保存的。年齡和地區(qū)的數(shù)據(jù),分別以信 息塊404和信息塊405的形式保存。年齡信息塊404由依據(jù)記錄編號的 順序保存了與年齡的項目值相對應(yīng)的項目值編號的項目值編號數(shù)組
(以下也簡稱數(shù)值編號VNo) 406、以及、依據(jù)與年齡的項目值相對值列表VL) 407構(gòu)成。同樣,地區(qū)信息塊405由依據(jù)記錄編號的順序保 存了與地區(qū)的項目值相對應(yīng)的項目值編號的項目值編號數(shù)組408、以項目值數(shù)組409構(gòu)成。計算機系統(tǒng)10的p個處理器12-l, ..., 12-p能夠 對共享內(nèi)存上的這些數(shù)據(jù)進行訪問。圖5是本發(fā)明的一個實施例的并行排序方法的流程圖。本實施例 中,CPU為4個,并且所有CPU都并行工作。需要注意的是,系統(tǒng)內(nèi) 的CPU的總數(shù)以及并行工作的CPU的個數(shù)并不局限于本例。另夕卜,下 面為了便于說明,關(guān)于年齡的項目,按年齡的升序來排序。另外,年 齡的項目值數(shù)組的元素是按年齡的升序來排列的。并行排序方法由步 驟501至505的5個步驟構(gòu)成。步驟501:將記錄編號數(shù)組分割成4部分并將各部分分配給4個 CPU(參考圖6)。步驟502:各CPU并行地累計與被分配的記錄編號數(shù)組的一部分 中所包含的記錄相對應(yīng)的項目值編號的出現(xiàn)次數(shù)(參考圖7A、圖7B至 圖9A、圖9B)。步驟503:將項目值編號的范圍,即從項目值編號O至項目值編號 4的5個值分配給4個CPU。例如,項目值編號O和l被分配給CPU-O,項 目值編號2至4被分別分配給CPU-1至CPU3 (參考圖10A)。步驟504: 4個CPU分別按照項目值編號的順序,在項目值編號一 致的范圍內(nèi),依據(jù)記錄編號數(shù)組的一部分的順序,將被分配的項目值 編號的各自的出現(xiàn)次數(shù)變換為累計數(shù)(參考圖10A和圖10B)。步驟505: 4個CPU將與被分配的記錄編號數(shù)組的一部分中所包含 的記錄相對應(yīng)的項目值編號的累計數(shù)作為指針,將被分配的記錄編號 數(shù)組的一部分中所包含的記錄編號保存至另一記錄編號數(shù)組(參考圖 IIA、圖11B至圖13A、圖13B)。下面對上述各步驟進行詳細說明。
圖6是并行排序方法的初始化步驟501的說明圖。從記錄編號數(shù)組 開頭開始的每4個記錄被分別分配給了CPU-0至CPU-3的4個CPU。例 如,CPU-0負責(zé)從記錄編號數(shù)組的開頭的OrdSet0開始至第5個的 OrdSet[4(OrdSet[x中的x表示數(shù)組OrdSet的下標)。另外,共享內(nèi)存 14中設(shè)置了用于累計項目值編號的出現(xiàn)次數(shù)的累計數(shù)組Count-0、 Count-l、 Count-2以及Count-3,并對應(yīng)于各CPU。 Count數(shù)組的個數(shù) 與CPU的個數(shù)相同。Count數(shù)組的數(shù)組大小與VL數(shù)組的數(shù)組大小相 同。Count數(shù)組的元素被初始化為0。圖7A、圖7B至圖9A、圖9B是并行排序方法的累計步驟502的說 明圖。圖7A的子步驟1中,例如,CPU-0首先讀出OrdSet
來表示,累計數(shù)用Count,[i[jl來表 示,那么累計數(shù)處理可以描述如下Count,0詞-0Count,i
+Count[i-l[q(i>l) Count,mj卜Count,i[j誦l+Countij-l(j>l) 如上所述,在進行累計數(shù)計算時,需要將Count,i-l[q-l從上一 行向下一行移動。因此,本實施例中,盡管累計數(shù)之計算由CPU分擔(dān) 執(zhí)行,也可以選擇一個CPU使其單獨進行累計數(shù)的計算。圖10B是將累計數(shù)的順序按豎方向表示成一列的示意圖。例如, 在圖10B中,(1)Count-0:0行表示的是數(shù)組Count-0的開頭的元素 Count-001的累計值l變換成累計數(shù)0。也就是說,將下面的累計值的 序列1,2,2,0,2,0,2,2,0,2,0,1,1,1,0,1,1,0,1,1 進行累計數(shù)處理后,可以得到下面的結(jié)果 0,1,3,5,5,7,7,9,11,11,13,13,14,15,16,16,17,18,18,19。 圖11A、圖11B至圖13A、圖13B是將記錄編號保存至另一記錄編 號數(shù)組中的傳送步驟505的說明圖。傳送步驟中,各CPU首先從記錄 編號數(shù)組OrdSet中讀出各自負責(zé)的范圍內(nèi)的記錄編號,然后,以該記 錄編號為下標從指針數(shù)組VNo中讀出項目值編號,接下來,以該項目 值編號為下標從與各處理器相對應(yīng)的、進行了累計數(shù)處理的Count數(shù) 組中讀出累計數(shù)值,再以讀出的該累計數(shù)值為指針將記錄編號保存至 另一記錄編號數(shù)組OrdSet,中,同時,將Count數(shù)組的累計數(shù)值各加l。 例如,在圖11A的子步驟1中,CPU-0首先讀出OrdSet
下面對上述實施例中說明的累計數(shù)處理步驟504進行更詳細的說 明。在得到圖9B所示的累計結(jié)果時,進行圖10A和圖10B所示的累計 數(shù)計算。為了并行地進行累計數(shù)計算,各CPU中被分配了作為對象的 項目值編號的值的范圍。CPU-0中的項目值編號為0和1, CPU-1中的 項目值編號為2, CPU-2中的項目值編號為3, CPU-3中的項目值編號 為4。因此,如果將Coimt數(shù)組的元素如上所述用Counti[j的形式表 示(i表示負責(zé)累計的CPU的編號,j表示項目值編號),那么各CPU的累 計數(shù)處理的負責(zé)范圍如下-CPU-O的負責(zé)范圍(項目值編號為0和1)Count
[l=2 Count[3[l=2'CPU-1的負責(zé)范圍(項目值編號為2)Count
4=0Count[24=lCount[34=l如上所述確定好負責(zé)范圍之后,首先,計算各CPU-i負責(zé)的范圍 內(nèi)的累計的小計Sum[i],得到的小計結(jié)果如下 Sum01=ll Suml=3 Sum2=3 Sum3=3上述小計的計算采用并行處理。然后,將上述小計從CPU-0向CPU-3順序移動,計算小計的累計 數(shù)Aggr—sumi,其結(jié)果如下 Aggrsum0=0Aggr_sumlI=Aggr—sum01+sum0=ll<formula>formula see original document page 38</formula>其中,小計的累計數(shù)的第一個值被定義為O。最后,各CPU-i將負責(zé)范圍內(nèi)的Count值變換為累計數(shù),然后通 過將算出的小計的累計數(shù)Aggr—sum[i加到該Count值的累計數(shù)上,得 到最終累計的累計數(shù)Count,。該Count,的計算也是并行處理。因此, 可以得到如下結(jié)果'CPU-0的負責(zé)范圍(項目值編號為0和1)Coimt,0
=0+Aggr—sum
[l]+Count01[l=5+2=7Count,2l=Count, [1[l+Countl[l=7+0=7Count, [3[l]=Count, [2[l+Count[2[l=7+2=9-CPU-l的負責(zé)范圍(項目值編號為2)Count,0[21=0+Aggr_suml=0+ll=llCount, [11 Pl-Count,02+Count0[2=11+0=11Count, [2[2=Count, [1[2+Countl[2=11+2=13Count,321=Count, [2]21+Count[2=13+0=13.CPU-2的負責(zé)范圍(項目值編號為3)Count,
=0+Aggr_sum[31=0+17=17Count, [14=Count,0[41+Count04=17+1=18Count, [2[4=Count, [1[4+Count[l[4=18+0=18 Count, [3[4=Count, [2[4+Count[21 [4=18+1=19 上述結(jié)果與圖IOB所示累計數(shù)的計算結(jié)果相同。 [多階段并行排序]上述基于計數(shù)排序的并行排序還可以與基數(shù)排序的概念組合使 用。項目值數(shù)組VL較大時,即項目值編號的個數(shù)較多時,通過將項 目值編號用基數(shù)來表達,在每位上進行上述并行排序,可以實現(xiàn)高效 率的排序。下面對上述多階段并行排序的方法進行說明。特別地,本 實施例的多階段排序是對從最下位開始順序地至當前位進行排序處 理,最后通過對最上位進行排序處理以完成最終的排序。本發(fā)明實施例的多階段并行排序方法的一個例子也是采用上述 并行排序方法的實施例中使用的圖4B的數(shù)據(jù)結(jié)構(gòu)。本實施例中,CPU 的個數(shù)為4個,并且這些CPU都并行工作。另外,需要注意的是,系 統(tǒng)內(nèi)的CPU總數(shù)以及并行工作的CPU的個數(shù)并不局限于本實施例。另 外,以下為了便于說明,關(guān)于年齡的項目,以年齡的升序來排序。另 外,年齡的項目值數(shù)組的元素也是按年齡的升序來排列的。圖4B的數(shù) 據(jù)結(jié)構(gòu)中,與年齡相關(guān)的項目值編號VNo為0至4的值,所以,將基數(shù) 設(shè)為4(即基數(shù)=4)并將項目值編號分解后,項目值編號就被分解 為上位和下位的2位。具體地,將對項目值編號進行取模計算(Modulo) (MOD(4))后得到的結(jié)果作為下位的值,將項目值編號除以4的商為 上位的值。圖22是本發(fā)明的一個實施例的多階段并行排序方法的流程圖。該 多階段并行排序方法由步驟2201至步驟2205的5個步驟組成。步驟2201:依據(jù)項目值編號的范圍選擇項目值編號的基數(shù)(本例 中,基數(shù)為4,即基數(shù)=4),將初始的記錄編號數(shù)組OrdSet設(shè)置為 當前記錄編號數(shù)組,將項目值編號的最下位(本例中,即對項目值 編號進行取模計算(MOD(4))后的值)設(shè)置為當前位。步驟2202:分割當前記錄編號數(shù)組,并將其分配給4個處理器。步驟2203:在4個處理器的各處理器上,累計與被分配的記錄編
號數(shù)組的一部分中所包含的記錄相對應(yīng)的項目值編號的當前位的值 的出現(xiàn)次數(shù)。步驟2204:分割項目值編號的當前位的值的范圍,并將其分配給 4個處理器。步驟2205:在4個處理器的各處理器上,按項目值編號的當前位 的值的順序,在項目值編號的當前位的值一致的范圍內(nèi),依據(jù)記錄編 號數(shù)組的一部分的順序,將被分配的項目值編號的當前位的值的各出 現(xiàn)次數(shù)變換成累計數(shù)。步驟2206:在4個處理器的各處理器上,將與被分配的記錄編號 數(shù)組的一部分中所包含的記錄相對應(yīng)的項目值編號的當前位的值的 出現(xiàn)次數(shù)的累計數(shù)作為指針來使用,將被分配的記錄編號數(shù)組的一部 分所包含的記錄編號保存至另一記錄編號。步驟2207:判斷排序處理是否被進行至用基數(shù)所表示的項目值編 號的最上位,如果排序已經(jīng)被進行至最上位,則結(jié)束多階段并行排序 處理。步驟2208:如果還留有未處理的位,則將該位設(shè)置為當前位,并 將另一記錄編號數(shù)組設(shè)置為當前記錄編號數(shù)組,然后返回步驟2202。在上述本發(fā)明的實施例的多階段并行排序方法中,步驟2202至步 驟2206的排序處理與上述本發(fā)明的并行排序方法基本相同,唯一不同 的一點在于項目值編號被項目值編號的當前位的值所取代.以下,具體說明本發(fā)明的實施例的多階段并行排序方法。本例中, 使用4個CPU,將圖4B所示數(shù)據(jù)按年齡的升序進行排序。初始化步驟 2201中,作為第l階段的排序處理,其為與對年齡的項目值編號進行 取模計算(MOD (4))后得到的值(下位的值)相關(guān)的排序處理,作為 第2階段的排序處理,其為與年齡的項目值編號除以4的商(DIV 4) 相關(guān)的排序處理。初始化步驟2201中,生成一與圖6所示的Count數(shù)組相同的數(shù)組。 但是,本例中,該數(shù)組用于累計項目值編號的當前位的值的出現(xiàn)次數(shù)。圖23A、圖23B至圖25A、圖25B是多階段并行排序方法的第l階段的累計步驟2203的說明圖。圖23A的子步驟1中,例如,CPU-O首先 讀出OrdSet
[O、Count[2]0、 Count[3
、 Count[O][l、Count[1[1、Count2[l以及Count3[1
的順序進行累計數(shù)處理。當然,本例中,也可以將項目值編號的上位的值0和1分配給CPU-0和CPU-1兩個CPU,使用2個CPU來進行累計數(shù) 計算。圖35A、 35B至圖37A、 37B是將多階段并行排序方法的第2階段 的記錄編號保存至另 一記錄編號數(shù)組的傳送步驟的說明圖。傳送步驟 中,各CPU首先從記錄編號數(shù)組OrdSet中讀出自己負責(zé)范圍內(nèi)的記錄 編號,然后,然后,以該記錄編號為下標,從指針數(shù)組VNo中讀出項 目值編號的上位的值,之后,以該項目編號的上位的值為下標,從與 自處理器相關(guān)的累計數(shù)處理后的Count數(shù)組中讀出累計數(shù)值,然后將 讀出的該累計數(shù)值做為指針,并將記錄編號保存至另一記錄編號數(shù)組 OrdSet,,中,同時,將Count數(shù)組的累計數(shù)值各加l。圖37B表示的是 作為上述傳送步驟的結(jié)果的、在第2階段中所得到的記錄編號數(shù)組 OrdSet"。本實施例的多階段并行排序方法是由項目值編號的上面的位和 下面的位的2個階段構(gòu)成,所以不能進行該范圍外的排序處理。但是, 第2階段得到的記錄編號數(shù)組OrdSet"是將初始的記錄編號數(shù)組 OrdSet關(guān)于年齡按升序進行排序的結(jié)果。圖38A至38C以及圖39A、 39B是將本發(fā)明的實施例的升序的多階 段并行排序法應(yīng)用于圖4B所示的數(shù)據(jù)結(jié)構(gòu)后得到的結(jié)果的示意圖。本 例中,因為是關(guān)于年齡進行升序排序的,所以,從結(jié)果可以看出,在 作為結(jié)果的記錄編號數(shù)組OrdSet"中,具有作為年齡的項目值的16歲、 18歲、20歲、21歲以及23歲的記錄是按年齡的順序被排列的。另外, 年齡相同的記錄的順序也是按照原來的記錄編號數(shù)組OrdSet中的順 序被保存的。該結(jié)果與圖14A至14C以及圖15A、 15B所示的、將上述 本發(fā)明的實施例中的升序的并行排序方法應(yīng)用于圖4B所示的數(shù)據(jù)結(jié) 構(gòu)后得到的結(jié)果一致。另外,上述的多階段并行排序方法盡管是升序排序,但是,本發(fā)明的多階段并行排序在降序排序中也進行相同的處理。另外,如上所 述,多階段并行處理的各階段的累計數(shù)計算既可以使用多個處理器并
行處理,也可以使用至少一個,更好地,僅使用一個處理器來單獨進 行處理。[多階段排序]上述多階段并行排序進行的是對從最下位開始按順序至當前位 的排序,最后,通過對最上位進行排序處理來完成最后的排序。對此, 也可以進行從最上位開始按順序至當前位的排序,最后,通過對最下 位進行排序處理來完成最后的排序。下面對按照從最上位至最下位的 順序進行排序處理的多段化處理方法進行簡單的說明。本例中,使用圖40所示的數(shù)據(jù)結(jié)構(gòu)。另外,本例中,CPU的個數(shù) 設(shè)為1個。另外,以下敘述中,關(guān)于年齡的項目,按年齡的升序進行 排序。記錄的總數(shù)為從記錄編號0至記錄編號19的20個,項目值編號 為從0至8的9個。也就是說,實際的年齡的值為15、 16、 18、 19、 20、 21、 23、 25和28的9個。圖40的數(shù)據(jù)結(jié)構(gòu)中,與年齡相關(guān)的項目值編 號VNo為0至8的值,所以,用基數(shù)4(即基數(shù)=4)對項目值編號進 行分解后,項目值除以4的商為上位的值,項目值編號的模運算(4)的 值為下位的值。項目值編號的上位是O、 l以及2的3個值,下位是0、 1、 2以及3的4個值。初始時,在第1階段,生成用于累計上位的值O、 l以及2的出現(xiàn)次 數(shù)的數(shù)組Count-l,并將其元素初始化為O。例如,Count-l
至OrdSet,[18的范圍(區(qū)間 1)內(nèi),上位的值為2的記錄則存在于記錄編號數(shù)組的OrdSet,的 OrdSet,[19(區(qū)間2)內(nèi)。接下來,在多階段排序的第2階段,于各區(qū)間內(nèi),依據(jù)項目值編 號的下位的值對記錄編號進行排序。例如,OrdSet,的區(qū)間l被傳送至 與OrdSet"相對應(yīng)的區(qū)間l。在第2階段的排序中,因為已經(jīng)用上面的 位規(guī)定了區(qū)間,記錄編號不可能傳送至區(qū)間外。圖44是多階段排序的第2階段的初始狀態(tài)的示意圖。下面是關(guān)于 OrdSet,的區(qū)間l的說明。例如,當多個處理器存在時,通過按區(qū)間分 配處理器,也可以對下面的處理進行并行處理。Count-2用于累計項 目值編號的下位的值(0、 1、 2、 3)的出現(xiàn)次數(shù)。圖45A至45C是多階段排序的第2階段的累計以及累計數(shù)處理的 說明圖。從圖45A開始按順序地進行累計,就可以得到如圖45B所示的 累計數(shù)組。該數(shù)組如45C所示被進行累計數(shù)處理。最后,將笫2累計數(shù)數(shù)組Aggr-2作為指針使用,通過將記錄編號 數(shù)組OrdSet,的區(qū)間l傳送至記錄編號數(shù)組OrdSet"的區(qū)間1 ,完成多階 段排序。圖46A、 46B是多階段排序的第2階段的記錄編號傳送的說明 圖。具體地,如果OrdSet,[i叫,則讀出Vno[jl,然后,將該VNoj除 以4的余數(shù)(VNo[jl MOD 4)設(shè)為k,讀出Aggr-2[k的值,然后,將 記錄編號j賦給OrdSet,,[Aggr-2[k,并將Aggr-2[k]加l。圖46A表示 OrdSet,[14的傳送,圖46B表示OrdSet,[18的傳送。圖46B的OrdSet,, 的區(qū)間l表示的是區(qū)間l的最終的排序結(jié)果。與區(qū)間1同樣,對于其他區(qū)間0和區(qū)間2,也可以通過進行第2階段 的累計、累計數(shù)處理以及記錄編號的傳送,將記錄編號數(shù)組OrdSet 的全體傳送至記錄編號數(shù)組OrdSet",然后結(jié)束排序。如上所述,在本發(fā)明的實施例中,使計算機系統(tǒng)10執(zhí)行依據(jù)記錄 的預(yù)定的項目的項目值調(diào)換記錄順序的程序。更具體地,在本實施例 中,如下所述,程序是使各CPU執(zhí)行上述處理步驟、或者、實現(xiàn)上述 功能。在本實施例中,計算機系統(tǒng)中裝載了OS (例如,Linux(登錄商 標))。初始時,一CPU (例如、CPU12-1)在OS的控制下,將程序 裝載至內(nèi)存(例如、共享內(nèi)存14)中。程序轉(zhuǎn)栽至內(nèi)存后,CPU12-1、 12-1、、 12-p的各CPU需要執(zhí)行處理時,在OS的控制下,使各CPU 執(zhí)行預(yù)定的功能。也就是說,各CPU讀出保存在共享內(nèi)存14內(nèi)的程序 中的預(yù)定的處理步驟,并執(zhí)行該處理步驟。另一方面,需要指定CPU 處理時,在OS的控制下,使被指定的CPU實現(xiàn)其他預(yù)定的功能。也就 是iJL,只讓指定的CPU讀出保存在共享內(nèi)存14內(nèi)的程序中的其他的預(yù) 定的處理步驟,并執(zhí)行所述其他的預(yù)定的處理步驟。另外,需要注意 的是,各CPU執(zhí)行的程序的保存場所并不局限于上述共享內(nèi)存14,也 可以使用各CPU自身固有的本地內(nèi)存(圖中未表示)。綜上所述,在本實施例中,程序在OS的控制下使各CPU實現(xiàn)預(yù) 定的功能,同時,根據(jù)實際要求,也可以使指定的CPU實現(xiàn)其他預(yù)定 的功能。本發(fā)明并不局限于上述具體實施例,只要不脫離權(quán)利要求書的范 圍,亦可采用其他變化形式代替,但那些變化形式仍屬于本發(fā)明所涉 及的范圍。
權(quán)利要求
1、一種在共享內(nèi)存型多處理器系統(tǒng)中根據(jù)記錄的預(yù)定項目的項目值調(diào)整記錄的順序的信息處理方法,該共享內(nèi)存型多處理器系統(tǒng)包括共享內(nèi)存,其用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù)的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值數(shù)組用于按照與表格形式數(shù)據(jù)的項目值相對應(yīng)的項目值編號的順序保存該表格形式數(shù)據(jù)的項目值;以及兩個以上的處理器,其可以訪問所述共享內(nèi)存,所述信息處理方法包括分割所述記錄編號數(shù)組并將其分配給第一組的兩個以上的處理器的步驟;在所述第一組的兩個以上的處理器中的各處理器上,累計與所述被分配的記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的項目值編號的出現(xiàn)次數(shù)的步驟;分割所述項目值編號的范圍并將其分配給第二組的兩個以上的處理器的步驟;在所述第二組的兩個以上的處理器中的各處理器上,按照所述項目值編號的順序,在所述項目值編號一致的范圍內(nèi),根據(jù)所述記錄編號數(shù)組的一部分的順序,將所述被分配的項目編號的各自的出現(xiàn)次數(shù)變換成累計數(shù)的步驟;以及在所述第一組的兩個以上的處理器中的各處理器上,將與所述被分配的記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的所述項目值編號的累計數(shù)作為指針使用,將所述被分配的所述記錄編號數(shù)組的一部分中所包含的記錄編號保存至另一記錄編號數(shù)組中的步驟。
2、 一種在共享內(nèi)存型多處理器系統(tǒng)中根據(jù)記錄的預(yù)定項目的項 目值調(diào)整記錄的順序的信息處理方法,該共享內(nèi)存型多處理器系統(tǒng)包 括共享內(nèi)存,其用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目 值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值保存該表格形:數(shù)據(jù)的:^'目值;以及''兩個以上的處理器,其可以訪問所述共享內(nèi)存, 所述信息處理方法包括根據(jù)所述項目值編號的范圍設(shè)定所述項目值編號的基數(shù)的步驟;以及按照以所述基數(shù)表示的所述項目值編號的最下位至最上位的順 序,對于當前位,反復(fù)進行第一次將所述記錄編號數(shù)組做為當前記錄 編號數(shù)組,第二次以后將另一記錄編號數(shù)組做為當前記錄編號數(shù)組的 排序處理的步驟,所述排序處理包括分割所述當前記錄編號數(shù)組并將其分配給第一組的兩個以上的 處理器的步驟;在所述第一組的兩個以上的處理器中的各處理器上,累計與所述 被分配的記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的項目值編 號的當前位的值的出現(xiàn)次數(shù)的步驟;分割所述項目值編號的當前位的值的范圍并將其分配給第二組 的兩個以上的處理器的步驟;在所述第二組的兩個以上的處理器中的各處理器上,按照所述項 目值編號的當前位的值的順序,在所述項目值編號的當前位的值一致 的范圍內(nèi),根據(jù)所述記錄編號數(shù)組的一部分的順序,將所述被分配的 項目值編號的當前位的值的各自的出現(xiàn)次數(shù)變換成累計數(shù)的步驟;以及在所述第一組的兩個以上的處理器中的各處理器上,將與所述被 分配的記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的所述項目值 編號的當前位的值的累計數(shù)做為指針使用,將所述被分配的所述記錄 編號數(shù)組的一部分中所包含的記錄編號保存至另一記錄編號數(shù)組中 的步驟。
3、 一種在共享內(nèi)存型多處理器系統(tǒng)中根據(jù)記錄的預(yù)定項目的項 目值調(diào)整記錄的順序的信息處理方法,該共享內(nèi)存型多處理器系統(tǒng)包 括共享內(nèi)存,其用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目 值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值保存該表格形式數(shù)據(jù)的項目值;以及兩個以上的處理器,其可以訪問所述共享內(nèi)存, 所述信息處理方法包括根據(jù)所述項目值編號的范圍設(shè)定所述項目值編號的基數(shù)的步驟;以及按照以所述基數(shù)表示的所述項目值編號的最下位至最上位的順 序,對于當前位,反復(fù)進行第一次將所述記錄編號數(shù)組做為當前記錄 編號數(shù)組,第二次以后將另一記錄編號數(shù)組做為當前記錄編號數(shù)組的 排序處理的步驟,所述排序處理包括分割所述當前記錄編號數(shù)組并將其分配給所述兩個以上的處理 器的步猓;在各處理器上,累計與所述被分配的記錄編號數(shù)組的一部分中所 包含的記錄相對應(yīng)的項目值編號的當前位的值的出現(xiàn)次數(shù)的步驟;在至少一個處理器上,按照所述項目值編號的當前位的值的順 序,在所述項目值編號的當前位的值一致的范圍內(nèi),根據(jù)所述記錄編 號數(shù)組的一部分的順序,將所述被分配的項目值編號的當前位的值的各自的出現(xiàn)次數(shù)變換成累計數(shù)的步驟;以及在所述各處理器上,將與所述被分配的記錄編號數(shù)組的一部分中 所包含的記錄相對應(yīng)的所述項目值編號的當前位的值的累計數(shù)做為 指針使用,將所述被分配的所述記錄編號數(shù)組的一部分中所包含的記 錄編號保存至另 一記錄編號數(shù)組中的步驟。
4、 一種在共享內(nèi)存型多處理器系統(tǒng)中根據(jù)記錄的預(yù)定項目的項 目值調(diào)整記錄的順序的信息處理方法,該共享內(nèi)存型多處理器系統(tǒng)包 括共享內(nèi)存,其用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目 值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值保存該表格形i數(shù)據(jù)的^^目值;以及''兩個以上的處理器,其可以訪問所述共享內(nèi)存, 所述信息處理方法包括分割所述記錄編號數(shù)組并將其分配給所述兩個以上的處理器的 步驟;以及在所述兩個以上的處理器中的各處理器上,將所述被分配的記錄 編號數(shù)組的一部分中所包含的記錄的順序根據(jù)與該記錄相對應(yīng)的項 目值編號進行調(diào)換,將該記錄的記錄編號保存至另一記錄編號中的步
5、 一種在共享內(nèi)存型多處理器系統(tǒng)中根據(jù)記錄的預(yù)定項目的項 目值調(diào)整記錄的順序的信息處理方法,該共享內(nèi)存型多處理器系統(tǒng)包 括共享內(nèi)存,其用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目 值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值保存該表格形式數(shù)據(jù)的項目值;以及兩個以上的處理器,其可以訪問所述共享內(nèi)存, 所述信息處理方法包括根據(jù)所述項目值編號的范圍設(shè)定所述項目值編號的基數(shù)的步驟; 對于以所述基數(shù)表示的所述項目值編號的上面的位,排列所述記錄編號數(shù)組中的記錄編號,生成按照所述項目值編號的上面的位的值的順序所劃分的中間記錄編號數(shù)組的步驟;按照所述中間記錄編號數(shù)組的各區(qū)間分配處理器的步驟;以及 按照所述各區(qū)間所分配的各處理器,根據(jù)所述項目值編號的下面的位的值的順序,排列所述中間記錄編號數(shù)組的所述區(qū)間內(nèi)的記錄編號的步驟。
6、 一種共享內(nèi)存型多處理器系統(tǒng),包含 共享內(nèi)存;以及可以訪問所述共享內(nèi)存的兩個以上的處理器,所述共享內(nèi)存用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目 值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值 數(shù)組用于按照與表格形式數(shù)據(jù)的項目值相對應(yīng)的項目值編號的順序 保存該表格形式數(shù)據(jù)的項目值,各處理器包含用于確定所述記錄編號數(shù)組內(nèi)的、自處理器負責(zé)處理的一部分的 單元;用于累計與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng) 的項目值編號的出現(xiàn)次數(shù)的單元;用于確定所述項目值編號的范圍內(nèi)的、自處理器負責(zé)處理的范圍 的單元;用于按照所述項目值編號的順序,在所述項目值編號一致的范圍 內(nèi),根據(jù)所述記錄編號數(shù)組的一部分的順序,將所述負責(zé)處理的范圍 內(nèi)的項目值編號的各自的出現(xiàn)次數(shù)變換成累計數(shù)的單元;以及用于將與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的 所述項目值編號的累計數(shù)做為指針使用,將所述記錄編號數(shù)組的一部 分中所包含的記錄編號保存至另一記錄編號數(shù)組的單元。
7、 根據(jù)權(quán)利要求6所述的共享內(nèi)存型多處理器系統(tǒng),其中,由用于負責(zé)處理所述項目值編號范圍內(nèi)的領(lǐng)先范圍的處理器的 所述出現(xiàn)次數(shù)變換成累計數(shù)的單元所得到的所述累計數(shù),被用于負責(zé) 處理后續(xù)范圍的處理器的所述出現(xiàn)次數(shù)變換成累計數(shù)的單元所參照。
8、 一種共享內(nèi)存型多處理器系統(tǒng),包含 共享內(nèi)存;以及可以訪問所述共享內(nèi)存的兩個以上的處理器,所述共享內(nèi)存用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值 數(shù)組用于按照與表格形式數(shù)據(jù)的項目值相對應(yīng)的項目值編號的順序 保存該表格形式數(shù)據(jù)的項目值, 各處理器包含用于根據(jù)所述項目值編號的范圍設(shè)定所述項目值編號的基數(shù)的 單元;以及用于按照以所述基數(shù)表示的所述項目值編號的最下位至最上位 的順序設(shè)定當前位,反復(fù)進行第一次將所述記錄編號數(shù)組做為當前記 錄編號數(shù)組,第二次以后將另一記錄編號數(shù)組做為當前記錄編號數(shù)組 的排序處理的單元,用于反復(fù)進行所述排序處理的單元包含用于確定所述記錄編號數(shù)組內(nèi)的、自處理器負責(zé)處理的一部分的單元;用于累計與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的項目值編號的當前位的值的出現(xiàn)次數(shù)的單元;用于確定所述項目值編號的當前位的值的范圍內(nèi)的、自處理器負 責(zé)處理的范圍的單元;用于按照所述項目值編號的當前位的值的順序,在所述項目值編號的當前位的值的一致的范圍內(nèi),根據(jù)所述記錄編號數(shù)組的一部分的順序,將所述負責(zé)處理的范圍內(nèi)的項目值編號的當前位的值的各自的出現(xiàn)次數(shù)變換成累計數(shù)的單元;以及用于將與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的所述項目值編號的當前位的值的累計數(shù)做為指針使用,將所述記錄編 號數(shù)組的一部分中所包含的記錄編號保存至另一記錄編號數(shù)組的單 元。
9、 根據(jù)權(quán)利要求8所述的共享內(nèi)存型多處理器系統(tǒng),其中,由用于負責(zé)處理所迷項目值編號的當前位的范圍內(nèi)的領(lǐng)先范圍 的處理器的所述出現(xiàn)次數(shù)變換成累計數(shù)的單元所得到的所述累計數(shù),被用于負責(zé)處理后續(xù)范圍的處理器的所述出現(xiàn)次數(shù)變換成累計數(shù)的 單元所參照。
10、 一種共享內(nèi)存型多處理器系統(tǒng),包含 共享內(nèi)存;以及可以訪問所述共享內(nèi)存的兩個以上的處理器,所述共享內(nèi)存用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目 值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值保存該表格形式數(shù)據(jù)的項目值,各處理器包含用于根據(jù)所述項目值編號的范圍設(shè)定所述項目值編號的基數(shù)的 單元;以及用于按照以所述基數(shù)表示的所述項目值編號的最下位至最上位 的順序設(shè)定當前位,反復(fù)進行第一次將所述記錄編號數(shù)組做為當前記 錄編號數(shù)組,第二次以后將另一記錄編號數(shù)組做為當前記錄編號數(shù)組 的排序處理的單元,用于反復(fù)進行所述排序處理的單元包含用于確定所述記錄編號數(shù)組內(nèi)的、自處理器負責(zé)處理的一部分的 單元;以及用于累計與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的項目值編號的當前位的值的出現(xiàn)次數(shù)的單元,用于反復(fù)進行至少一個處理器的所述排序處理的單元包含用于按照所述項目值編號的當前位的值的順序,在所述項目值編號的當前位的值一致的范圍內(nèi),根據(jù)所述記錄編號數(shù)組的一部分的順序,將所述項目值編號的當前位的值的各自的出現(xiàn)次數(shù)變換成累計數(shù)的單元,用于反復(fù)進行所述排序處理的單元還包含 用于將與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的所述項目值編號的當前位的值的累計數(shù)做為指針使用,將所述記錄編 號數(shù)組的一部分中所包含的記錄編號保存至另一記錄編號數(shù)組中的 單元。
11、 一種共享內(nèi)存型多處理器系統(tǒng)中的程序,該共享內(nèi)存型多處理器系統(tǒng)包含共享內(nèi)存,其用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目 值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值保存該表格形:數(shù)據(jù)的;目值;以及 ' °兩個以上的處理器,其可以訪問所述共享內(nèi)存, 所述程序使各處理器實現(xiàn)以下功能確定所述記錄編號數(shù)組內(nèi)的、自處理器負責(zé)處理的一部分的功能;累計與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的項 目值編號的出現(xiàn)次數(shù)的功能;確定所述項目值編號的范圍內(nèi)的、自處理器負責(zé)處理的范圍的功能;按照所述項目值編號的順序,在所述項目值編號一致的范圍內(nèi), 根據(jù)所述記錄編號數(shù)組的一部分的順序,將所述負責(zé)處理的范圍內(nèi)的 項目值編號的各自的出現(xiàn)次數(shù)變換成累計數(shù)的功能;以及將與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的所述 項目值編號的累計數(shù)做為指針使用,將所述記錄編號數(shù)組的一部分中 所包含的記錄編號保存至另一記錄編號數(shù)組中的功能。
12、 一種共享內(nèi)存型多處理器系統(tǒng)中的程序,該共享內(nèi)存型多處 理器系統(tǒng)包含共享內(nèi)存,其用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目 值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值 保存該表格形式數(shù)據(jù)的項目值;以及兩個以上的處理器,其可以訪問所述共享內(nèi)存, 所述程序使各處理器實現(xiàn)以下功能根據(jù)所述項目值編號的范圍設(shè)定所述項目值編號的基數(shù)的功能; 按照以所述基數(shù)表示的所述項目值編號的最下位至最上位的順 序設(shè)定當前位,第一次排序時將所述記錄編號數(shù)組設(shè)為當前記錄編號 數(shù)組,笫二次以后的排序則將另一記錄編號數(shù)組設(shè)為當前記錄編號數(shù) 組,控制所述當前位的排序處理的功能;確定所述記錄編號數(shù)組內(nèi)的、自處理器負責(zé)處理的一部分的功能;累計與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的項 目值編號的當前位的值的出現(xiàn)次數(shù)的功能;確定所述項目值編號的當前位的值的范圍內(nèi)的、自處理器負責(zé)處 理的范圍的功能;按照所述項目值編號的當前位的值的順序,在所述項目值編號的 當前位的值一致的范圍內(nèi),根據(jù)所述記錄編號數(shù)組的一部分的順序, 將所述負責(zé)處理的范圍內(nèi)的項目值編號的當前位的值的各自的出現(xiàn) 次數(shù)變換成累計數(shù)的功能;以及將與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的所述 項目值編號的當前位的值的累計數(shù)做為指針使用,將所述記錄編號數(shù) 組的一部分中所包含的記錄編號保存至另一記錄編號數(shù)組中的功能。
13、 一種共享內(nèi)存型多處理器系統(tǒng)中的程序,該共享內(nèi)存型多處 理器系統(tǒng)包含共享內(nèi)存,其用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目 值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值 保存該表格形式數(shù)據(jù)的項目值;以及兩個以上的處理器,其可以訪問所述共享內(nèi)存, 所述程序使各處理器實現(xiàn)以下功能根據(jù)所述項目值編號的范圍設(shè)定所述項目值編號的基數(shù)的功能; 按照以所述基數(shù)表示的所述項目值編號的最下位至最上位的順序設(shè)定當前位,第一次排序時將所述記錄編號數(shù)組設(shè)為當前記錄編號數(shù)組,第二次以后的排序則將另一記錄編號數(shù)組設(shè)為當前記錄編號數(shù)組,控制所述當前位的排序處理的功能;確定所述記錄編號數(shù)組內(nèi)的、自處理器負責(zé)處理的一部分的功能;以及累計與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的項 目值編號的當前位的值的出現(xiàn)次數(shù)的功能, 使至少一個處理器實現(xiàn)以下功能按照所述項目編號的當前位的值的順序,在所述項目值編號的當 前位的值一致的范圍內(nèi),根據(jù)所述記錄編號數(shù)組的一部分的順序,將 所述項目值編號的當前位的值的各自的出現(xiàn)次數(shù)變換成累計數(shù)的功 能,還使所述各處理器實現(xiàn)以下功能將與所述記錄編號數(shù)組的一部分中所包含的記錄相對應(yīng)的所述 項目值編號的當前位的值的累計數(shù)做為指針使用,將所述記錄編號數(shù) 組的一部分中所包含的記錄編號保存至另一記錄編號數(shù)組中的功能。
14、 一種共享內(nèi)存型多處理器系統(tǒng)中的程序,該共享內(nèi)存型多處 理器系統(tǒng)包含共享內(nèi)存,其用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目 值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于根據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值 數(shù)組用于按照與表格形式數(shù)據(jù)的項目值相對應(yīng)的項目值編號的順序保存該表格形式數(shù)據(jù)的項目值;以及兩個以上的處理器,其可以訪問所述共享內(nèi)存,所述程序使被分配了所述記錄編號數(shù)組的一部分的所述兩個以上的處理器中的各處理器實現(xiàn)以下功能將所述被分配的記錄編號數(shù)組的一部分中所包含的記錄的順序根據(jù)與該記錄相對應(yīng)的項目值編號進行調(diào)換,將該記錄的記錄編號保存至另一記錄編號數(shù)組中的功能。
15、 一種共享內(nèi)存型多處理器系統(tǒng)中的程序,該共享內(nèi)存型多處 理器系統(tǒng)包含共享內(nèi)存,其用于保存記錄編號數(shù)組、項目值編號數(shù)組以及項目 值數(shù)組,該記錄編號數(shù)組用于按照預(yù)定的記錄順序保存表格形式數(shù)據(jù) 的記錄的記錄編號,該項目值編號數(shù)組用于才艮據(jù)記錄編號保存與表格 形式數(shù)據(jù)的記錄的預(yù)定項目的項目值相對應(yīng)的項目值編號,該項目值 數(shù)組用于按照與表格形式數(shù)據(jù)的項目值相對應(yīng)的項目值編號的順序 保存該表格形式數(shù)據(jù)的項目值;以及兩個以上的處理器,其可以訪問所述共享內(nèi)存,所述程序使至少一個處理器實現(xiàn)以下功能根據(jù)所述項目值編號的范圍設(shè)定所述項目值編號的基數(shù)的功能;以及對于以所述基數(shù)表示的所述項目值編號的上面的位,排列所述記 錄編號數(shù)組中的記錄編號,生成按照所述項目值編號的上面的位的值 的順序所劃分的中間記錄編號數(shù)組的功能,使按所述中間記錄編號數(shù)組的各區(qū)間所分配的各處理器實現(xiàn)以 下功能按照所述項目值編號的下面位的值的順序排列所述中間記錄編 號數(shù)組的所述區(qū)間內(nèi)的記錄編號的功能。
16、 一種可以被計算機讀取的儲存介質(zhì),其用于保存權(quán)利要求 11至權(quán)利要求15的任何一項所記載的程序。
全文摘要
使用兩個以上的處理器對共享內(nèi)存上的大規(guī)模表格形式數(shù)據(jù)進行并行排序。首先,分割待處理的記錄并將其分配給兩個以上的處理器。其次,各處理器累計與待處理的記錄相關(guān)聯(lián)的項目值編號的本地出現(xiàn)次數(shù)。然后,將各處理器累計出的項目值編號的本地出現(xiàn)次數(shù)變換成項目值編號的全局累計數(shù),即在各處理器之間被共享使用的累計數(shù)。最后,各處理器將全局累計數(shù)作為指針使用,調(diào)換被分配的記錄的順序。
文檔編號G06F17/30GK101133414SQ20068000341
公開日2008年2月27日 申請日期2006年5月22日 優(yōu)先權(quán)日2005年5月24日
發(fā)明者古莊晉二 申請人:特博數(shù)據(jù)實驗室公司