Mmul 4_16_16

top Top: -

par Par: 48 lines

Problem Statement

\(4 \times 16\) 行列 \(A\) と、\(16 \times 16\) 行列 \(B\) に対して、行列積 \(C = A \times B\) (shape:\(4 \times 16\)) を計算してください。\(A,B,C\) のレイアウトは以下のとおりです。

A: (( 4:2), (2:1, 4_PE:1, 2_W:1)) B: ((16:2), (2:1, 4_PE:1, 2_W:1)) C: (( 4:2), (2:1, 4_PE:1, 2_W:1))
\(A, B, C\) の値はこちらです。

A:

[[ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35], [ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51], [ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67], [ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83]]

B:

[[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215], [ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315], [ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415], [ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515], [ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615], [ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715], [ 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815], [ 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915], [1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015], [1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115], [1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215], [1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315], [1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415], [1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515]]

C:
import numpy as np A = np.array([[ 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35], [ 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51], [ 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67], [ 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83]]) B = np.array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], [ 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115], [ 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215], [ 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315], [ 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415], [ 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, 515], [ 600, 601, 602, 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, 615], [ 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715], [ 800, 801, 802, 803, 804, 805, 806, 807, 808, 809, 810, 811, 812, 813, 814, 815], [ 900, 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, 914, 915], [1000,1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1011,1012,1013,1014,1015], [1100,1101,1102,1103,1104,1105,1106,1107,1108,1109,1110,1111,1112,1113,1114,1115], [1200,1201,1202,1203,1204,1205,1206,1207,1208,1209,1210,1211,1212,1213,1214,1215], [1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315], [1400,1401,1402,1403,1404,1405,1406,1407,1408,1409,1410,1411,1412,1413,1414,1415], [1500,1501,1502,1503,1504,1505,1506,1507,1508,1509,1510,1511,1512,1513,1514,1515]]) A @ B

[[364000,364440,364880,365320,365760,366200,366640,367080,367520,367960,368400,368840,369280,369720,370160,370600], [556000,556696,557392,558088,558784,559480,560176,560872,561568,562264,562960,563656,564352,565048,565744,566440], [748000,748952,749904,750856,751808,752760,753712,754664,755616,756568,757520,758472,759424,760376,761328,762280], [940000,941208,942416,943624,944832,946040,947248,948456,949664,950872,952080,953288,954496,955704,956912,958120]]

Explanation

前回の Mmul 4_8_8 と比べ、\(B\) のサイズが \(8\times8\) から \(16\times16\) に変わりました。

前回と同じく、\(B\) を転置したバージョンである Mmul TB 4_16_16 から、\(B\) を転置してから Mmul TB 4_16_16 を行うことで、Accept が取れます。

行列レジスタが $lx$ly の 2 面あることを利用するか、行列 \(B\) $lm[16:80]$lr[16:80] などに別のレジスタを使って転置するなどすると良いでしょう。

レイアウトのおさらい

$lm[16:80] に割り当てられた \(B\) のレイアウト ((16:2), (2:1, 4_PE:1, 2_W:1)) の実際のアドレスを、下の要素から考えていきます。

2_W:1、つまり「1 長語の中に 2 ワード」から、最初の 2 要素 は以下にあることが分かります。

PE0 の $m[16,17] に B[0][0,1]

次は 4_PE:1 なので、今までの塊が 4個、4 PE に跨って配置されます。

PE0 の $m[16,17] に B[0][0,1] PE1 の $m[16,17] に B[0][2,3] PE2 の $m[16,17] に B[0][4,5] PE3 の $m[16,17] に B[0][6,7]

次は 2:1 なので、今までの塊が、2個、1 長語(2単語)の間隔で、(つまり敷き詰められて)配置されます。

PE0 の $m[16,17,18,19] に B[0][0,1,8,9] PE1 の $m[16,17,18,19] に B[0][2,3,10,11] PE2 の $m[16,17,18,19] に B[0][4,5,12,13] PE3 の $m[16,17,18,19] に B[0][6,7,14,15]

