第乙個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兩張矩...