本發(fā)明涉及高性能計(jì)算領(lǐng)域和數(shù)據(jù)庫(kù)領(lǐng)域,具體地涉及一種路網(wǎng)中移動(dòng)對(duì)象查詢(xún)方法。
背景技術(shù):
隨著移動(dòng)設(shè)備的廣泛普及和位置服務(wù)的不斷發(fā)展,針對(duì)移動(dòng)對(duì)象的查詢(xún)處理成為研究的熱點(diǎn)。典型的查詢(xún),例如:查找距離用戶(hù)最近的超市或加油站;距離用戶(hù)最近的出租車(chē)等。在人們的日常生活中,所有的對(duì)象都是基于路網(wǎng)進(jìn)行運(yùn)動(dòng)。對(duì)于路網(wǎng)中任意對(duì)象x和y,對(duì)象間的路網(wǎng)距離d(x,y)比歐式距離||x–y||能更好的反映出對(duì)象間的實(shí)際距離。例如,在雙向車(chē)道中,車(chē)輛q到位于另一側(cè)加油站p的路網(wǎng)距離d(q,p)遠(yuǎn)遠(yuǎn)大于兩者之間的歐式距離||q–p||。因此,兩個(gè)對(duì)象間的路網(wǎng)距離d(q,p)比歐氏距離||q–p||更有意義。
但是,本申請(qǐng)發(fā)明人在實(shí)現(xiàn)本發(fā)明的過(guò)程中發(fā)現(xiàn),已有的路網(wǎng)中移動(dòng)對(duì)象查詢(xún)算法具有如下缺陷:隨著用戶(hù)數(shù)量的不斷增加,應(yīng)用場(chǎng)景的不斷豐富,常規(guī)的knn算法不能很好的應(yīng)對(duì)新出現(xiàn)的應(yīng)用。
例如,對(duì)于典型的打車(chē)應(yīng)用,車(chē)輛在運(yùn)行過(guò)程中會(huì)產(chǎn)生一個(gè)車(chē)輛位置更新數(shù)據(jù)流。同時(shí),大量用戶(hù)發(fā)起的打車(chē)請(qǐng)求會(huì)形成一個(gè)查詢(xún)數(shù)據(jù)流。系統(tǒng)首先要對(duì)車(chē)輛位置信息進(jìn)行實(shí)時(shí)更新,以確保查詢(xún)結(jié)果的有效性,同時(shí)又需要實(shí)時(shí)響應(yīng)所有用戶(hù)的查詢(xún)請(qǐng)求,以確保服務(wù)質(zhì)量。對(duì)于這類(lèi)應(yīng)用場(chǎng)景,當(dāng)knn算法采用每次處理一個(gè)查詢(xún)(onebyone)的方式時(shí),大量用戶(hù)需要排隊(duì)以等待查詢(xún)響應(yīng),用戶(hù)的排隊(duì)等待時(shí)間將嚴(yán)重影響服務(wù)質(zhì)量。
因此,已有的路網(wǎng)中移動(dòng)對(duì)象查詢(xún)算法不能很好地應(yīng)對(duì)新出現(xiàn)的需求,需要找到新的移動(dòng)對(duì)象查詢(xún)方案,以滿足大數(shù)據(jù)下位置服務(wù)的查詢(xún)需求。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明實(shí)施例的目的是提供一種路網(wǎng)中移動(dòng)對(duì)象查詢(xún)方法,該移動(dòng)對(duì)象查詢(xún)方法用于實(shí)現(xiàn)滿足大數(shù)據(jù)下位置服務(wù)的查詢(xún)需求的移動(dòng)對(duì)象查詢(xún)方案。
為了實(shí)現(xiàn)上述目的,本發(fā)明實(shí)施例提供一種路網(wǎng)中移動(dòng)對(duì)象查詢(xún)方法,用于服務(wù)器端,且所述路網(wǎng)中移動(dòng)對(duì)象查詢(xún)方法包括:獲取移動(dòng)對(duì)象更新數(shù)據(jù)和用戶(hù)輸入的查詢(xún)數(shù)據(jù);采用多核cpu,基于移動(dòng)對(duì)象在路網(wǎng)中所在的節(jié)點(diǎn)對(duì)所獲取的移動(dòng)對(duì)象更新數(shù)據(jù)進(jìn)行聚集索引以及基于查詢(xún)數(shù)據(jù)在路網(wǎng)中所在的邊來(lái)對(duì)所獲取的查詢(xún)數(shù)據(jù)進(jìn)行聚集索引;以及將聚集索引后的數(shù)據(jù)放入gpu中進(jìn)行基于最近鄰knn算法的計(jì)算,以獲得查詢(xún)結(jié)果。
可選地,所述獲取移動(dòng)對(duì)象更新數(shù)據(jù)和用戶(hù)輸入的查詢(xún)數(shù)據(jù)包括:周期性采集移動(dòng)對(duì)象更新數(shù)據(jù),該移動(dòng)對(duì)象更新數(shù)據(jù)包括移動(dòng)對(duì)象識(shí)別號(hào)及移動(dòng)對(duì)象坐標(biāo);實(shí)時(shí)接收用戶(hù)輸入的查詢(xún)數(shù)據(jù);以及采用緩存器緩存所述移動(dòng)對(duì)象更新數(shù)據(jù)及所述查詢(xún)數(shù)據(jù),并按照需要使用的線程數(shù)劃分所述緩存器中的數(shù)據(jù),其中每個(gè)線程處理一塊移動(dòng)對(duì)象更新數(shù)據(jù)或查詢(xún)數(shù)據(jù)。
可選地,采用快照的方式將所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢(xún)數(shù)據(jù)存儲(chǔ)到所述緩存器中。
可選地,基于移動(dòng)對(duì)象在路網(wǎng)中所在的節(jié)點(diǎn)對(duì)所獲取的移動(dòng)對(duì)象更新數(shù)據(jù)進(jìn)行聚集索引包括:計(jì)算移動(dòng)對(duì)象與其所在路徑中的兩個(gè)端點(diǎn)處的節(jié)點(diǎn)的距離;將與端點(diǎn)處的節(jié)點(diǎn)距離不超過(guò)其路徑長(zhǎng)度一半的移動(dòng)對(duì)象的移動(dòng)對(duì)象更新數(shù)據(jù)聚集在該節(jié)點(diǎn);以及將聚集完成的移動(dòng)對(duì)象更新數(shù)據(jù)放入一個(gè)對(duì)象表結(jié)構(gòu)中。
可選地,基于查詢(xún)數(shù)據(jù)在路網(wǎng)中所在的邊來(lái)對(duì)所獲取的查詢(xún)數(shù)據(jù)進(jìn)行聚集索引包括:將所有查詢(xún)數(shù)據(jù)按照所在路徑進(jìn)行聚集,并將同一條路徑上的查詢(xún)數(shù)據(jù)放入一個(gè)查詢(xún)表結(jié)構(gòu)的相鄰存儲(chǔ)位置。
可選地,將聚集索引后的數(shù)據(jù)放入gpu中進(jìn)行基于knn算法的計(jì)算包括:基于聚集索引后的數(shù)據(jù),計(jì)算路徑中的任意一個(gè)節(jié)點(diǎn)所在路徑的兩個(gè)端點(diǎn)的knn結(jié)果集;基于聚集索引后的數(shù)據(jù),計(jì)算路徑中的移動(dòng)對(duì)象集合;以及從所述knn結(jié)果集和所述移動(dòng)對(duì)象集合的合集中查詢(xún)出所選定的節(jié)點(diǎn)的knn結(jié)果集。
可選地,采用多核cpu進(jìn)行的聚集索引是格網(wǎng)索引,且所述格網(wǎng)索引包括:將各移動(dòng)對(duì)象更新數(shù)據(jù)索引至格網(wǎng)中與該移動(dòng)對(duì)象更新數(shù)據(jù)的二維歐式空間坐標(biāo)相對(duì)應(yīng)的單元格中;以及將各查詢(xún)數(shù)據(jù)索引至格網(wǎng)中與該查詢(xún)數(shù)據(jù)相匹配的移動(dòng)對(duì)象更新數(shù)據(jù)所在的單元格中。
可選地,所述格網(wǎng)索引還包括:當(dāng)格網(wǎng)中的單元格中所聚集的數(shù)據(jù)的量超出設(shè)定閾值時(shí),在gpu端將該單元格劃分為至少兩個(gè)子單元格,并將各數(shù)據(jù)相應(yīng)存儲(chǔ)至對(duì)應(yīng)的子單元格。
可選地,所述路網(wǎng)中移動(dòng)對(duì)象查詢(xún)方法還包括:將所述查詢(xún)結(jié)果分發(fā)給用戶(hù),并刪除進(jìn)行計(jì)算的過(guò)程中所產(chǎn)生的中間結(jié)果。
另一方面,本發(fā)明提供一種計(jì)算可讀存儲(chǔ)介質(zhì),該計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有計(jì)算機(jī)指令,該計(jì)算機(jī)指令用于使得所述計(jì)算機(jī)執(zhí)行本申請(qǐng)上述的方法。
通過(guò)上述技術(shù)方案,本發(fā)明實(shí)施例所具有的有益效果是:本發(fā)明實(shí)施例提出了一種基于新硬件環(huán)境下的高吞吐量路網(wǎng)中移動(dòng)對(duì)象查詢(xún)方法,其充分發(fā)揮了大內(nèi)存、多核cpu、gpu的特點(diǎn),從而提高了移動(dòng)對(duì)象的查詢(xún)處理效率,更能滿足大數(shù)據(jù)下基于位置服務(wù)的用戶(hù)查詢(xún)需求。
本發(fā)明實(shí)施例的其它特征和優(yōu)點(diǎn)將在隨后的具體實(shí)施方式部分予以詳細(xì)說(shuō)明。
附圖說(shuō)明
附圖是用來(lái)提供對(duì)本發(fā)明實(shí)施例的進(jìn)一步理解,并且構(gòu)成說(shuō)明書(shū)的一部分,與下面的具體實(shí)施方式一起用于解釋本發(fā)明實(shí)施例,但并不構(gòu)成對(duì)本發(fā)明實(shí)施例的限制。在附圖中:
圖1是根據(jù)本發(fā)明實(shí)施例的路網(wǎng)中移動(dòng)對(duì)象查詢(xún)方法的流程示意圖;
圖2是根據(jù)本發(fā)明實(shí)施例的獲取移動(dòng)對(duì)象更新數(shù)據(jù)和查詢(xún)數(shù)據(jù)的流程示意圖;
圖3是根據(jù)本發(fā)明實(shí)施例的對(duì)移動(dòng)對(duì)象更新數(shù)據(jù)進(jìn)行聚集索引的流程示意圖;
圖4是對(duì)移動(dòng)對(duì)象進(jìn)行聚集索引的示例的示意圖;
圖5是通過(guò)gpu對(duì)聚集索引后的數(shù)據(jù)進(jìn)行計(jì)算的流程示意圖;
圖6是根據(jù)本發(fā)明實(shí)施例的gpgpu模型的架構(gòu)示意圖;以及
圖7是根據(jù)本發(fā)明實(shí)施例的基于大內(nèi)存和gpgpu模型進(jìn)行移動(dòng)對(duì)象knn查詢(xún)的示意圖。
具體實(shí)施方式
以下結(jié)合附圖對(duì)本發(fā)明實(shí)施例的具體實(shí)施方式進(jìn)行詳細(xì)說(shuō)明。應(yīng)當(dāng)理解的是,此處所描述的具體實(shí)施方式僅用于說(shuō)明和解釋本發(fā)明實(shí)施例,并不用于限制本發(fā)明實(shí)施例。
本申請(qǐng)發(fā)明人在實(shí)現(xiàn)本發(fā)明目的的過(guò)程中發(fā)現(xiàn)對(duì)于大部分應(yīng)用而言,單個(gè)查詢(xún)的響應(yīng)時(shí)間只要達(dá)到秒級(jí)就可以滿足需求,不需要刻意追求單個(gè)查詢(xún)的響應(yīng)時(shí)間,例如對(duì)于典型的打車(chē)應(yīng)用,大部分用戶(hù)只要能在幾秒鐘內(nèi)得到響應(yīng)就能滿足要求,對(duì)于更快的查詢(xún)響應(yīng)時(shí)間,用戶(hù)的服務(wù)體驗(yàn)沒(méi)有明顯變化。因此,為了確保服務(wù)質(zhì)量,需要在單位時(shí)間內(nèi)盡可能多的響應(yīng)用戶(hù)的查詢(xún),即系統(tǒng)的吞吐量成為了滿足大數(shù)據(jù)下位置服務(wù)查詢(xún)需求的關(guān)鍵因素。
基于這一思路,本發(fā)明實(shí)施例提出了一種路網(wǎng)中移動(dòng)對(duì)象查詢(xún)方法。在具體介紹這一方法之前,先對(duì)本發(fā)明實(shí)施例中所涉及的路網(wǎng)進(jìn)行說(shuō)明。
本發(fā)明實(shí)施例中,路網(wǎng)用一個(gè)無(wú)相加權(quán)圖g=(v,e)來(lái)表示,其中v為節(jié)點(diǎn)的集合,代表路網(wǎng)中的連接處,e為無(wú)相邊的集合,代表路網(wǎng)中兩個(gè)節(jié)點(diǎn)之間的線段,同時(shí)
圖1示出了本發(fā)明實(shí)施例的路網(wǎng)中移動(dòng)對(duì)象查詢(xún)方法的流程示意圖,該移動(dòng)對(duì)象查詢(xún)方法應(yīng)用在服務(wù)器端,可以包括以下步驟:
步驟s100,獲取移動(dòng)對(duì)象更新數(shù)據(jù)和用戶(hù)輸入的查詢(xún)數(shù)據(jù)。
其中,移動(dòng)對(duì)象更新數(shù)據(jù)包括移動(dòng)對(duì)象識(shí)別號(hào)(id)及移動(dòng)對(duì)象坐標(biāo)等信息,例如體現(xiàn)典型打車(chē)應(yīng)用中涉及的車(chē)輛的實(shí)時(shí)位置的變化的信息;查詢(xún)數(shù)據(jù)例如是典型打車(chē)應(yīng)用中涉及的用戶(hù)對(duì)附近兩公里內(nèi)的出租車(chē)的查詢(xún)。
優(yōu)選地,如圖2所示,該步驟s100可以包括以下步驟:
步驟s101,周期性采集移動(dòng)對(duì)象更新數(shù)據(jù)。
步驟s102,實(shí)時(shí)接收用戶(hù)輸入的查詢(xún)數(shù)據(jù)。
步驟s103,采用緩存器(以下稱(chēng)為buffer)緩存所述移動(dòng)對(duì)象更新數(shù)據(jù)及所述查詢(xún)數(shù)據(jù),并按照需要使用的線程數(shù)劃分buffer中的數(shù)據(jù)。
其中,可設(shè)置每個(gè)線程處理一塊移動(dòng)對(duì)象更新數(shù)據(jù)或一塊查詢(xún)數(shù)據(jù)。
更為優(yōu)選地,本發(fā)明實(shí)施例采用快照的方式將所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢(xún)數(shù)據(jù)存儲(chǔ)到buffer中,后續(xù)的計(jì)算也可以基于快照進(jìn)行,例如用戶(hù)在t1時(shí)刻提交的查詢(xún)基于在t0時(shí)刻形成的位置快照進(jìn)行計(jì)算,其中t0≤t1,t1-t0<δt,δt為一個(gè)固定的時(shí)間間隔,查詢(xún)結(jié)果在t0+δt時(shí)間段內(nèi)有效。
其中,關(guān)于快照的原理及具體方法,可參考現(xiàn)有相關(guān)文獻(xiàn),本發(fā)明實(shí)施例在此不再贅述。
步驟s200,采用多核cpu,基于移動(dòng)對(duì)象在路網(wǎng)中所在的節(jié)點(diǎn)對(duì)所獲取的移動(dòng)對(duì)象更新數(shù)據(jù)進(jìn)行聚集索引以及基于查詢(xún)數(shù)據(jù)在路網(wǎng)中所在的邊來(lái)對(duì)所獲取的查詢(xún)數(shù)據(jù)進(jìn)行聚集索引。
優(yōu)選地,如圖3所示,基于移動(dòng)對(duì)象在路網(wǎng)中所在的節(jié)點(diǎn)對(duì)所獲取的移動(dòng)對(duì)象更新數(shù)據(jù)進(jìn)行聚集索引可以包括以下步驟:
步驟s201,計(jì)算移動(dòng)對(duì)象與其所在路徑中的兩個(gè)端點(diǎn)處的節(jié)點(diǎn)的距離。
步驟s202,將與端點(diǎn)處的節(jié)點(diǎn)距離不超過(guò)其路徑長(zhǎng)度一半的移動(dòng)對(duì)象的移動(dòng)對(duì)象更新數(shù)據(jù)聚集在該節(jié)點(diǎn)。
步驟s203,將聚集完成的移動(dòng)對(duì)象更新數(shù)據(jù)放入一個(gè)對(duì)象表結(jié)構(gòu)中。
對(duì)于步驟s201-步驟s203,下面通過(guò)示例來(lái)說(shuō)明。圖4示出了對(duì)移動(dòng)對(duì)象進(jìn)行聚集索引的示例,其中,n1-n8表示節(jié)點(diǎn),p1-p5表示移動(dòng)對(duì)象,從圖中可知p2和p3至節(jié)點(diǎn)n4的距離不超過(guò)對(duì)應(yīng)的路徑n3n4和n5n4的長(zhǎng)度的一半,從而將p2和p3聚集在對(duì)象表結(jié)構(gòu)的相鄰位置。同樣地,p4和p5在對(duì)象表結(jié)構(gòu)中的位置也是采用類(lèi)似方法確定。
優(yōu)選地,基于查詢(xún)數(shù)據(jù)在路網(wǎng)中所在的邊來(lái)對(duì)所獲取的查詢(xún)數(shù)據(jù)進(jìn)行聚集索引可以包括:將所有查詢(xún)數(shù)據(jù)按照所在路徑進(jìn)行聚集,并將同一條路徑上的查詢(xún)數(shù)據(jù)放入一個(gè)查詢(xún)表結(jié)構(gòu)的相鄰存儲(chǔ)位置。如此,可知與移動(dòng)對(duì)象更新數(shù)據(jù)處理的方式不同,所有查詢(xún)數(shù)據(jù)是按路徑進(jìn)行聚集,同一條路徑上的查詢(xún)數(shù)據(jù)在查詢(xún)表結(jié)構(gòu)中的存儲(chǔ)位置相近。
通過(guò)上面的操作,將移動(dòng)對(duì)象更新數(shù)據(jù)和查詢(xún)數(shù)據(jù)按照所在節(jié)點(diǎn)和所在的邊進(jìn)行聚集索引,分別存儲(chǔ)在對(duì)象表和查詢(xún)表中,從而可利用多核cpu的多核特性,通過(guò)批處理的方式,一次處理多個(gè)查詢(xún)。
另外,采用多核cpu還涉及對(duì)大容量?jī)?nèi)存技術(shù)的利用,即將工作負(fù)載(即buffer緩存的查詢(xún)數(shù)據(jù)和移動(dòng)對(duì)象更新數(shù)據(jù))全部放在多核cpu中進(jìn)行處理,從而充分利用了數(shù)據(jù)的空間局部性,增加了高速緩存的命中率,從而有利于后續(xù)提高相關(guān)算法的執(zhí)行效率。
更進(jìn)一步地,本發(fā)明實(shí)施例采用多核cpu進(jìn)行的聚集索引是格網(wǎng)(grid)索引,具體步驟為:將各移動(dòng)對(duì)象更新數(shù)據(jù)索引至格網(wǎng)中與該移動(dòng)對(duì)象更新數(shù)據(jù)的二維歐式空間坐標(biāo)相對(duì)應(yīng)的單元格中;以及將各查詢(xún)數(shù)據(jù)索引至格網(wǎng)中與該查詢(xún)數(shù)據(jù)相匹配的移動(dòng)對(duì)象更新數(shù)據(jù)所在的單元格中。
另外,在步驟200中,多核cpu將構(gòu)建完成的grid索引的數(shù)據(jù)以單元格為單位輸送至gpu端,以執(zhí)行步驟s300。
步驟s300,將聚集索引后的數(shù)據(jù)放入gpu中進(jìn)行基于knn算法的計(jì)算,以獲得查詢(xún)結(jié)果。
這里,需說(shuō)明的是,在步驟s200中,將移動(dòng)對(duì)象更新數(shù)據(jù)和查詢(xún)數(shù)據(jù)聚集在單元格中時(shí),可能會(huì)出現(xiàn)數(shù)據(jù)扭曲現(xiàn)象,即過(guò)多的數(shù)據(jù)集中在一個(gè)或幾個(gè)單元格中造成了數(shù)據(jù)扭曲。對(duì)此,可設(shè)定當(dāng)grid中的單元格中所聚集的數(shù)據(jù)的量超出設(shè)定閾值時(shí),在gpu端將該單元格劃分為至少兩個(gè)子單元格,并將各數(shù)據(jù)相應(yīng)存儲(chǔ)至對(duì)應(yīng)的子單元格。如此,對(duì)單元格進(jìn)行二次劃分,得到了更小粒度的子單元格,其中二次劃分優(yōu)選為可按照單元格首次劃分的相同方式進(jìn)行,例如,第一次劃分后形成3*3的單元格,其中兩個(gè)單元格中的數(shù)據(jù)量超過(guò)設(shè)定閾值,則單獨(dú)將這兩個(gè)單元格繼續(xù)劃分為3*3的單元格。
另外,knn算法的核心思想是如果一個(gè)樣本在特征空間中的k個(gè)最相鄰的樣本中的大多數(shù)屬于某一個(gè)類(lèi)別,則該樣本也屬于這個(gè)類(lèi)別,并具有這個(gè)類(lèi)別上樣本的特性。本發(fā)明實(shí)施例的方法在實(shí)質(zhì)上給出了一種利用多核cpu、gpu和特征的改進(jìn)型knn算法,該改進(jìn)算法原理為:對(duì)于在路徑
據(jù)此,如圖5所示,將聚集索引后的數(shù)據(jù)放入gpu中進(jìn)行基于knn算法的計(jì)算的步驟可以如下:
步驟s301,基于聚集索引后的數(shù)據(jù),計(jì)算路徑中的任意一個(gè)節(jié)點(diǎn)所在路徑的兩個(gè)端點(diǎn)的knn((k-nearestneighbor,k近鄰)結(jié)果集。
其中,關(guān)于knn結(jié)果集的計(jì)算可參考現(xiàn)有相關(guān)文獻(xiàn)進(jìn)行,在此則不再贅述。
步驟s302,基于聚集索引后的數(shù)據(jù),計(jì)算路徑中的移動(dòng)對(duì)象集合。
步驟s303,從所述knn結(jié)果集和所述移動(dòng)對(duì)象集合的合集中查詢(xún)出所選定的節(jié)點(diǎn)的knn結(jié)果集。
通過(guò)上述操作,通過(guò)gpu執(zhí)行g(shù)rid的對(duì)應(yīng)單元格,以使移動(dòng)對(duì)象與查詢(xún)關(guān)聯(lián),得到相應(yīng)的查詢(xún)結(jié)果。另外,在優(yōu)選的實(shí)施方式中,還需要將查詢(xún)結(jié)果分發(fā)給用戶(hù),該查詢(xún)結(jié)果即是gpu的計(jì)算結(jié)果,從而還可以在分發(fā)查詢(xún)結(jié)果的同時(shí),刪除進(jìn)行計(jì)算的過(guò)程中所產(chǎn)生的中間結(jié)果,以保證gpu的執(zhí)行效率。
如此,步驟s200和步驟s300相結(jié)合,實(shí)現(xiàn)了基于多核cpu和gpu進(jìn)行移動(dòng)對(duì)象knn查詢(xún)的方案,并充分運(yùn)用了多核cpu和gpu的特性,對(duì)于buffer中到來(lái)的移動(dòng)對(duì)象更新knn查詢(xún),通過(guò)重新構(gòu)建索引的方式,充分發(fā)揮了多核cpu的特性;對(duì)于構(gòu)建好的索引結(jié)構(gòu),利用gpu精于高效數(shù)據(jù)運(yùn)算的特征,提高了算法查詢(xún)的性能,且將多個(gè)查詢(xún)并執(zhí)行,充分利用查詢(xún)內(nèi)和查詢(xún)間的并行,提高了算法的效率。
因此,可知本發(fā)明實(shí)施例的移動(dòng)對(duì)象knn查詢(xún)方案中配置了基于大容量?jī)?nèi)存、多核cpu和gpu的新硬件環(huán)境的查詢(xún)框架,該查詢(xún)框架的具體配置可以例如:配置每臺(tái)可以提供12tb內(nèi)存的若干臺(tái)8路服務(wù)器,配置cpu內(nèi)核數(shù)最大可達(dá)18個(gè)的服務(wù)器,以及配置用來(lái)做大規(guī)模的并行運(yùn)算的gpu。其中,由buffer緩存數(shù)據(jù),由cpu負(fù)責(zé)執(zhí)行復(fù)雜邏輯處理和事務(wù)管理等不適合數(shù)據(jù)并行的計(jì)算,由gpu負(fù)責(zé)計(jì)算密集型的大規(guī)模并行計(jì)算。
這里,多核cpu和gpu的配合構(gòu)成了gpgpu(generalpurposegpu,通用目的gpu)模型。如圖6所示,在gpgpu模型中,cpu作為主機(jī)(host),gpu作為協(xié)處理器或者設(shè)備(device)。在一個(gè)系統(tǒng)中可以存在一個(gè)主機(jī)和若干個(gè)設(shè)備,即可理解為:通過(guò)一個(gè)多核cpu對(duì)所述移動(dòng)對(duì)象更新數(shù)據(jù)和所述查詢(xún)數(shù)據(jù)重新構(gòu)建索引,以及通過(guò)若干個(gè)gpu對(duì)構(gòu)建好的索引結(jié)構(gòu)進(jìn)行計(jì)算。
另外,多核cpu是以單元格為單位將構(gòu)建完成的grid索引的數(shù)據(jù)輸送至gpu端,如圖6所示,gpu端保留了多核cpu端的基于grid索引的單元格的數(shù)據(jù)存儲(chǔ)方案,gpu對(duì)相同單元格中的移動(dòng)對(duì)象更新數(shù)據(jù)和查詢(xún)數(shù)據(jù)進(jìn)行計(jì)算,且各個(gè)單元格之間相互獨(dú)立,可以并行執(zhí)行。其中,例如圖6中的單元格(2,0)是指二維歐式空間坐標(biāo)為(2,0)的單元格,gpu對(duì)該單元格中的數(shù)據(jù)進(jìn)行計(jì)算可獲得相關(guān)查詢(xún)結(jié)果。
在這個(gè)gpgpu模型中,cpu與gpu協(xié)同工作,各司其職,cpu負(fù)責(zé)進(jìn)行邏輯性強(qiáng)的事物處理和串行計(jì)算,gpu則專(zhuān)注于執(zhí)行高度線程化的并行處理任務(wù)。因此一旦確定了程序的并行部分,就可以考慮把這部分計(jì)算工作交給gpu。
需說(shuō)明的是,cpu、gpu各自擁有相互獨(dú)立的存儲(chǔ)器地址空間,即:主機(jī)端的內(nèi)存和設(shè)備端的顯存。
另外,上述步驟s100-步驟s300均由服務(wù)器執(zhí)行,即本發(fā)明實(shí)施例中可通過(guò)僅一個(gè)服務(wù)器來(lái)管理移動(dòng)對(duì)象,從而有利于簡(jiǎn)化系統(tǒng)。
下面通過(guò)示例來(lái)具體介紹本實(shí)施例中基于大內(nèi)存和gpgpu模型進(jìn)行移動(dòng)對(duì)象knn查詢(xún)的實(shí)施細(xì)節(jié)。
如圖7所示,在兩個(gè)線程執(zhí)行時(shí),首先線程1處理路徑
綜上所述,本發(fā)明實(shí)施例提出了一種基于新硬件環(huán)境下的高吞吐量路網(wǎng)中移動(dòng)對(duì)象查詢(xún)方法,其充分發(fā)揮了大內(nèi)存、多核cpu、gpu的特點(diǎn),從而提高了移動(dòng)對(duì)象的查詢(xún)處理效率,更能滿足大數(shù)據(jù)下基于位置服務(wù)的用戶(hù)查詢(xún)需求。
以上結(jié)合附圖詳細(xì)描述了本發(fā)明例的可選實(shí)施方式,但是,本發(fā)明實(shí)施例并不限于上述實(shí)施方式中的具體細(xì)節(jié),在本發(fā)明實(shí)施例的技術(shù)構(gòu)思范圍內(nèi),可以對(duì)本發(fā)明實(shí)施例的技術(shù)方案進(jìn)行多種簡(jiǎn)單變型,這些簡(jiǎn)單變型均屬于本發(fā)明實(shí)施例的保護(hù)范圍。
另外需要說(shuō)明的是,在上述具體實(shí)施方式中所描述的各個(gè)具體技術(shù)特征,在不矛盾的情況下,可以通過(guò)任何合適的方式進(jìn)行組合。為了避免不必要的重復(fù),本發(fā)明實(shí)施例對(duì)各種可能的組合方式不再另行說(shuō)明。
本領(lǐng)域技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一個(gè)(可以是單片機(jī),芯片等)或處理器(processor)執(zhí)行本申請(qǐng)各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤(pán)等各種可以存儲(chǔ)程序代碼的介質(zhì)。
此外,本發(fā)明實(shí)施例的各種不同的實(shí)施方式之間也可以進(jìn)行任意組合,只要其不違背本發(fā)明實(shí)施例的思想,其同樣應(yīng)當(dāng)視為本發(fā)明實(shí)施例所公開(kāi)的內(nèi)容。