本公開的各實施例涉及gpu(圖形處理單元,graphics?processing?unit)顯存,尤其涉及一種快速讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的技術(shù)。
背景技術(shù):
::1、當(dāng)前nvidia?gpu已經(jīng)能夠提供很高的數(shù)據(jù)并行計算能力。gpu?direct?storage(gpu?直接存儲技術(shù))使得gpu能夠直接讀取文件,而無需經(jīng)過cpu。這種直接訪問大大減少了數(shù)據(jù)傳輸?shù)难舆t,提高了數(shù)據(jù)讀取的速度和整體系統(tǒng)性能。但是,當(dāng)面對從數(shù)據(jù)庫進(jìn)行取數(shù)的需求時,gpu?direct?storage并沒有提供相應(yīng)的解決方案。2、rapids?cudf作為一個開源庫,提供了豐富的數(shù)據(jù)處理功能,能夠在gpu上高效地處理數(shù)據(jù)。cudf支持多種文件格式的讀取,包括csv、parquet、json、orc和avro等,這些文件可以直接被加載到gpu顯存中形成dataframe,從而利用gpu的并行計算能力進(jìn)行數(shù)據(jù)處理。3、然而,cudf目前也不支持直接從數(shù)據(jù)庫中讀取數(shù)據(jù)。用戶需要先將數(shù)據(jù)從數(shù)據(jù)庫讀取到cpu內(nèi)存中,再借助cudf將數(shù)據(jù)拷貝至gpu顯存中。該過程往往占據(jù)過高的cpu內(nèi)存,這不僅限制了可以處理的數(shù)據(jù)量,還可能導(dǎo)致內(nèi)存溢出等問題。并且,cpu讀完數(shù)據(jù)后再進(jìn)行傳輸,使得處理傳輸性能不高。同時,該傳輸過程還會帶來額外的開銷,降低系統(tǒng)的整體性能,增加處理時間。技術(shù)實現(xiàn)思路1、本公開的各實施例的目的是提供一種用于讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的方法、裝置、設(shè)備、計算機(jī)程序產(chǎn)品和計算機(jī)程序存儲介質(zhì)。2、根據(jù)本公開的一個方面,提供了一種用于讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的方法,其中,該方法包括以下步驟:3、持續(xù)從數(shù)據(jù)庫中讀取目標(biāo)數(shù)據(jù)至cpu的內(nèi)存中;4、其中,該方法還包括以下步驟:5、當(dāng)cpu的內(nèi)存中開始讀取到所述目標(biāo)數(shù)據(jù)的一部分時,將cpu的內(nèi)存中的已讀取數(shù)據(jù)拷貝至gpu顯存,以獲得第一數(shù)據(jù)集;6、繼續(xù)從cpu的內(nèi)存中拷貝所述目標(biāo)數(shù)據(jù)的后續(xù)部分至gpu顯存,以獲得第二數(shù)據(jù)集,并將所述第二數(shù)據(jù)集合并至所述第一數(shù)據(jù)集;重復(fù)執(zhí)行前述操作,直至所述目標(biāo)數(shù)據(jù)從所述數(shù)據(jù)庫讀取完畢。7、根據(jù)一些實施例,其中,所述第一數(shù)據(jù)集的獲得步驟具體包括:當(dāng)cpu的內(nèi)存中開始讀取到所述目標(biāo)數(shù)據(jù)的一部分時,調(diào)用所述數(shù)據(jù)庫支持的連接方式所對應(yīng)的數(shù)據(jù)輸入接口,將cpu的內(nèi)存中的已讀取數(shù)據(jù)拷貝至gpu顯存,以獲得所述第一數(shù)據(jù)集。8、在一些示例中,所述數(shù)據(jù)庫為行存數(shù)據(jù)庫,支持jdbc連接方式,對應(yīng)的數(shù)據(jù)輸入接口用于創(chuàng)建cudf?dataframe對象。9、在一些示例中,所述數(shù)據(jù)庫為列存數(shù)據(jù)庫,支持adbc連接方式,對應(yīng)的數(shù)據(jù)輸入接口用于將arrow?table對象轉(zhuǎn)換為cudf?dataframe對象。10、根據(jù)一些實施例,其中,所述將所述第二數(shù)據(jù)集合并至所述第一數(shù)據(jù)集的步驟具體包括:調(diào)用數(shù)據(jù)合并接口將所述第二數(shù)據(jù)集合并至所述第一數(shù)據(jù)集,所述數(shù)據(jù)合并接口用于按行或按列拼接多個對象來生成一個新的合并對象。11、根據(jù)一些實施例,其中,cpu的內(nèi)存對從所述數(shù)據(jù)庫讀取的所述目標(biāo)數(shù)據(jù)進(jìn)行無序列化存儲。12、根據(jù)本公開的一個方面,還提供了一種用于讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的裝置,其中,該裝置包括:13、用于持續(xù)從數(shù)據(jù)庫中讀取目標(biāo)數(shù)據(jù)至cpu的內(nèi)存中的裝置;14、用于當(dāng)cpu的內(nèi)存中開始讀取到所述目標(biāo)數(shù)據(jù)的一部分時,將cpu的內(nèi)存中的已讀取數(shù)據(jù)拷貝至gpu顯存,以獲得第一數(shù)據(jù)集的裝置;15、用于繼續(xù)從cpu的內(nèi)存中拷貝所述目標(biāo)數(shù)據(jù)的后續(xù)部分至gpu顯存,以獲得第二數(shù)據(jù)集的裝置;用于將所述第二數(shù)據(jù)集合并至所述第一數(shù)據(jù)集的裝置;前述兩個裝置重復(fù)執(zhí)行各自的操作,直至所述目標(biāo)數(shù)據(jù)從所述數(shù)據(jù)庫讀取完畢。16、根據(jù)本公開的一個方面,還提供了一種用于讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的設(shè)備,其中,該設(shè)備包括處理器和存儲器,所述存儲器包括計算機(jī)可執(zhí)行指令,當(dāng)所述計算機(jī)可執(zhí)行指令被所述處理器執(zhí)行時,該設(shè)備被配置來執(zhí)行以下操作:17、持續(xù)從數(shù)據(jù)庫中讀取目標(biāo)數(shù)據(jù)至cpu的內(nèi)存中;18、其中,該設(shè)備還被配置來執(zhí)行以下操作:19、當(dāng)cpu的內(nèi)存中開始讀取到所述目標(biāo)數(shù)據(jù)的一部分時,將cpu的內(nèi)存中的已讀取數(shù)據(jù)拷貝至gpu顯存,以獲得第一數(shù)據(jù)集;20、繼續(xù)從cpu的內(nèi)存中拷貝所述目標(biāo)數(shù)據(jù)的后續(xù)部分至gpu顯存,以獲得第二數(shù)據(jù)集,并將所述第二數(shù)據(jù)集合并至所述第一數(shù)據(jù)集;重復(fù)執(zhí)行前述操作,直至所述目標(biāo)數(shù)據(jù)從所述數(shù)據(jù)庫讀取完畢。21、根據(jù)本公開的一個方面,還提供了一種用于讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的計算機(jī)程序產(chǎn)品,包括計算機(jī)程序指令,其中,當(dāng)所述計算機(jī)程序指令被計算機(jī)設(shè)備執(zhí)行時,該計算機(jī)設(shè)備被配置來執(zhí)行以下操作:22、持續(xù)從數(shù)據(jù)庫中讀取目標(biāo)數(shù)據(jù)至cpu的內(nèi)存中;23、其中,該計算機(jī)設(shè)備還被配置來執(zhí)行以下操作:24、當(dāng)cpu的內(nèi)存中開始讀取到所述目標(biāo)數(shù)據(jù)的一部分時,將cpu的內(nèi)存中的已讀取數(shù)據(jù)拷貝至gpu顯存,以獲得第一數(shù)據(jù)集;25、繼續(xù)從cpu的內(nèi)存中拷貝所述目標(biāo)數(shù)據(jù)的后續(xù)部分至gpu顯存,以獲得第二數(shù)據(jù)集,并將所述第二數(shù)據(jù)集合并至所述第一數(shù)據(jù)集;重復(fù)執(zhí)行前述操作,直至所述目標(biāo)數(shù)據(jù)從所述數(shù)據(jù)庫讀取完畢。26、根據(jù)本公開的一個方面,還提供了一種計算機(jī)程序存儲介質(zhì),其中存儲有用于讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的計算機(jī)可執(zhí)行指令,當(dāng)所述計算機(jī)可執(zhí)行指令被計算機(jī)設(shè)備執(zhí)行時,該計算機(jī)設(shè)備被配置來執(zhí)行以下操作:27、持續(xù)從數(shù)據(jù)庫中讀取目標(biāo)數(shù)據(jù)至cpu的內(nèi)存中;28、其中,該計算機(jī)設(shè)備還被配置來執(zhí)行以下操作:29、當(dāng)cpu的內(nèi)存中開始讀取到所述目標(biāo)數(shù)據(jù)的一部分時,將cpu的內(nèi)存中的已讀取數(shù)據(jù)拷貝至gpu顯存,以獲得第一數(shù)據(jù)集;30、繼續(xù)從cpu的內(nèi)存中拷貝所述目標(biāo)數(shù)據(jù)的后續(xù)部分至gpu顯存,以獲得第二數(shù)據(jù)集,并將所述第二數(shù)據(jù)集合并至所述第一數(shù)據(jù)集;重復(fù)執(zhí)行前述操作,直至所述目標(biāo)數(shù)據(jù)從所述數(shù)據(jù)庫讀取完畢。31、本公開的各實施例提供了基于rapids-cudf快速讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的方案,可以支持不同類型的數(shù)據(jù)庫,經(jīng)由cpu免序列化即可把數(shù)據(jù)庫中的數(shù)據(jù)傳輸至gpu顯存。這使得各種類型數(shù)據(jù)庫的數(shù)據(jù)可以被快速免序列化的讀取至nvidia?gpu顯存中,并形成rapids-cudf?dataframe或series格式,從而為后續(xù)cudf進(jìn)行數(shù)據(jù)科學(xué)計算,cuml庫進(jìn)行機(jī)器學(xué)習(xí)開發(fā)做好準(zhǔn)備。技術(shù)特征:1.一種用于讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的方法,其中,該方法包括以下步驟:2.根據(jù)權(quán)利要求1所述的方法,其中,所述第一數(shù)據(jù)集的獲得步驟具體包括:3.根據(jù)權(quán)利要求2所述的方法,其中,所述數(shù)據(jù)庫為行存數(shù)據(jù)庫,支持jdbc連接方式,對應(yīng)的數(shù)據(jù)輸入接口用于創(chuàng)建cudf?dataframe對象。4.根據(jù)權(quán)利要求2所述的方法,其中,所述數(shù)據(jù)庫為列存數(shù)據(jù)庫,支持adbc連接方式,對應(yīng)的數(shù)據(jù)輸入接口用于將arrow?table對象轉(zhuǎn)換為cudf?dataframe對象。5.根據(jù)權(quán)利要求1所述的方法,其中,所述將所述第二數(shù)據(jù)集合并至所述第一數(shù)據(jù)集的步驟具體包括:6.根據(jù)權(quán)利要求1所述的方法,其中,cpu的內(nèi)存對從所述數(shù)據(jù)庫讀取的所述目標(biāo)數(shù)據(jù)進(jìn)行無序列化存儲。7.一種用于讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的裝置,其中,該裝置包括:8.一種用于讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的設(shè)備,其中,該設(shè)備包括處理器和存儲器,所述存儲器包括計算機(jī)可執(zhí)行指令,當(dāng)所述計算機(jī)可執(zhí)行指令被所述處理器執(zhí)行時,該設(shè)備被配置來執(zhí)行以下操作:9.一種用于讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的計算機(jī)程序產(chǎn)品,包括計算機(jī)程序指令,其中,當(dāng)所述計算機(jī)程序指令被計算機(jī)設(shè)備執(zhí)行時,該計算機(jī)設(shè)備被配置來執(zhí)行以下操作:10.一種計算機(jī)程序存儲介質(zhì),其中存儲有用于讀取數(shù)據(jù)庫數(shù)據(jù)至gpu顯存的計算機(jī)可執(zhí)行指令,當(dāng)所述計算機(jī)可執(zhí)行指令被計算機(jī)設(shè)備執(zhí)行時,該計算機(jī)設(shè)備被配置來執(zhí)行以下操作:技術(shù)總結(jié)本公開的各實施例的目的是提供一種用于讀取數(shù)據(jù)庫數(shù)據(jù)至GPU顯存的方法、裝置、設(shè)備、計算機(jī)程序產(chǎn)品和計算機(jī)程序存儲介質(zhì)。計算機(jī)設(shè)備持續(xù)從數(shù)據(jù)庫中讀取目標(biāo)數(shù)據(jù)至CPU的內(nèi)存中;當(dāng)CPU的內(nèi)存中開始讀取到所述目標(biāo)數(shù)據(jù)的一部分時,計算機(jī)設(shè)備將CPU的內(nèi)存中的已讀取數(shù)據(jù)拷貝至GPU顯存,以獲得第一數(shù)據(jù)集;計算機(jī)設(shè)備繼續(xù)從CPU的內(nèi)存中拷貝所述目標(biāo)數(shù)據(jù)的后續(xù)部分至GPU顯存,以獲得第二數(shù)據(jù)集,并將所述第二數(shù)據(jù)集合并至所述第一數(shù)據(jù)集;重復(fù)執(zhí)行前述操作,直至所述目標(biāo)數(shù)據(jù)從所述數(shù)據(jù)庫讀取完畢。本公開的各實施例提供了一種基于Rapids?CUDF快速讀取數(shù)據(jù)庫數(shù)據(jù)至GPU顯存的方案,可以支持不同類型的數(shù)據(jù)庫,經(jīng)由CPU免序列化即可把數(shù)據(jù)庫中的數(shù)據(jù)傳輸至GPU顯存。技術(shù)研發(fā)人員:葉壹力,楊競霜受保護(hù)的技術(shù)使用者:嘉實遠(yuǎn)見科技(北京)有限公司技術(shù)研發(fā)日:技術(shù)公布日:2024/12/19