petsc 矩陣測試

2021-06-19 07:26:27 字數 1648 閱讀 7798

第乙個petsc矩陣測試:

static char help = " matrix parallel partition test\n\n";

#include int main(int argc, char **args)

if(i < n - 1)

if(j > 0)

if(j < n - 1)

} matassemblybegin(a,mat_final_assembly);

matassemblyend(a, mat_final_assembly);

petscprintf(petsc_comm_world, "matrix output\n");

matview(a,petsc_viewer_stdout_world);

matdestroy(a);

petscfinalize();

return 0;

}

petsc中矩陣按行劃分分給各節點,對每個節點中的矩陣子塊進行賦值。

輸出矩陣:

row 0: (1, 1)  (4, 1) 

row 1: (0, 1)  (2, 1)  (5, 1) 

row 2: (1, 1)  (3, 1)  (6, 1) 

row 3: (2, 1)  (7, 1) 

row 4: (0, 1)  (5, 1)  (8, 1) 

row 5: (1, 1)  (4, 1)  (6, 1)  (9, 1) 

row 6: (2, 1)  (5, 1)  (7, 1)  (10, 1) 

row 7: (3, 1)  (6, 1)  (11, 1) 

row 8: (4, 1)  (9, 1)  (12, 1) 

row 9: (5, 1)  (8, 1)  (10, 1)  (13, 1) 

row 10: (6, 1)  (9, 1)  (11, 1)  (14, 1) 

row 11: (7, 1)  (10, 1)  (15, 1) 

row 12: (8, 1)  (13, 1) 

row 13: (9, 1)  (12, 1)  (14, 1) 

row 14: (10, 1)  (13, 1)  (15, 1)

row 15: (11, 1)  (14, 1) 

注意:首先,matgetownershiprange 和 matsetvalue 之後,任何乙個cpu節點實際上是可以修改不屬於它自身「管轄」範圍內矩陣元素的。其中的資料通訊,屬於petsc封裝(省了麻煩)。 

本例中給值的矩陣元素 pattern 如下:

(i, j+1)

(i-1 , j)                 (i + 1, j)

(i, j-1)

if (i > 0) 語句完成了對當前元素(i,j ) 正下方鄰接元素(i, j -1) 的賦值;

if (i < n - 1) 語句對 (i, j +1) 賦值。

同理,其他。

這樣就形成了「條狀」矩陣元素帶。顯然,對於本程式用了4 cpu節點(按行劃分),即整體矩陣的每四行屬於乙個節點。 對當前cpu節點(比如p0),顯然不僅僅對整體「帶狀矩陣」的前四行相關位置賦值了,而是所有滿足if條件的位置,不管該位置是不是在當前cpu節點管轄範圍內。

矩陣 浮點運算測試報告

1 使用d3dxmatrixmultiply進行矩陣相乘 2 使用優化的4元數演算法模擬矩陣相乘 相乘的結果與1相同 3 最笨的辦法計算矩陣相乘 要算64個乘法 48個加法 以及若干賦值 4 使用sse彙編計算矩陣相乘 要算64個乘法 48個加法 以及若干賦值 5 使用xmmintrin指令集計算矩...

晶元測試矩陣的相關計算

問題描述 有n 2 n 20 塊晶元,有好有壞,已知好晶元比壞晶元多。每個晶元都能用來測試其他晶元。用好晶元測試其他晶元時,能正確給出被測試晶元是好還是壞。而用壞晶元測試其他晶元時,會隨機給出好或是壞的測試結果 即此結果與被測試晶元實際的好壞無關 給出所有晶元的測試結果,問哪些晶元是好晶元。輸入格式...

汽車功能測試 開關矩陣選型

作為乙個非標功能測試領域的 資深 人士,工作以來接觸到各種各樣的汽車功能測試平台。其中涉及到很多開關矩陣,這些開關矩陣功能類似,但設計則不同。其中一些設計則相當精彩。下面列舉其中主要的幾種並做比較。1,keysight ts8900 這個平台設計得相當精彩。其中主要是e8782a和e8783a兩張矩...