本發(fā)明涉及工業(yè)流體領域,特別涉及一種三維傅里葉變換加速方法、裝置、設備及介質。
背景技術:
1、隨著gpu(graphics?processing?unit,圖形處理器)硬件技術的發(fā)展(比cpu(central?processing?unit,中央處理器)硬件快100-1000倍),相應的各類工業(yè)流體軟件以及其他基于求解偏微分方程的工業(yè)軟件也亟待升級。大多數(shù)工業(yè)軟件都需要求解fourier(傅里葉)數(shù)學變換問題,但是現(xiàn)有的大多工業(yè)軟件都依賴于開源的數(shù)學庫或者是商業(yè)代碼,這對于自主可控工業(yè)軟件是很大的風險。并且,fourier(傅里葉)求解器被廣泛應用于各類工業(yè)軟件中,其基本原理并不復雜,但是直接使用教科書的原理編寫的fourier求解器,由于其天文數(shù)字的計算復雜度,使其根本無法應用到工業(yè)領域,如何降低傅里葉變換的計算復雜度也是目前有待解決的問題。
技術實現(xiàn)思路
1、有鑒于此,本發(fā)明的目的在于提供一種三維傅里葉變換加速方法、裝置、設備及介質,能夠通過cpu并行和gpu并發(fā),降低傅里葉變換的計算復雜度,實現(xiàn)對工業(yè)流體軟件的自主可控。其具體方案如下:
2、第一方面,本技術提供了一種三維傅里葉變換加速方法,應用于中央處理器,包括:
3、將待處理三維數(shù)據(jù)集劃分為若干子數(shù)據(jù)集,并將各所述子數(shù)據(jù)集分別分配至各子處理器中;所述子處理器位于所述中央處理器中;
4、在各所述子處理器分別對相應的所述子數(shù)據(jù)集在三個方向上依次執(zhí)行一維傅里葉變換時,通過各所述子處理器將對相應的所述子數(shù)據(jù)集在任一方向上執(zhí)行一維傅里葉變換的總任務發(fā)送至圖形處理器,以便所述圖形處理器將各所述總任務均分別劃分為若干子任務,并利用自身的若干流處理器分別對所述若干子任務進行并發(fā)執(zhí)行,以及將屬于同一所述總任務的所述若干子任務的并發(fā)執(zhí)行結果進行合并,并將各合并后結果返回至各所述總任務分別對應的所述子處理器以更新所述子處理器中的所述子數(shù)據(jù)集;
5、若在三個方向上的一維傅里葉變換均執(zhí)行完成,則將各所述子處理器中的當前所述子數(shù)據(jù)集進行合并,以得到目標三維數(shù)據(jù)集。
6、可選的,所述將待處理三維數(shù)據(jù)集劃分為若干子數(shù)據(jù)集,包括:
7、獲取所述待處理三維數(shù)據(jù)集分別在三個方向上的預設網(wǎng)格點數(shù),以及所述中央處理器分別在三個方向上的預設并行數(shù)量;
8、基于同一方向上的所述預設網(wǎng)格點數(shù)和所述預設并行數(shù)量確定與所述同一方向對應的目標劃分數(shù)量;
9、利用與三個方向分別對應的所述目標劃分數(shù)量將所述待處理三維數(shù)據(jù)集劃分為所述若干子數(shù)據(jù)集。
10、可選的,所述各所述子處理器分別對相應的所述子數(shù)據(jù)集在三個方向上依次執(zhí)行一維傅里葉變換的過程,包括:
11、通過各所述子處理器分別對相應的所述子數(shù)據(jù)集在第一方向上執(zhí)行一維傅里葉變換;
12、在所述第一方向上的一維傅里葉變換執(zhí)行完成以及各所述子處理器中的所述子數(shù)據(jù)集均更新完成后,通過各所述子處理器分別對相應的所述子數(shù)據(jù)集在第二方向上執(zhí)行一維傅里葉變換;
13、在所述第二方向上的一維傅里葉變換執(zhí)行完成以及各所述子處理器中的所述子數(shù)據(jù)集均更新完成后,通過各所述子處理器分別對相應的所述子數(shù)據(jù)集在第三方向上執(zhí)行一維傅里葉變換;
14、其中,所述第一方向、所述第二方向和所述第三方向為不同的方向。
15、可選的,所述通過各所述子處理器分別對相應的所述子數(shù)據(jù)集在第一方向上執(zhí)行一維傅里葉變換,包括:
16、將各所述子處理器中的在第一目標方向上具有相同位置的子數(shù)據(jù)集組裝生成相應的第一臨時全局數(shù)組,并基于各所述第一臨時全局數(shù)組分別對相應的所述子處理器進行邊界數(shù)據(jù)的更新;所述第一目標方向包括所述第二方向和所述第三方向;
17、通過各所述子處理器基于各自更新后的邊界數(shù)據(jù),分別對相應的所述第一臨時全局數(shù)組中的相應子數(shù)據(jù)集在所述第一方向上執(zhí)行一維傅里葉變換;
18、其中,所述第一臨時全局數(shù)組中的相應子數(shù)據(jù)集為所述第一臨時全局數(shù)組中與所述子處理器對應的子數(shù)據(jù)集。
19、可選的,所述通過各所述子處理器分別對相應的所述子數(shù)據(jù)集在第二方向上執(zhí)行一維傅里葉變換,包括:
20、將各所述子處理器中的在第二目標方向上具有相同位置的子數(shù)據(jù)集組裝生成相應的第二臨時全局數(shù)組,并基于各所述第二臨時全局數(shù)組分別對相應的所述子處理器進行邊界數(shù)據(jù)的更新;所述第二目標方向包括所述第一方向和所述第三方向;
21、通過各所述子處理器基于各自更新后的邊界數(shù)據(jù),分別對相應的所述第二臨時全局數(shù)組中的相應子數(shù)據(jù)集在所述第二方向上執(zhí)行一維傅里葉變換;
22、其中,所述第二臨時全局數(shù)組中的相應子數(shù)據(jù)集為所述第二臨時全局數(shù)組中與所述子處理器對應的子數(shù)據(jù)集。
23、可選的,所述通過各所述子處理器分別對相應的所述子數(shù)據(jù)集在第三方向上執(zhí)行一維傅里葉變換,包括:
24、將各所述子處理器中的在第三目標方向上具有相同位置的子數(shù)據(jù)集組裝生成相應的第三臨時全局數(shù)組,并基于各所述第三臨時全局數(shù)組分別對相應的所述子處理器進行邊界數(shù)據(jù)的更新;所述第三目標方向包括所述第一方向和所述第二方向;
25、通過各所述子處理器基于各自更新后的邊界數(shù)據(jù),分別對相應的所述第三臨時全局數(shù)組中的相應子數(shù)據(jù)集在所述第三方向上執(zhí)行一維傅里葉變換;
26、其中,所述第三臨時全局數(shù)組中的相應子數(shù)據(jù)集為所述第三臨時全局數(shù)組中與所述子處理器對應的子數(shù)據(jù)集。
27、可選的,所述臨時全局數(shù)組的生成過程,包括:
28、基于各所述子處理器之間的全局數(shù)據(jù)通信,將各所述子處理器中的在目標方向上具有相同位置的子數(shù)據(jù)集組裝生成相應的臨時全局數(shù)組;
29、其中,所述全局數(shù)據(jù)通信通過調用全局規(guī)約函數(shù)實現(xiàn);所述全局規(guī)約函數(shù)通過將各所述子處理器中的在目標方向上具有相同位置的子數(shù)據(jù)集基于預設操作組裝生成相應的臨時全局數(shù)組,并將各所述臨時全局數(shù)組返回至各所述子處理器中。
30、第二方面,本技術提供了一種三維傅里葉變換加速裝置,應用于中央處理器,包括:
31、數(shù)據(jù)集劃分模塊,用于將待處理三維數(shù)據(jù)集劃分為若干子數(shù)據(jù)集,并將各所述子數(shù)據(jù)集分別分配至各子處理器中;所述子處理器位于所述中央處理器中;
32、傅里葉變換模塊,用于在各所述子處理器分別對相應的所述子數(shù)據(jù)集在三個方向上依次執(zhí)行一維傅里葉變換時,通過各所述子處理器將對相應的所述子數(shù)據(jù)集在任一方向上執(zhí)行一維傅里葉變換的總任務發(fā)送至圖形處理器,以便所述圖形處理器將各所述總任務均分別劃分為若干子任務,并利用自身的若干流處理器分別對所述若干子任務進行并發(fā)執(zhí)行,以及將屬于同一所述總任務的所述若干子任務的并發(fā)執(zhí)行結果進行合并,并將各合并后結果返回至各所述總任務分別對應的所述子處理器以更新所述子處理器中的所述子數(shù)據(jù)集;
33、數(shù)據(jù)集合并模塊,用于若在三個方向上的一維傅里葉變換均執(zhí)行完成,則將各所述子處理器中的當前所述子數(shù)據(jù)集進行合并,以得到目標三維數(shù)據(jù)集。
34、第三方面,本技術提供了一種電子設備,包括:
35、存儲器,用于保存計算機程序;
36、處理器,用于執(zhí)行所述計算機程序以實現(xiàn)前述的三維傅里葉變換加速方法。
37、第四方面,本技術提供了一種計算機可讀存儲介質,用于保存計算機程序,所述計算機程序被處理器執(zhí)行時實現(xiàn)前述的三維傅里葉變換加速方法。
38、本技術中,中央處理器將待處理三維數(shù)據(jù)集劃分為若干子數(shù)據(jù)集,并將各所述子數(shù)據(jù)集分別分配至各子處理器中;所述子處理器位于所述中央處理器中;在各所述子處理器分別對相應的所述子數(shù)據(jù)集在三個方向上依次執(zhí)行一維傅里葉變換時,通過各所述子處理器將對相應的所述子數(shù)據(jù)集在任一方向上執(zhí)行一維傅里葉變換的總任務發(fā)送至圖形處理器,以便所述圖形處理器將各所述總任務均分別劃分為若干子任務,并利用自身的若干流處理器分別對所述若干子任務進行并發(fā)執(zhí)行,以及將屬于同一所述總任務的所述若干子任務的并發(fā)執(zhí)行結果進行合并,并將各合并后結果返回至各所述總任務分別對應的所述子處理器以更新所述子處理器中的所述子數(shù)據(jù)集;若在三個方向上的一維傅里葉變換均執(zhí)行完成,則將各所述子處理器中的當前所述子數(shù)據(jù)集進行合并,以得到目標三維數(shù)據(jù)集。由此可見,本技術利用中央處理器將待處理三維數(shù)據(jù)集劃分為若干子數(shù)據(jù)集,并通過若干子處理器并行對若干子數(shù)據(jù)集在三個方向上依次執(zhí)行一維傅里葉變換,從而通過中央處理器并行處理的特點提高對數(shù)據(jù)集執(zhí)行傅里葉變換的效率;其中,在一個子處理器對一個子數(shù)據(jù)集執(zhí)行一維傅里葉變換時,可以將一維傅里葉變換的總任務劃分為若干子任務,以通過圖形處理器中的若干流處理器并發(fā)執(zhí)行,從而通過圖形處理器并發(fā)執(zhí)行的特點進一步提高對數(shù)據(jù)集執(zhí)行傅里葉變換的效率。進一步的,本技術通過結合數(shù)據(jù)集劃分、在三個方向上依次執(zhí)行一維傅里葉變換、一維傅里葉變換總任務劃分、以及中央處理器并行處理和圖形處理器并發(fā)執(zhí)行,相對于直接對數(shù)據(jù)集執(zhí)行三維傅里葉變換,可以大幅降低傅里葉變換的計算復雜度,以及提高對數(shù)據(jù)集執(zhí)行傅里葉變換的效率,同時通過自主研發(fā)的傅里葉求解方式可以實現(xiàn)對工業(yè)流體軟件的自主可控。