次は、(16:2) なので、今までの塊が 16 個、2 長語(4単語)の間隔で、(つまり敷き詰められて)配置されます。

PE0~4 $m[16:20]: B[0][0:16] PE0~4 $m[20:24]: B[1][0:16] PE0~4 $m[24:28]: B[2][0:16] PE0~4 $m[28:32]: B[3][0:16] PE0~4 $m[32:36]: B[4][0:16] PE0~4 $m[36:40]: B[5][0:16] PE0~4 $m[40:44]: B[6][0:16] PE0~4 $m[44:48]: B[7][0:16] PE0~4 $m[48:52]: B[8][0:16] PE0~4 $m[52:56]: B[9][0:16] PE0~4 $m[56:60]: B[10][0:16] PE0~4 $m[60:64]: B[11][0:16] PE0~4 $m[64:68]: B[12][0:16] PE0~4 $m[68:72]: B[13][0:16] PE0~4 $m[72:76]: B[14][0:16] PE0~4 $m[76:80]: B[15][0:16]

さて、B の \(8\times8\) の小ブロックずつ転置を行いたいわけでした。

B[0:8][0:8] のブロックは、以下の場所にあることが分かります

PE0~4 $m[16,17]: B[0][0:8] PE0~4 $m[20,21]: B[1][0:8] PE0~4 $m[24,25]: B[2][0:8] PE0~4 $m[28,29]: B[3][0:8] PE0~4 $m[32,33]: B[4][0:8] ... PE0~4 $m[44:45]: B[7][0:8]

$m[16,17] とは $lm16 のことです。

B[0:4]$lm[16,20,24,28] をまとめて $lm16v4 と表記することができます。

ということで、B[0:8][0:8] は、$lm16v4, $lm32v4 の場所にあります。

同様に、B[0:8][8:16] のブロックは、$lm18v4, $lm34v4 に、

B[8:16][0:8] のブロックは、$lm48v4, $lm64v4 に、

B[8:16][8:16] のブロックは、$lm50v4, $lm66v4 にあります。


デバッグ用出力
d getf $lm16n0c0b0m0 32

で転置する前の $lm[16:80] を表示すると以下の通りになります。

