System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及工業流體領域,特別涉及一種三維傅里葉變換加速方法、裝置、設備及介質。
技術介紹
1、隨著gpu(graphics?processing?unit,圖形處理器)硬件技術的發展(比cpu(central?processing?unit,中央處理器)硬件快100-1000倍),相應的各類工業流體軟件以及其他基于求解偏微分方程的工業軟件也亟待升級。大多數工業軟件都需要求解fourier(傅里葉)數學變換問題,但是現有的大多工業軟件都依賴于開源的數學庫或者是商業代碼,這對于自主可控工業軟件是很大的風險。并且,fourier(傅里葉)求解器被廣泛應用于各類工業軟件中,其基本原理并不復雜,但是直接使用教科書的原理編寫的fourier求解器,由于其天文數字的計算復雜度,使其根本無法應用到工業領域,如何降低傅里葉變換的計算復雜度也是目前有待解決的問題。
技術實現思路
1、有鑒于此,本專利技術的目的在于提供一種三維傅里葉變換加速方法、裝置、設備及介質,能夠通過cpu并行和gpu并發,降低傅里葉變換的計算復雜度,實現對工業流體軟件的自主可控。其具體方案如下:
2、第一方面,本申請提供了一種三維傅里葉變換加速方法,應用于中央處理器,包括:
3、將待處理三維數據集劃分為若干子數據集,并將各所述子數據集分別分配至各子處理器中;所述子處理器位于所述中央處理器中;
4、在各所述子處理器分別對相應的所述子數據集在三個方向上依次執行一維傅里葉變換時,通過各所述子處理器
5、若在三個方向上的一維傅里葉變換均執行完成,則將各所述子處理器中的當前所述子數據集進行合并,以得到目標三維數據集。
6、可選的,所述將待處理三維數據集劃分為若干子數據集,包括:
7、獲取所述待處理三維數據集分別在三個方向上的預設網格點數,以及所述中央處理器分別在三個方向上的預設并行數量;
8、基于同一方向上的所述預設網格點數和所述預設并行數量確定與所述同一方向對應的目標劃分數量;
9、利用與三個方向分別對應的所述目標劃分數量將所述待處理三維數據集劃分為所述若干子數據集。
10、可選的,所述各所述子處理器分別對相應的所述子數據集在三個方向上依次執行一維傅里葉變換的過程,包括:
11、通過各所述子處理器分別對相應的所述子數據集在第一方向上執行一維傅里葉變換;
12、在所述第一方向上的一維傅里葉變換執行完成以及各所述子處理器中的所述子數據集均更新完成后,通過各所述子處理器分別對相應的所述子數據集在第二方向上執行一維傅里葉變換;
13、在所述第二方向上的一維傅里葉變換執行完成以及各所述子處理器中的所述子數據集均更新完成后,通過各所述子處理器分別對相應的所述子數據集在第三方向上執行一維傅里葉變換;
14、其中,所述第一方向、所述第二方向和所述第三方向為不同的方向。
15、可選的,所述通過各所述子處理器分別對相應的所述子數據集在第一方向上執行一維傅里葉變換,包括:
16、將各所述子處理器中的在第一目標方向上具有相同位置的子數據集組裝生成相應的第一臨時全局數組,并基于各所述第一臨時全局數組分別對相應的所述子處理器進行邊界數據的更新;所述第一目標方向包括所述第二方向和所述第三方向;
17、通過各所述子處理器基于各自更新后的邊界數據,分別對相應的所述第一臨時全局數組中的相應子數據集在所述第一方向上執行一維傅里葉變換;
18、其中,所述第一臨時全局數組中的相應子數據集為所述第一臨時全局數組中與所述子處理器對應的子數據集。
19、可選的,所述通過各所述子處理器分別對相應的所述子數據集在第二方向上執行一維傅里葉變換,包括:
20、將各所述子處理器中的在第二目標方向上具有相同位置的子數據集組裝生成相應的第二臨時全局數組,并基于各所述第二臨時全局數組分別對相應的所述子處理器進行邊界數據的更新;所述第二目標方向包括所述第一方向和所述第三方向;
21、通過各所述子處理器基于各自更新后的邊界數據,分別對相應的所述第二臨時全局數組中的相應子數據集在所述第二方向上執行一維傅里葉變換;
22、其中,所述第二臨時全局數組中的相應子數據集為所述第二臨時全局數組中與所述子處理器對應的子數據集。
23、可選的,所述通過各所述子處理器分別對相應的所述子數據集在第三方向上執行一維傅里葉變換,包括:
24、將各所述子處理器中的在第三目標方向上具有相同位置的子數據集組裝生成相應的第三臨時全局數組,并基于各所述第三臨時全局數組分別對相應的所述子處理器進行邊界數據的更新;所述第三目標方向包括所述第一方向和所述第二方向;
25、通過各所述子處理器基于各自更新后的邊界數據,分別對相應的所述第三臨時全局數組中的相應子數據集在所述第三方向上執行一維傅里葉變換;
26、其中,所述第三臨時全局數組中的相應子數據集為所述第三臨時全局數組中與所述子處理器對應的子數據集。
27、可選的,所述臨時全局數組的生成過程,包括:
28、基于各所述子處理器之間的全局數據通信,將各所述子處理器中的在目標方向上具有相同位置的子數據集組裝生成相應的臨時全局數組;
29、其中,所述全局數據通信通過調用全局規約函數實現;所述全局規約函數通過將各所述子處理器中的在目標方向上具有相同位置的子數據集基于預設操作組裝生成相應的臨時全局數組,并將各所述臨時全局數組返回至各所述子處理器中。
30、第二方面,本申請提供了一種三維傅里葉變換加速裝置,應用于中央處理器,包括:
31、數據集劃分模塊,用于將待處理三維數據集劃分為若干子數據集,并將各所述子數據集分別分配至各子處理器中;所述子處理器位于所述中央處理器中;
32、傅里葉變換模塊,用于在各所述子處理器分別對相應的所述子數據集在三個方向上依次執行一維傅里葉變換時,通過各所述子處理器將對相應的所述子數據集在任一方向上執行一維傅里葉變換的總任務發送至圖形處理器,以便所述圖形處理器將各所述總任務均分別劃分為若干子任務,并利用自身的若干流處理器分別對所述若干子任務進行并發執行,以及將屬于同一所述總任務的所述若干子任務的并發執行結果進行合并,并將各合并后結果返回至各所述總任務分別對應的所述子處理器以更新所述子處理器中的所述子數據集;
33、數據集合并模塊,用于若在三個方向上的一維傅里葉變換均執行完成,則將各所述子處理器中的本文檔來自技高網...
【技術保護點】
1.一種三維傅里葉變換加速方法,其特征在于,應用于中央處理器,包括:
2.根據權利要求1所述的三維傅里葉變換加速方法,其特征在于,所述將待處理三維數據集劃分為若干子數據集,包括:
3.根據權利要求1所述的三維傅里葉變換加速方法,其特征在于,所述各所述子處理器分別對相應的所述子數據集在三個方向上依次執行一維傅里葉變換的過程,包括:
4.根據權利要求3所述的三維傅里葉變換加速方法,其特征在于,所述通過各所述子處理器分別對相應的所述子數據集在第一方向上執行一維傅里葉變換,包括:
5.根據權利要求3所述的三維傅里葉變換加速方法,其特征在于,所述通過各所述子處理器分別對相應的所述子數據集在第二方向上執行一維傅里葉變換,包括:
6.根據權利要求3所述的三維傅里葉變換加速方法,其特征在于,所述通過各所述子處理器分別對相應的所述子數據集在第三方向上執行一維傅里葉變換,包括:
7.根據權利要求4至6任一項所述的三維傅里葉變換加速方法,其特征在于,所述臨時全局數組的生成過程,包括:
8.一種三維傅里葉變換加速裝置,其
9.一種電子設備,其特征在于,包括:
10.一種計算機可讀存儲介質,其特征在于,用于保存計算機程序,所述計算機程序被處理器執行時實現如權利要求1至7任一項所述的三維傅里葉變換加速方法。
...【技術特征摘要】
1.一種三維傅里葉變換加速方法,其特征在于,應用于中央處理器,包括:
2.根據權利要求1所述的三維傅里葉變換加速方法,其特征在于,所述將待處理三維數據集劃分為若干子數據集,包括:
3.根據權利要求1所述的三維傅里葉變換加速方法,其特征在于,所述各所述子處理器分別對相應的所述子數據集在三個方向上依次執行一維傅里葉變換的過程,包括:
4.根據權利要求3所述的三維傅里葉變換加速方法,其特征在于,所述通過各所述子處理器分別對相應的所述子數據集在第一方向上執行一維傅里葉變換,包括:
5.根據權利要求3所述的三維傅里葉變換加速方法,其特征在于,所述通過各所述子處理器分別對相應的...
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。