転置前
DEBUG-LM0(n0c0b0m0p0,16):(0, 1) (0x00000000, 0x3f800000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,18):(8, 9) (0x41000000, 0x41100000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,20):(100, 101) (0x42c80000, 0x42ca0000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,22):(108, 109) (0x42d80000, 0x42da0000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,24):(200, 201) (0x43480000, 0x43490000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,26):(208, 209) (0x43500000, 0x43510000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,28):(300, 301) (0x43960000, 0x43968000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,30):(308, 309) (0x439a0000, 0x439a8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,32):(400, 401) (0x43c80000, 0x43c88000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,34):(408, 409) (0x43cc0000, 0x43cc8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,36):(500, 501) (0x43fa0000, 0x43fa8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,38):(508, 509) (0x43fe0000, 0x43fe8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,40):(600, 601) (0x44160000, 0x44164000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,42):(608, 609) (0x44180000, 0x44184000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,44):(700, 701) (0x442f0000, 0x442f4000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,46):(708, 709) (0x44310000, 0x44314000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,48):(800, 801) (0x44480000, 0x44484000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,50):(808, 809) (0x444a0000, 0x444a4000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,52):(900, 901) (0x44610000, 0x44614000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,54):(908, 909) (0x44630000, 0x44634000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,56):(1000, 1001) (0x447a0000, 0x447a4000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,58):(1008, 1009) (0x447c0000, 0x447c4000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,60):(1100, 1101) (0x44898000, 0x4489a000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,62):(1108, 1109) (0x448a8000, 0x448aa000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,64):(1200, 1201) (0x44960000, 0x44962000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,66):(1208, 1209) (0x44970000, 0x44972000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,68):(1300, 1301) (0x44a28000, 0x44a2a000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,70):(1308, 1309) (0x44a38000, 0x44a3a000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,72):(1400, 1401) (0x44af0000, 0x44af2000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,74):(1408, 1409) (0x44b00000, 0x44b02000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,76):(1500, 1501) (0x44bb8000, 0x44bba000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p0,78):(1508, 1509) (0x44bc8000, 0x44bca000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,16):(2, 3) (0x40000000, 0x40400000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,18):(10, 11) (0x41200000, 0x41300000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,20):(102, 103) (0x42cc0000, 0x42ce0000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,22):(110, 111) (0x42dc0000, 0x42de0000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,24):(202, 203) (0x434a0000, 0x434b0000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,26):(210, 211) (0x43520000, 0x43530000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,28):(302, 303) (0x43970000, 0x43978000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,30):(310, 311) (0x439b0000, 0x439b8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,32):(402, 403) (0x43c90000, 0x43c98000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,34):(410, 411) (0x43cd0000, 0x43cd8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,36):(502, 503) (0x43fb0000, 0x43fb8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,38):(510, 511) (0x43ff0000, 0x43ff8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,40):(602, 603) (0x44168000, 0x4416c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,42):(610, 611) (0x44188000, 0x4418c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,44):(702, 703) (0x442f8000, 0x442fc000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,46):(710, 711) (0x44318000, 0x4431c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,48):(802, 803) (0x44488000, 0x4448c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,50):(810, 811) (0x444a8000, 0x444ac000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,52):(902, 903) (0x44618000, 0x4461c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,54):(910, 911) (0x44638000, 0x4463c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,56):(1002, 1003) (0x447a8000, 0x447ac000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,58):(1010, 1011) (0x447c8000, 0x447cc000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,60):(1102, 1103) (0x4489c000, 0x4489e000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,62):(1110, 1111) (0x448ac000, 0x448ae000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,64):(1202, 1203) (0x44964000, 0x44966000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,66):(1210, 1211) (0x44974000, 0x44976000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,68):(1302, 1303) (0x44a2c000, 0x44a2e000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,70):(1310, 1311) (0x44a3c000, 0x44a3e000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,72):(1402, 1403) (0x44af4000, 0x44af6000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,74):(1410, 1411) (0x44b04000, 0x44b06000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,76):(1502, 1503) (0x44bbc000, 0x44bbe000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p1,78):(1510, 1511) (0x44bcc000, 0x44bce000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,16):(4, 5) (0x40800000, 0x40a00000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,18):(12, 13) (0x41400000, 0x41500000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,20):(104, 105) (0x42d00000, 0x42d20000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,22):(112, 113) (0x42e00000, 0x42e20000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,24):(204, 205) (0x434c0000, 0x434d0000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,26):(212, 213) (0x43540000, 0x43550000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,28):(304, 305) (0x43980000, 0x43988000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,30):(312, 313) (0x439c0000, 0x439c8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,32):(404, 405) (0x43ca0000, 0x43ca8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,34):(412, 413) (0x43ce0000, 0x43ce8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,36):(504, 505) (0x43fc0000, 0x43fc8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,38):(512, 513) (0x44000000, 0x44004000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,40):(604, 605) (0x44170000, 0x44174000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,42):(612, 613) (0x44190000, 0x44194000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,44):(704, 705) (0x44300000, 0x44304000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,46):(712, 713) (0x44320000, 0x44324000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,48):(804, 805) (0x44490000, 0x44494000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,50):(812, 813) (0x444b0000, 0x444b4000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,52):(904, 905) (0x44620000, 0x44624000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,54):(912, 913) (0x44640000, 0x44644000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,56):(1004, 1005) (0x447b0000, 0x447b4000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,58):(1012, 1013) (0x447d0000, 0x447d4000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,60):(1104, 1105) (0x448a0000, 0x448a2000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,62):(1112, 1113) (0x448b0000, 0x448b2000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,64):(1204, 1205) (0x44968000, 0x4496a000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,66):(1212, 1213) (0x44978000, 0x4497a000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,68):(1304, 1305) (0x44a30000, 0x44a32000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,70):(1312, 1313) (0x44a40000, 0x44a42000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,72):(1404, 1405) (0x44af8000, 0x44afa000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,74):(1412, 1413) (0x44b08000, 0x44b0a000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,76):(1504, 1505) (0x44bc0000, 0x44bc2000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p2,78):(1512, 1513) (0x44bd0000, 0x44bd2000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,16):(6, 7) (0x40c00000, 0x40e00000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,18):(14, 15) (0x41600000, 0x41700000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,20):(106, 107) (0x42d40000, 0x42d60000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,22):(114, 115) (0x42e40000, 0x42e60000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,24):(206, 207) (0x434e0000, 0x434f0000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,26):(214, 215) (0x43560000, 0x43570000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,28):(306, 307) (0x43990000, 0x43998000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,30):(314, 315) (0x439d0000, 0x439d8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,32):(406, 407) (0x43cb0000, 0x43cb8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,34):(414, 415) (0x43cf0000, 0x43cf8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,36):(506, 507) (0x43fd0000, 0x43fd8000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,38):(514, 515) (0x44008000, 0x4400c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,40):(606, 607) (0x44178000, 0x4417c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,42):(614, 615) (0x44198000, 0x4419c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,44):(706, 707) (0x44308000, 0x4430c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,46):(714, 715) (0x44328000, 0x4432c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,48):(806, 807) (0x44498000, 0x4449c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,50):(814, 815) (0x444b8000, 0x444bc000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,52):(906, 907) (0x44628000, 0x4462c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,54):(914, 915) (0x44648000, 0x4464c000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,56):(1006, 1007) (0x447b8000, 0x447bc000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,58):(1014, 1015) (0x447d8000, 0x447dc000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,60):(1106, 1107) (0x448a4000, 0x448a6000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,62):(1114, 1115) (0x448b4000, 0x448b6000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,64):(1206, 1207) (0x4496c000, 0x4496e000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,66):(1214, 1215) (0x4497c000, 0x4497e000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,68):(1306, 1307) (0x44a34000, 0x44a36000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,70):(1314, 1315) (0x44a44000, 0x44a46000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,72):(1406, 1407) (0x44afc000, 0x44afe000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,74):(1414, 1415) (0x44b0c000, 0x44b0e000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,76):(1506, 1507) (0x44bc4000, 0x44bc6000) #d getf $lm16n0c0b0m0 32 DEBUG-LM0(n0c0b0m0p3,78):(1514, 1515) (0x44bd4000, 0x44bd6000) #d getf $lm16n0c0b0m0 32

$lr[16:80] に転置した行列を入れたとして、

d getf $lr16n0c0b0m0 32

で表示すると、以下の通りになります。

転置後
DEBUG-GREG0(n0c0b0m0p0,16):(0, 100) (0x00000000, 0x42c80000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,18):(800, 900) (0x44480000, 0x44610000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,20):(1, 101) (0x3f800000, 0x42ca0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,22):(801, 901) (0x44484000, 0x44614000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,24):(2, 102) (0x40000000, 0x42cc0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,26):(802, 902) (0x44488000, 0x44618000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,28):(3, 103) (0x40400000, 0x42ce0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,30):(803, 903) (0x4448c000, 0x4461c000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,32):(4, 104) (0x40800000, 0x42d00000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,34):(804, 904) (0x44490000, 0x44620000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,36):(5, 105) (0x40a00000, 0x42d20000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,38):(805, 905) (0x44494000, 0x44624000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,40):(6, 106) (0x40c00000, 0x42d40000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,42):(806, 906) (0x44498000, 0x44628000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,44):(7, 107) (0x40e00000, 0x42d60000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,46):(807, 907) (0x4449c000, 0x4462c000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,48):(8, 108) (0x41000000, 0x42d80000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,50):(808, 908) (0x444a0000, 0x44630000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,52):(9, 109) (0x41100000, 0x42da0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,54):(809, 909) (0x444a4000, 0x44634000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,56):(10, 110) (0x41200000, 0x42dc0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,58):(810, 910) (0x444a8000, 0x44638000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,60):(11, 111) (0x41300000, 0x42de0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,62):(811, 911) (0x444ac000, 0x4463c000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,64):(12, 112) (0x41400000, 0x42e00000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,66):(812, 912) (0x444b0000, 0x44640000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,68):(13, 113) (0x41500000, 0x42e20000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,70):(813, 913) (0x444b4000, 0x44644000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,72):(14, 114) (0x41600000, 0x42e40000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,74):(814, 914) (0x444b8000, 0x44648000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,76):(15, 115) (0x41700000, 0x42e60000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p0,78):(815, 915) (0x444bc000, 0x4464c000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,16):(200, 300) (0x43480000, 0x43960000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,18):(1000, 1100) (0x447a0000, 0x44898000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,20):(201, 301) (0x43490000, 0x43968000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,22):(1001, 1101) (0x447a4000, 0x4489a000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,24):(202, 302) (0x434a0000, 0x43970000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,26):(1002, 1102) (0x447a8000, 0x4489c000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,28):(203, 303) (0x434b0000, 0x43978000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,30):(1003, 1103) (0x447ac000, 0x4489e000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,32):(204, 304) (0x434c0000, 0x43980000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,34):(1004, 1104) (0x447b0000, 0x448a0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,36):(205, 305) (0x434d0000, 0x43988000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,38):(1005, 1105) (0x447b4000, 0x448a2000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,40):(206, 306) (0x434e0000, 0x43990000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,42):(1006, 1106) (0x447b8000, 0x448a4000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,44):(207, 307) (0x434f0000, 0x43998000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,46):(1007, 1107) (0x447bc000, 0x448a6000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,48):(208, 308) (0x43500000, 0x439a0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,50):(1008, 1108) (0x447c0000, 0x448a8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,52):(209, 309) (0x43510000, 0x439a8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,54):(1009, 1109) (0x447c4000, 0x448aa000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,56):(210, 310) (0x43520000, 0x439b0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,58):(1010, 1110) (0x447c8000, 0x448ac000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,60):(211, 311) (0x43530000, 0x439b8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,62):(1011, 1111) (0x447cc000, 0x448ae000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,64):(212, 312) (0x43540000, 0x439c0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,66):(1012, 1112) (0x447d0000, 0x448b0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,68):(213, 313) (0x43550000, 0x439c8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,70):(1013, 1113) (0x447d4000, 0x448b2000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,72):(214, 314) (0x43560000, 0x439d0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,74):(1014, 1114) (0x447d8000, 0x448b4000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,76):(215, 315) (0x43570000, 0x439d8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p1,78):(1015, 1115) (0x447dc000, 0x448b6000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,16):(400, 500) (0x43c80000, 0x43fa0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,18):(1200, 1300) (0x44960000, 0x44a28000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,20):(401, 501) (0x43c88000, 0x43fa8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,22):(1201, 1301) (0x44962000, 0x44a2a000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,24):(402, 502) (0x43c90000, 0x43fb0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,26):(1202, 1302) (0x44964000, 0x44a2c000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,28):(403, 503) (0x43c98000, 0x43fb8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,30):(1203, 1303) (0x44966000, 0x44a2e000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,32):(404, 504) (0x43ca0000, 0x43fc0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,34):(1204, 1304) (0x44968000, 0x44a30000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,36):(405, 505) (0x43ca8000, 0x43fc8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,38):(1205, 1305) (0x4496a000, 0x44a32000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,40):(406, 506) (0x43cb0000, 0x43fd0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,42):(1206, 1306) (0x4496c000, 0x44a34000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,44):(407, 507) (0x43cb8000, 0x43fd8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,46):(1207, 1307) (0x4496e000, 0x44a36000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,48):(408, 508) (0x43cc0000, 0x43fe0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,50):(1208, 1308) (0x44970000, 0x44a38000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,52):(409, 509) (0x43cc8000, 0x43fe8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,54):(1209, 1309) (0x44972000, 0x44a3a000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,56):(410, 510) (0x43cd0000, 0x43ff0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,58):(1210, 1310) (0x44974000, 0x44a3c000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,60):(411, 511) (0x43cd8000, 0x43ff8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,62):(1211, 1311) (0x44976000, 0x44a3e000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,64):(412, 512) (0x43ce0000, 0x44000000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,66):(1212, 1312) (0x44978000, 0x44a40000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,68):(413, 513) (0x43ce8000, 0x44004000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,70):(1213, 1313) (0x4497a000, 0x44a42000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,72):(414, 514) (0x43cf0000, 0x44008000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,74):(1214, 1314) (0x4497c000, 0x44a44000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,76):(415, 515) (0x43cf8000, 0x4400c000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p2,78):(1215, 1315) (0x4497e000, 0x44a46000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,16):(600, 700) (0x44160000, 0x442f0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,18):(1400, 1500) (0x44af0000, 0x44bb8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,20):(601, 701) (0x44164000, 0x442f4000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,22):(1401, 1501) (0x44af2000, 0x44bba000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,24):(602, 702) (0x44168000, 0x442f8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,26):(1402, 1502) (0x44af4000, 0x44bbc000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,28):(603, 703) (0x4416c000, 0x442fc000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,30):(1403, 1503) (0x44af6000, 0x44bbe000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,32):(604, 704) (0x44170000, 0x44300000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,34):(1404, 1504) (0x44af8000, 0x44bc0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,36):(605, 705) (0x44174000, 0x44304000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,38):(1405, 1505) (0x44afa000, 0x44bc2000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,40):(606, 706) (0x44178000, 0x44308000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,42):(1406, 1506) (0x44afc000, 0x44bc4000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,44):(607, 707) (0x4417c000, 0x4430c000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,46):(1407, 1507) (0x44afe000, 0x44bc6000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,48):(608, 708) (0x44180000, 0x44310000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,50):(1408, 1508) (0x44b00000, 0x44bc8000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,52):(609, 709) (0x44184000, 0x44314000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,54):(1409, 1509) (0x44b02000, 0x44bca000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,56):(610, 710) (0x44188000, 0x44318000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,58):(1410, 1510) (0x44b04000, 0x44bcc000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,60):(611, 711) (0x4418c000, 0x4431c000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,62):(1411, 1511) (0x44b06000, 0x44bce000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,64):(612, 712) (0x44190000, 0x44320000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,66):(1412, 1512) (0x44b08000, 0x44bd0000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,68):(613, 713) (0x44194000, 0x44324000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,70):(1413, 1513) (0x44b0a000, 0x44bd2000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,72):(614, 714) (0x44198000, 0x44328000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,74):(1414, 1514) (0x44b0c000, 0x44bd4000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,76):(615, 715) (0x4419c000, 0x4432c000) #d getf $lr16n0c0b0m0 32 DEBUG-GREG0(n0c0b0m0p3,78):(1415, 1515) (0x44b0e000, 0x44bd6000) #d getf $lr16n0c0b0m0 32

転置を行う VSM (2/4)

以下の VSM で、\(B\) の上半分を転置し、\(lr[16:80]\) の同じレイアウトの行列範囲の左半分に値を格納できます。

gmwrite $lm16v4 $ly0 gmwrite $lm32v4 $ly4 gmread $ly0 $lr16v4 gmread $ly4 $lr32v4 gmwrite $lm18v4 $ly0 gmwrite $lm34v4 $ly4 gmread $ly0 $lr48v4 gmread $ly4 $lr64v4

Inputs

Outputs

Testcases

testcase.vsm

Submission

ログイン / 新規登録