Improved Efficiency + Added Matrix Scalar functions

This commit is contained in:
felsabbagh3
2019-03-19 16:37:49 -04:00
parent cae4247343
commit 1892feefbf
7 changed files with 2186 additions and 1565 deletions

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,13 +1,13 @@
:0200000480007A :0200000480007A
:1000000013054000731005021305800073101502DC :1000000013054000731005021305800073101502DC
:10001000731040F17310103037F1FF7FEF0080193B :10001000731040F17310103037F1FF7FEF0080193B
:10002000EF10C01173000000938B0600130D070042 :10002000EF10C06D73000000938B0600130D0700E6
:10003000130F01009303050013051000635C7500A6 :10003000130F01009303050013051000635C7500A6
:1000400013010180130305006B5003001305150015 :1000400013010180130305006B5003001305150015
:100050006FF0DFFE13010F0013050000930F060081 :100050006FF0DFFE13010F0013050000930F060081
:10006000938D0300EBE0BF01170500001305051B8E :10006000938D0300EBE0BF01170500001305051B8E
:100070006B40050017030000130343FB6B000300F4 :100070006B40050017030000130343FB6B000300F4
:1000800067800000170200011302022323200200F0 :1000800067800000170200011302022623200200ED
:100090002322120023242200232632002328420098 :100090002322120023242200232632002328420098
:1000A000232A5200232C6200232E72002320820276 :1000A000232A5200232C6200232E72002320820276
:1000B000232292022324A2022326B2022328C20270 :1000B000232292022324A2022326B2022328C20270
@@ -16,7 +16,7 @@
:1000E000232A5205232C6205232E72052320820722 :1000E000232A5205232C6205232E72052320820722
:1000F000232292072324A2072326B2072328C2071C :1000F000232292072324A2072326B2072328C2071C
:10010000232AD207232CE207232EF2071302100022 :10010000232AD207232CE207232EF2071302100022
:1001100067800000170200011302021A0320020088 :1001100067800000170200011302021D0320020085
:1001200083204200032182008321C20003220201B6 :1001200083204200032182008321C20003220201B6
:1001300083224201032382018323C201032402029A :1001300083224201032382018323C201032402029A
:1001400083244202032582028325C202032602037E :1001400083244202032582028325C202032602037E
@@ -28,20 +28,20 @@
:1001A000678000007325000267800000732510023D :1001A000678000007325000267800000732510023D
:1001B00067800000130101FE232E1100232C810013 :1001B00067800000130101FE232E1100232C810013
:1001C00013040102232604FE6F0000030327C4FE6C :1001C00013040102232604FE6F0000030327C4FE6C
:1001D0009307404C3307F702B707008193874733F3 :1001D0009307404C3307F702B707008193874736F0
:1001E000B307F70013850700EF0040418327C4FEE3 :1001E000B307F70013850700EF0040408327C4FEE4
:1001F000938717002326F4FE0327C4FE930770009D :1001F000938717002326F4FE0327C4FE930770009D
:10020000E3D6E7FC130000008320C1010324810131 :10020000E3D6E7FC130000008320C1010324810131
:100210001301010267800000130101FD2326110272 :100210001301010267800000130101FD2326110272
:10022000232481022322A1031304010313070D00D9 :10022000232481022322A1031304010313070D00D9
:100230009307404C3307F702B70700819387473392 :100230009307404C3307F702B7070081938747368F
:10024000B307F70013850700EF00804C9307050004 :10024000B307F70013850700EF00804B9307050005
:10025000638A070213070D00B707008113172700F1 :10025000638A070213070D00B707008113172700F1
:1002600093874729B307F7001307100023A0E7007F :100260009387472CB307F7001307100023A0E7007C
:1002700093070D0063960700EFF0DFE96F0080053C :1002700093070D0063960700EFF0DFE96F0080053C
:100280007300000013070D009307404C3307F7027B :100280007300000013070D009307404C3307F7027B
:10029000B707008193874733B307F700130784FD3F :10029000B707008193874736B307F700130784FD3C
:1002A0009305070013850700EF00003E832704FE37 :1002A0009305070013850700EF00003D832704FE38
:1002B000138107008327C4FD832584FD032644FEA4 :1002B000138107008327C4FD832584FD032644FEA4
:1002C000832684FE0327C4FE13850700EFF0DFD5E5 :1002C000832684FE0327C4FE13850700EFF0DFD5E5
:1002D000730000008320C10203248102032D410228 :1002D000730000008320C10203248102032D410228
@@ -49,309 +49,390 @@
:1002F0002324810413040105EFF0DFEA2324A4FE84 :1002F0002324810413040105EFF0DFEA2324A4FE84
:1003000093090100930710002326F4FE6F004008B4 :1003000093090100930710002326F4FE6F004008B4
:100310000327C4FE9307404C3307F702B707008159 :100310000327C4FE9307404C3307F702B707008159
:1003200093874733B307F70013850700EF00403E7C :1003200093874736B307F70013850700EF00403D7A
:1003300093070500639807040327C4FE9307404C06 :1003300093070500639807040327C4FE9307404C06
:100340003307F702B707008193874733B307F700F6 :100340003307F702B707008193874736B307F700F3
:10035000130704FD9305070013850700EF00C03263 :10035000130704FD9305070013850700EF00C03164
:10036000832784FD13810700832744FD832504FD33 :10036000832784FD13810700832744FD832504FD33
:100370000326C4FD832604FE032744FE13850700DD :100370000326C4FD832604FE032744FE13850700DD
:10038000EFF05FCF8327C4FE938717002326F4FE88 :10038000EFF05FCF8327C4FE938717002326F4FE88
:100390008327C4FE032784FEE3ECE7F613810900FC :100390008327C4FE032784FEE3ECE7F613810900FC
:1003A000EFF05FCE9307020063880704B707008170 :1003A000EFF05FCE9307020063880704B707008170
:1003B00013854733EF00C03593070500639E07029E :1003B00013854736EF00C03493070500639E07029C
:1003C000930784FB93850700B707008113854733A4 :1003C000930784FB93850700B707008113854736A1
:1003D000EF00802B832704FC138107008327C4FBD5 :1003D000EF00802A832704FC138107008327C4FBD6
:1003E000832584FB032644FC832684FC0327C4FC6A :1003E000832584FB032644FC832684FC0327C4FC6A
:1003F00013850700EFF05FC3130000008320C104E2 :1003F00013850700EFF05FC3130000008320C104E2
:10040000032481041301010567800000130101FB2F :10040000032481041301010567800000130101FB2F
:10041000232611042324810413040105232EA4FAA6 :10041000232611042324810413040105232EA4FAA6
:10042000232CB4FA232AC4FA2328D4FAEFF09FD855 :10042000232CB4FA232AC4FA2328D4FAEFF09FD855
:10043000EFF05FD72322A4FE832544FEB707008197 :10043000EFF05FD72322A4FE13090100232604FE58
:1004400013850704EF00C03F13090100232604FEB3 :10044000232404FE6F00C008B709FFFF3301310108
:10045000232404FE6F00C008B709FFFF33013101F8 :10045000832784FE2326F4FC832784FB2328F4FCD3
:10046000832784FE2326F4FC832784FB2328F4FCC3 :1004600093070100232AF4FC832744FB232CF4FC8C
:1004700093070100232AF4FC832744FB232CF4FC7C :10047000832704FB232EF4FC8327C4FE2320F4FEF1
:10048000832704FB232EF4FC8327C4FE2320F4FEE1 :100480000327C4FE9307404C3307F702B7070081E8
:100490000327C4FE9307404C3307F702B7070081D8 :1004900093874736B307F7001307C4FC930507009B
:1004A00093874733B307F7001307C4FC930507008E :1004A00013850700EF00C0168327C4FE938717004B
:1004B00013850700EF00C0168327C4FE938717003B :1004B0002326F4FE8327C4FE032744FE63E4E700FB
:1004C0002326F4FE8327C4FE032744FE63E4E700EB :1004C000232604FE832784FE938717002324F4FE4B
:1004D000232604FE832784FE938717002324F4FE3B :1004D000032784FE8327C4FBE368F7F613010900B2
:1004E000032784FE8327C4FBE368F7F613010900A2 :1004E000EFF09FE0130000008320C1040324810487
:1004F000EFF09FDF130000008320C1040324810478 :1004F0001301010567800000130101FD232611028D
:100500001301010567800000130101FD232611027C :100500002324810213040103232EA4FCEFF09FC9CE
:100510002324810213040103232EA4FCEFF09FC8BF :100510002320A4FE232604FE6F004005232604FEAC
:100520002320A4FE232604FE6F004005232604FE9C :10052000232404FE6F00C003B7070081032784FE65
:10053000232404FE6F00C003B7070081032784FE55 :10053000131727009387472CB307F70003A707007B
:100540001317270093874729B307F70003A707006E :10054000930710006318F7008327C4FE93871700F2
:10055000930710006318F7008327C4FE93871700E2 :100550002326F4FE832784FE938717002324F4FECA
:100560002326F4FE832784FE938717002324F4FEBA :10056000832784FE032704FEE3E0E7FC0327C4FEA1
:10057000832784FE032704FEE3E0E7FC0327C4FE91 :100570008327C4FDE314F7FA232204FE6F008002F0
:100580008327C4FDE314F7FA232204FE6F008002E0 :10058000B7070081032744FE131727009387472CE2
:10059000B7070081032744FE1317270093874729D5 :10059000B307F70023A00700832744FE93871700C3
:1005A000B307F70023A00700832744FE93871700B3 :1005A0002322F4FE832744FE032704FEE3EAE7FC4C
:1005B0002322F4FE832744FE032704FEE3EAE7FC3C :1005B000130000008320C102032481021301010300
:1005C000130000008320C1020324810213010103F0 :1005C00067800000130101FF2326810023247101AD
:1005D00067800000130101FF23268100232471019D :1005D0001304010193870B00138507000324C10056
:1005E0001304010193870B00138507000324C10046 :1005E000832B810013010101678000009302050045
:1005F000832B810013010101678000009302050035 :1005F000130300009303700023A0620023A2620093
:10060000130300009303700023A0620023A2620082 :1006000023A4620023A6720023A862006780000072
:1006100023A4620023A6720023A862006780000062 :100610009302050003A382001303130023A46200C6
:100620009302050003A382001303130023A46200B6 :100620001383420183AE420093935E003303730051
:100630001383420183AE420093935E003303730041 :1006300003AE05002320C30103AE45002322C301FE
:1006400003AE05002320C30103AE45002322C301EE :1006400003AE85002324C30103AEC5002326C301E6
:1006500003AE85002324C30103AEC5002326C301D6 :1006500003AE05012328C30103AE4501232AC301CC
:1006600003AE05012328C30103AE4501232AC301BC :10066000938E1E00130F20036394EE01930E00007F
:10067000938E1E00130F20036394EE01930E00006F :1006700023A2D201678000009302050003A3820039
:1006800023A2D201678000009302050003A3820029 :100680001303F3FF23A462001383420183AE02002D
:100690001303F3FF23A462001383420183AE02001D :10069000930F2003138F0E00130F1F006314FF012D
:1006A000930F2003138F0E00130F1F006314FF011D :1006A000130F000023A0E20193935E003303730055
:1006B000130F000023A0E20193935E003303730045 :1006B000032E030023A0C501032E430023A2C5017E
:1006C000032E030023A0C501032E430023A2C5016E :1006C000032E830023A4C501032EC30023A6C50166
:1006D000032E830023A4C501032EC30023A6C50156 :1006D000032E030123A8C501032E430123AAC5014C
:1006E000032E030123A8C501032E430123AAC5013C :1006E000678000009302050003A382001305000049
:1006F000678000009302050003A382001305000039 :1006F000130E200363146E001305150067800000BD
:10070000130E200363146E001305150067800000AC :100700009302050003A3820013050000130E0000EE
:100710009302050003A3820013050000130E0000DE :1007100063146E0013051500678000009302050046
:1007200063146E0013051500678000009302050036 :1007200003A3C20083A3020133B563006780000006
:1007300003A3C20083A3020133B5630067800000F6 :10073000130141FF232011002322B100834505004E
:10074000130141FF232011002322B100834505003E :1007400063880500EF00C001130515006FF01FFF5F
:1007500063880500EF00C001130515006FF01FFF4F :1007500083200100832541001301C1006780000050
:1007600083200100832541001301C1006780000040 :10076000B708010023A0B80067800000130101FD55
:10077000B708010023A0B80067800000130101FD45 :10077000232611022324810213040103232EA4FC47
:10078000232611022324810213040103232EA4FC37 :100780000327C4FD9307F00063E4E702B707008185
:100790000327C4FD9307F00063E4E702B707008175 :100790000327C4FD1317270093874720B307F700EB
:1007A0000327C4FD131727009387471DB307F700DE :1007A00083A7070013850700EFF09FF86F0040074D
:1007B00083A7070013850700EFF09FF86F0040073D :1007B000930700022326F4FEA30504FE8327C4FE4C
:1007C000930700022326F4FEA30504FE8327C4FE3C :1007C0009387C7FF0327C4FDB357F70093F7F700DC
:1007D0009387C7FF0327C4FDB357F70093F7F700CC :1007D0002322F4FE832744FE63860700930710005C
:1007E0002322F4FE832744FE63860700930710004C :1007E000A305F4FE8347B4FE63820702B7070081C6
:1007F000A305F4FE8347B4FE63820702B7070081B6 :1007F000032744FE1317270093874720B307F7000A
:10080000032744FE131727009387471DB307F700FC :1008000083A7070013850700EFF09FF28327C4FE3C
:1008100083A7070013850700EFF09FF28327C4FE2C :100810009387C7FF2326F4FE8327C4FEE340F0FA44
:100820009387C7FF2326F4FE8327C4FEE340F0FA34 :100820008320C102032481021301010367800000B9
:100830008320C102032481021301010367800000A9 :10083000130101FE232E1100232C81001304010259
:10084000130101FE232E1100232C81001304010249 :100840002326A4FE2324B4FE0325C4FEEFF05FEEAE
:100850002326A4FE2324B4FE0325C4FEEFF05FEE9E :10085000032584FEEFF09FF1B70700811385070899
:10086000032584FEEFF09FF1B70700811385870908 :10086000EFF01FED130000008320C101032481017C
:10087000EFF01FED130000008320C101032481016C :100870001301010267800000130101FD232611020C
:100880001301010267800000130101FD23261102FC :100880002324810213040103232EA4FC232CB4FC93
:100890002324810213040103232EA4FC232CB4FC83 :10089000232AC4FC2328D4FCB73700810327C4FDD6
:1008A000232AC4FC2328D4FCB73700810327C4FDC6 :1008A00023A2E79AB73700819387479A032784FDED
:1008B00023AAE796B737008193874797032784FDDC :1008B00023A2E700B73700819387479A032744FDB7
:1008C00023A2E700B737008193874797032744FDAA :1008C00023A4E700B73700819387479A032704FDE5
:1008D00023A4E700B737008193874797032704FDD8 :1008D00023A6E700EFF09F8D2324A4FE032704FD49
:1008E00023A6E700EFF09F8C2324A4FE032704FD3A :1008E000832784FEB357F7022326F4FE032704FD73
:1008F000832784FEB357F7022326F4FE032704FD63 :1008F000832784FEB377F702638807008327C4FE4B
:10090000832784FEB377F702638807008327C4FE3A :10090000938717002326F4FE8325C4FEB7070081D2
:10091000938717002326F4FE8325C4FEB7070081C2 :100910001385470CEFF0DFF1B73700819387479AD3
:100920001385C70DEFF0DFF1B73700819387479745 :100920000327C4FE23A8E700032704FD832784FED2
:100930000327C4FE23A8E700032704FD832784FEC2 :100930006362F702B73700819386479AB717008042
:100940006362F702B737008193864797B717008035 :100940001386C79A832584FE032504FDEFF01FACB0
:100950001386C79B832584FE032504FDEFF01FABA0 :100950006F000002B73700819386479AB71700806F
:100960006F000002B737008193864797B717008062 :100960001386C79A832504FD032504FDEFF01FAA13
:100970001386C79B832504FD032504FDEFF01FA903 :10097000EFF05F832322A4FE032704FD832744FEB8
:10098000EFF05F822322A4FE032704FD832744FEA9 :1009800063F8E700032544FEEFF01FB76F00C000D7
:1009900063F8E700032544FEEFF01FB76F00C000C7 :10099000032504FDEFF05FB6130000008320C102C1
:1009A000032504FDEFF05FB6130000008320C102B1 :1009A000032481021301010367800000130101FA8F
:1009B000032481021301010367800000130101FA7F :1009B000232E1104232C8104130401062326A4FAF8
:1009C000232E1104232C8104130401062326A4FAE8 :1009C0002324B4FAEFF01FC0232CA4FC832784FD5A
:1009D0002324B4FAEFF01FC0232CA4FC832784FD4A :1009D00083A70700232AF4FC832784FD83A747000D
:1009E00083A70700232AF4FC832784FD83A74700FD :1009E0002328F4FC832784FD83A787002326F4FCB7
:1009F0002328F4FC832784FD83A787002326F4FCA7 :1009F000832784FD83A707012326F4FE0327C4FE73
:100A0000832784FD83A707012326F4FE0327C4FE62 :100A00008327C4FAB307F7022324F4FE8327C4FE26
:100A10008327C4FAB307F7022324F4FE8327C4FE16 :100A1000639A0700930710002326F4FE8327C4FA85
:100A2000639A0700930710002326F4FE8327C4FA75 :100A20002324F4FE832784FD83A7C7002324F4FC3A
:100A30002324F4FE832784FD83A7C7002324F4FC2A :100A3000232204FE6F004012232004FE232E04FC18
:100A4000232204FE6F004012232004FE232E04FC08 :100A40006F008007032784FA832784FCB307F7022B
:100A50006F008007032784FA832784FCB307F7021B :100A50000327C4FDB307F7002322F4FC032784FC1B
:100A60000327C4FDB307F7002322F4FC032784FC0B :100A60008327C4FDB307F702032784FEB307F7000B
:100A70008327C4FDB307F702032784FEB307F700FB :100A70002320F4FC832744FC93972700032744FD9D
:100A80002320F4FC832744FC93972700032744FD8D :100A8000B307F70003A70700832704FC9397270009
:100A9000B307F70003A70700832704FC93972700F9 :100A9000832604FDB387F60083A70700B307F70298
:100AA000832604FDB387F60083A70700B307F70288 :100AA000032704FEB307F7002320F4FE8327C4FDC9
:100AB000032704FEB307F7002320F4FE8327C4FDB9 :100AB00093871700232EF4FC0327C4FD832784FCAF
:100AC00093871700232EF4FC0327C4FD832784FC9F :100AC000E362F7F8032784FA832784FC3307F702ED
:100AD000E362F7F8032784FA832784FC3307F702DD :100AD000832784FEB307F700232EF4FA032784FE4E
:100AE000832784FEB307F700232EF4FA032784FE3E :100AE000832784FCB337F70093F7F70F232CF4FA2E
:100AF000832784FCB337F70093F7F70F232CF4FA1E :100AF000832784FB93B71700A30BF4FA834774FB97
:100B0000832784FB93B71700A30BF4FA834774FB86 :100B0000138F0700B7170080938F47B46B200F0037
:100B1000138F0700B7170080938F47B56B200F0026 :100B10007B70FF018327C4FB939727000327C4FC46
:100B20007B70FF018327C4FB939727000327C4FC36 :100B2000B307F700032704FE23A0E700832784FE12
:100B3000B307F700032704FE23A0E700832784FE02 :100B3000938717002324F4FEB7170080138E87B421
:100B4000938717002324F4FEB7170080138E87B510 :100B400067000E00130000006B300000832744FE96
:100B500067000E00130000006B300000832744FE86 :100B5000938717002322F4FE832744FE0327C4FE55
:100B6000938717002322F4FE832744FE0327C4FE45 :100B6000E3ECE7EC130000008320C10503248105BA
:100B7000E3ECE7EC130000008320C10503248105AA :100B70001301010667800000130101FC232E1102FE
:100B80001301010667800000130101FC232E1102EE :100B8000232C810213040104232EA4FC232CB4FC87
:100B9000232C810213040104232EA4FC232CB4FC77 :100B9000232AC4FC2328D4FC2326E4FCB737008195
:100BA000232AC4FC2328D4FC2326E4FCB737008185 :100BA0000327C4FD23ACE79AB73700819387879B5F
:100BB0000327C4FD23A4E798B7370081938787985C :100BB000032784FD23A2E700B73700819387879B33
:100BC000032784FD23A2E700B73700819387879826 :100BC000032744FD23A4E700B73700819387879B61
:100BD000032744FD23A4E700B73700819387879854 :100BD0000327C4FC23A6E700B73700819387879BD0
:100BE0000327C4FC23A6E700B737008193878798C3 :100BE000032704FD23A8E700EFF04FDC2324A4FE35
:100BF000032704FD23A8E700EFF04FDB2324A4FE26 :100BF0000327C4FC832784FEB357F7022326F4FEA1
:100C00000327C4FC832784FEB357F7022326F4FE90 :100C00000327C4FC832784FEB377F70263880700B9
:100C10000327C4FC832784FEB377F70263880700A9 :100C10008327C4FE938717002326F4FEB73700818D
:100C20008327C4FE938717002326F4FEB73700817D :100C20009387879B0327C4FE23AAE7000327C4FCFE
:100C3000938787980327C4FE23AAE7000327C4FCF1 :100C3000832784FE6362F702B73700819386879B20
:100C4000832784FE6362F702B73700819386879813 :100C4000B7170080138607CB832584FE032504FD98
:100C5000B7170080138607CC832584FE032504FD87 :100C5000EFF0CFFB6F000002B73700819386879BD0
:100C6000EFF0CFFA6F000002B737008193868798C4 :100C6000B7170080138607CB8325C4FC032504FD3A
:100C7000B7170080138607CC8325C4FC032504FD29 :100C7000EFF0CFF9EFF00FD32322A4FE032704FDFA
:100C8000EFF0CFF8EFF00FD22322A4FE032704FDEC :100C8000832744FE63F8E700032544FEEFF0DF8688
:100C9000832744FE63F8E700032544FEEFF0DF8678 :100C90006F00C000032504FDEFF01F861300000065
:100CA0006F00C000032504FDEFF01F861300000055 :100CA0008320C10303248103130101046780000032
:100CB0008320C10303248103130101046780000022 :100CB000130101FB232611042324810413040105DD
:100CC000130101FB232611042324810413040105CD :100CC000232EA4FA232CB4FAEFF0DF8F2320A4FE06
:100CD000232EA4FA232CB4FAEFF0DF8F2320A4FEF6 :100CD000832704FE83A70700232EF4FC832704FE4A
:100CE000832704FE83A70700232EF4FC832704FE3A :100CE00083A74700232CF4FC832704FE83A78700F7
:100CF00083A74700232CF4FC832704FE83A78700E7 :100CF000232AF4FC832704FE83A747012326F4FE5E
:100D0000232AF4FC832704FE83A747012326F4FE4D :100D00000327C4FE8327C4FBB307F7022324F4FEA2
:100D10000327C4FE8327C4FBB307F7022324F4FE92 :100D10008327C4FE639A0700930710002326F4FE7E
:100D20008327C4FE639A0700930710002326F4FE6E :100D20008327C4FB2324F4FE832704FE83A7C70084
:100D30008327C4FB2324F4FE832704FE83A7C70074 :100D30002328F4FC232204FE6F00000C032784FB0D
:100D40002328F4FC232204FE6F00000C032784FBFD :100D4000832704FD3307F702832784FEB307F700E8
:100D5000832704FD3307F702832784FEB307F700D8 :100D50002326F4FC032784FE832704FDB337F70022
:100D60002326F4FC032784FE832704FDB337F70012 :100D600093F7F70F2324F4FC832784FC93B7170031
:100D700093F7F70F2324F4FC832784FC93B7170021 :100D7000A303F4FC834774FC138F0700B7170080AC
:100D8000A303F4FC834774FC138F0700B71700809C :100D8000938F47DE6B200F007B70FF018327C4FC2D
:100D9000938F47DF6B200F007B70FF018327C4FC1C :100D9000939727000327C4FDB307F70083A6070036
:100DA000939727000327C4FDB307F70083A6070026 :100DA0008327C4FC93972700032784FDB307F7002C
:100DB0008327C4FC93972700032784FDB307F7001C :100DB00003A707008327C4FC93972700032644FD5D
:100DC00003A707008327C4FC93972700032644FD4D :100DC000B307F6003387E60023A0E700832784FEFD
:100DD000B307F6003387E60023A0E700832784FEED :100DD000938717002324F4FEB7170080138E87DE55
:100DE000938717002324F4FEB7170080138E87DF44 :100DE00067000E00130000006B300000832744FEF4
:100DF00067000E00130000006B300000832744FEE4 :100DF000938717002322F4FE832744FE0327C4FEB3
:100E0000938717002322F4FE832744FE0327C4FEA2 :100E0000E3EEE7F2130000008320C1040324810411
:100E1000E3EEE7F2130000008320C1040324810401 :100E10001301010567800000130101FC232E11025C
:100E20001301010567800000130101FC232E11024C :100E2000232C810213040104232EA4FC232CB4FCE4
:100E3000232C810213040104232EA4FC232CB4FCD4 :100E3000232AC4FC2328D4FC2326E4FCB7370081F2
:100E4000232AC4FC2328D4FC2326E4FCB7370081E2 :100E40000327C4FD23ACE79AB73700819387879BBC
:100E50000327C4FD23A4E798B737008193878798B9 :100E5000032784FD23A2E700B73700819387879B90
:100E6000032784FD23A2E700B73700819387879883 :100E6000032744FD23A4E700B73700819387879BBE
:100E7000032744FD23A4E700B737008193878798B1 :100E70000327C4FC23A6E700B73700819387879B2D
:100E80000327C4FC23A6E700B73700819387879820 :100E8000032704FD23A8E700EFF04FB22324A4FEBC
:100E9000032704FD23A8E700EFF04FB12324A4FEAD :100E90000327C4FC832784FEB357F7022326F4FEFE
:100EA0000327C4FC832784FEB357F7022326F4FEEE :100EA0000327C4FC832784FEB377F7026388070017
:100EB0000327C4FC832784FEB377F7026388070007 :100EB0008327C4FE938717002326F4FEB7370081EB
:100EC0008327C4FE938717002326F4FEB7370081DB :100EC0009387879B0327C4FE23AAE7000327C4FC5C
:100ED000938787980327C4FE23AAE7000327C4FC4F :100ED000832784FE6362F702B73700819386879B7E
:100EE000832784FE6362F702B73700819386879871 :100EE000B7170080138607F5832584FE032504FDCC
:100EF000B7170080138607F6832584FE032504FDBB :100EF000EFF0CFD16F000002B73700819386879B58
:100F0000EFF0CFD06F000002B7370081938687984B :100F0000B7170080138607F58325C4FC032504FD6D
:100F1000B7170080138607F68325C4FC032504FD5C :100F1000EFF0CFCFEFF00FA92322A4FE032704FDAB
:100F2000EFF0CFCEEFF00FA82322A4FE032704FD9D :100F2000832744FE63F8E700032544FEEFF0CFDC9F
:100F3000832744FE63F8E700032544FEEFF0CFDC8F :100F30006F00C000032504FDEFF00FDC130000007C
:100F40006F00C000032504FDEFF00FDC130000006C :100F40008320C1030324810313010104678000008F
:100F50008320C1030324810313010104678000007F :100F5000130101FB2326110423248104130401053A
:100F6000130101FB2326110423248104130401052A :100F6000232EA4FA232CB4FAEFF0CFE52320A4FE1D
:100F7000232EA4FA232CB4FAEFF0CFE52320A4FE0D :100F7000832704FE83A70700232EF4FC832704FEA7
:100F8000832704FE83A70700232EF4FC832704FE97 :100F800083A74700232CF4FC832704FE83A7870054
:100F900083A74700232CF4FC832704FE83A7870044 :100F9000232AF4FC832704FE83A747012326F4FEBB
:100FA000232AF4FC832704FE83A747012326F4FEAB :100FA0000327C4FE8327C4FBB307F7022324F4FE00
:100FB0000327C4FE8327C4FBB307F7022324F4FEF0 :100FB0008327C4FE639A0700930710002326F4FEDC
:100FC0008327C4FE639A0700930710002326F4FECC :100FC0008327C4FB2324F4FE832704FE83A7C700E2
:100FD0008327C4FB2324F4FE832704FE83A7C700D2 :100FD0002328F4FC232204FE6F00000C032784FB6B
:100FE0002328F4FC232204FE6F00000C032784FB5B :100FE000832704FD3307F702832784FEB307F70046
:100FF000832704FD3307F702832784FEB307F70036 :100FF0002326F4FC032784FE832704FDB337F70080
:101000002326F4FC032784FE832704FDB337F7006F :1010000093F7F70F2324F4FC832784FC93B717008E
:1010100093F7F70F2324F4FC832784FC93B717007E :10101000A303F4FC834774FC138F0700B717008009
:10102000A303F4FC834774FC138F0700B7170080F9 :10102000938F47086B200F007B70FF018327C4FC60
:10103000938F47096B200F007B70FF018327C4FC4F :10103000939727000327C4FDB307F70083A6070093
:10104000939727000327C4FDB307F70083A6070083 :101040008327C4FC93972700032784FDB307F70089
:101050008327C4FC93972700032784FDB307F70079 :1010500003A707008327C4FC93972700032644FDBA
:1010600003A707008327C4FC93972700032644FDAA :10106000B307F6003387E64023A0E700832784FE1A
:10107000B307F6003387E64023A0E700832784FE0A :10107000938717002324F4FEB7170080138E870888
:10108000938717002324F4FEB7170080138E870977 :1010800067000E00130000006B300000832744FE51
:1010900067000E00130000006B300000832744FE41 :10109000938717002322F4FE832744FE0327C4FE10
:1010A000938717002322F4FE832744FE0327C4FE00 :1010A000E3EEE7F2130000008320C104032481046F
:1010B000E3EEE7F2130000008320C104032481045F :1010B0001301010567800000130101FC232E1102BA
:1010C0001301010567800000130101FE232E81003A :1010C000232C810213040104232EA4FC232CB4FC42
:1010D00013040102232604FE6F008004B737008149 :1010D000232AC4FC2328D4FC2326E4FCB737008150
:1010E0000327C4FE131727009387079AB307F70057 :1010E0000327C4FD23A8E79CB73700819387079D9A
:1010F0001307300023A0E700B74700810327C4FE91 :1010F000032784FD23A2E700B73700819387079D6C
:10110000131727009387079AB307F70013072000E8 :10110000032744FD23A4E700B73700819387079D99
:1011100023A0E7008327C4FE938717002326F4FE4D :101110000327C4FC23A6E700B73700819387079D08
:101120000327C4FE9307F00FE3DAE7FA1300000089 :10112000032704FD23A8E700EFF04F882324A4FE43
:101130000324C1011301010267800000130101FEB5 :101130000327C4FC832784FEB357F7022326F4FE5B
:10114000232E1100232C810013040102EFF0DFF79E :101140000327C4FC832784FEB377F7026388070074
:1011500093060001B75700811386079AB7470081AD :101150008327C4FE938717002326F4FEB737008148
:101160009385079AB73700811385079AEFF0CFF17F :101160009387079D0327C4FE23AAE7000327C4FC37
:10117000B707008113858712EFF08FDCB707008176 :10117000832784FE6362F702B73700819386079D59
:1011800013854714EFF0CFDB232604FE6F004005E4 :10118000B71700801386071F832584FE032504FDFF
:101190008327C4FE93F7F70063980700B707008121 :10119000EFF0CFA76F000002B73700819386079D5D
:1011A00013850715EFF0CFD9B75700810327C4FE89 :1011A000B71700801386071F8325C4FC032504FDA1
:1011B000131727009387079AB307F70083A7070041 :1011B000EFF0CFA5EFE01FFF2322A4FE032704FDDD
:1011C00013850700EFF08FDBB70700811385471504 :1011C000832744FE63F8E700032544FEEFF0CFB227
:1011D000EFF00FD78327C4FE938717002326F4FE72 :1011D0006F00C000032504FDEFF00FB21300000004
:1011E0000327C4FE9307F00FE3D4E7FAB7070081A3 :1011E0008320C103032481031301010467800000ED
:1011F00013858715EFF0CFD4130700019306000184 :1011F000130101FB23261104232481041304010598
:10120000B75700811386079AB74700819385079ADD :10120000232EA4FA232CB4FAEFF0CFBB2320A4FEA4
:10121000B73700811385079AEFF01F97B707008152 :10121000832704FE83A70700232EF4FC832704FE04
:1012200013858712EFF0CFD1B70700811385C71759 :1012200083A7470083A70700232CF4FC832704FE31
:10123000EFF00FD1232404FE6F004005832784FEC6 :1012300083A78700232AF4FC832704FE83A74701A2
:1012400093F7F70063980700B70700811385071528 :101240002326F4FE0327C4FE8327C4FBB307F7025B
:10125000EFF00FCFB7570081032784FE1317270045 :101250002324F4FE8327C4FE639A0700930710003B
:101260009387079AB307F70083A707001385070042 :101260002326F4FE8327C4FB2324F4FE832704FEF5
:10127000EFF0CFD0B707008113854715EFF04FCCC3 :1012700083A7C7002328F4FC232204FE6F00000B81
:10128000832784FE938717002324F4FE032784FE1C :10128000032784FB832704FD3307F702832784FEAB
:101290009307F00FE3D4E7FAB707008113858715AA :10129000B307F7002326F4FC032784FE832704FD0D
:1012A000EFF00FCA1307000193060001B757008142 :1012A000B337F70093F7F70F2324F4FC832784FC6C
:1012B0001386079AB74700819385079AB73700814D :1012B00093B71700A303F4FC834774FC138F070054
:1012C0001385079AEFF05FB6B70700811385871281 :1012C000B7170080938F87316B200F007B70FF0171
:1012D000EFF00FC7B707008113858718EFF04FC6EF :1012D0008327C4FC939727000327C4FDB307F700B7
:1012E000232204FE6F004005832744FE93F7F70096 :1012E00083A607008327C4FC93972700032744FDA8
:1012F00063980700B707008113850715EFF04FC407 :1012F000B307F700032784FD3387E60023A0E70048
:10130000B7570081032744FE131727009387079AD6 :10130000832784FE938717002324F4FEB7170080F9
:10131000B307F70083A7070013850700EFF00FC698 :10131000138EC73167000E00130000006B30000011
:10132000B707008113854715EFF08FC1832744FE6F :10132000832744FE938717002322F4FE832744FE7D
:10133000938717002322F4FE032744FE9307F00F40 :101330000327C4FEE3E6E7F4130000008320C104A2
:10134000E3D4E7FAB707008113858715EFF04FBFA5 :10134000032481041301010567800000130101FCDF
:1013500093070000138507008320C1010324810146 :10135000232E1102232C810213040104232EA4FC4A
:08136000130101026780000087 :10136000232CB4FC232AC4FC2328D4FC2326E4FC2D
:10137000B73700810327C4FD23A8E79CB737008156
:101380009387079D032784FD23A2E700B7370081D9
:101390009387079D032744FD23A4E700B737008107
:1013A0009387079D0327C4FC23A6E700B737008176
:1013B0009387079D032704FD23A8E700EFE01FDFC5
:1013C0002324A4FE0327C4FC832784FEB357F7021B
:1013D0002326F4FE0327C4FC832784FEB377F70299
:1013E000638807008327C4FE938717002326F4FE33
:1013F000B73700819387079D0327C4FE23AAE70020
:101400000327C4FC832784FE6362F702B737008199
:101410009386079DB717008013864748832584FE6F
:10142000032504FDEFE09FFE6F000002B737008147
:101430009386079DB7170080138647488325C4FC11
:10144000032504FDEFE09FFCEFE0DFD52322A4FE9F
:10145000032704FD832744FE63F8E700032544FEC9
:10146000EFF08F896F00C000032504FDEFF0CF88F7
:10147000130000008320C10303248103130101042E
:1014800067800000130101FB23261104232481043B
:1014900013040105232EA4FA232CB4FAEFF08F9243
:1014A0002320A4FE832704FE83A70700232EF4FC39
:1014B000832704FE83A7470083A70700232CF4FC9F
:1014C000832704FE83A78700232AF4FC832704FED6
:1014D00083A747012326F4FE0327C4FE8327C4FB0A
:1014E000B307F7022324F4FE8327C4FE639A0700A0
:1014F000930710002326F4FE8327C4FB2324F4FE65
:10150000832704FE83A7C7002328F4FC232204FEBC
:101510006F00000B032784FB832704FD3307F702CA
:10152000832784FEB307F7002326F4FC032784FEF9
:10153000832704FDB337F70093F7F70F2324F4FC58
:10154000832784FC93B71700A303F4FC834774FC40
:10155000138F0700B7170080938FC75A6B200F00B7
:101560007B70FF018327C4FC939727000327C4FDEA
:10157000B307F70083A607008327C4FC93972700CF
:10158000032744FDB307F700032784FD3387E602F2
:1015900023A0E700832784FE938717002324F4FE0B
:1015A000B7170080138E075B67000E001300000062
:1015B0006B300000832744FE938717002322F4FE3C
:1015C000832744FE0327C4FEE3E6E7F4130000008C
:1015D0008320C104032481041301010567800000F6
:1015E000130101FE232E810013040102232604FEB1
:1015F0006F008004B73700810327C4FE131727004C
:101600009387879EB307F7001307300023A0E700F6
:10161000B74700810327C4FE131727009387879ECF
:10162000B307F7001307200023A0E7008327C4FEB9
:10163000938717002326F4FE0327C4FE9307F00FB9
:10164000E3DAE7FA130000000324C10113010102E9
:1016500067800000130101FD23261102232481026B
:1016600013040103232EA4FCB7070081138507117F
:10167000EFF00F8C232604FE6F0080058327C4FE45
:10168000638E07008327C4FE93F7F7006398070073
:10169000B707008113854713EFF08F898327C4FEB6
:1016A000939727000327C4FDB307F70083A707001C
:1016B00013850700EFF08F8BB70700811385871321
:1016C000EFF00F878327C4FE938717002326F4FECD
:1016D0000327C4FE9307F00FE3D2E7FAB7070081B0
:1016E0001385C713EFF0CF84130000008320C102DD
:1016F000032481021301010367800000130101FE2E
:10170000232E1100232C810013040102EFF05FED62
:1017100093060001B75700811386879EB747008163
:101720009385879EB73700811385879EEFF0CF940E
:10173000B707008113850716EFE09FFFB7570081B9
:101740001385879EEFF01FF1130700019306000138
:10175000B75700811386879EB74700819385879E80
:10176000B73700811385879EEFF00FC1B70700815F
:101770001385C717EFE0DFFBB75700811385879EFE
:10178000EFF05FED1307000193060001B7570081EA
:101790001386879EB74700819385879EB737008160
:1017A0001385879EEFF04FE7B70700811385071970
:1017B000EFE01FF8B75700811385879EEFF09FE990
:1017C000930730002326F4FE9305C4FE130700019F
:1017D00093060001B75700811386879EB757008193
:1017E0001385879EEFF05F8DB70700811385871AF9
:1017F000EFE01FF4B75700811385879EEFF09FE558
:101800009305C4FE1307000193060001B75700813A
:101810001386879EB75700811385879EEFF01FB30D
:10182000B70700811385871AEFE09FF0B757008153
:101830001385879EEFF01FE29307000013850700D2
:101840008320C1010324810113010102678000008C
:02000004810079 :02000004810079
:10000000300000003100000032000000330000002A :10000000300000003100000032000000330000002A
:10001000340000003500000036000000370000000A :10001000340000003500000036000000370000000A
:10002000380000003900000061000000620000009C :10002000380000003900000061000000620000009C
:10003000630000006400000065000000660000002E :10003000630000006400000065000000660000002E
:100040004E756D20617661696C61626C65207761C7 :1000400030000000310000003200000033000000EA
:100050007270733A20000000300000003100000090 :1000500034000000350000003600000037000000CA
:1000600032000000330000003400000035000000C2 :10006000380000003900000061000000620000005C
:1000700036000000370000003800000039000000A2 :1000700063000000640000006500000066000000EE
:1000800061000000620000006300000064000000E6 :100080000A000000300000003100000032000000D3
:1000900065000000660000000A000000300000005B :10009000330000003400000035000000360000008E
:1000A0003100000032000000330000003400000086 :1000A0003700000038000000390000006100000047
:1000B0003500000036000000370000003800000066 :1000B00062000000630000006400000065000000B2
:1000C00039000000610000006200000063000000D1 :1000C000660000004F66667365743A200000000009
:1000D0006400000065000000660000004F66667363 :1000D000300000003100000032000000330000005A
:1000E00065743A200000000030000000310000007C :1000E000340000003500000036000000370000003A
:1000F0003200000033000000340000003500000032 :1000F00038000000390000006100000062000000CC
:100100003600000037000000380000003900000011 :10010000630000006400000065000000660000005D
:100110006100000062000000630000006400000055 :100110002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0F
:1001200065000000660000002D2D2D2D2D2D2D2D9C :100120002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0A22
:100130002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DEF :10013000000000000A000000200000000A2D2D2D04
:100140002D0A000046494E414C204D41540A000002 :100140002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DDF
:100150000A000000200000000A2D2D2D2D2D2D2D30 :100150002D2D2D2D2D2D2D2D2D2D2D2D0A00000079
:100160002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DBF :100160000A0A4D6174726978206D756C7469706CDF
:100170002D2D2D2D2D2D2D2D0A00000046494E41EF :1001700069636174696F6E0A000000000A0A4D61CC
:100180004C204144440A000046494E414C205375DE :1001800074726978204164646974696F6E0A000052
:03019000620A0000 :100190000A0A4D61747269782053756274726163E2
:100194000000008104000081080000810C0000813F :1001A00074696F6E0A0000000A0A4D617472697802
:1001A4001000008114000081180000811C000081EF :1001B00020456C656D656E74204164646974696F77
:1001B4002000008124000081280000812C0000819F :0301C0006E0A00C4
:1001C4003000008134000081380000813C0000814F :1001C4000000008104000081080000810C0000810F
:1001D400580000815C00008160000081640000819F :1001D4001000008114000081180000811C000081BF
:1001E400680000816C00008170000081740000814F :1001E4002000008124000081280000812C0000816F
:1001F400780000817C0000818000008184000081FF :1001F4003000008134000081380000813C0000811F
:10020400880000818C0000819000008194000081AE :100204004000008144000081480000814C000081CE
:100214009C000081A0000081A4000081A80000814E :100214005000008154000081580000815C0000817E
:10022400AC000081B0000081B4000081B8000081FE :100224006000008164000081680000816C0000812E
:10023400BC000081C0000081C4000081C8000081AE :100234007000008174000081780000817C000081DE
:10024400CC000081D0000081D4000081D80000815E :1002440084000081880000818C000081900000817E
:10025400E8000081EC000081F0000081F4000081DE :1002540094000081980000819C000081A00000812E
:10026400F8000081FC00008100010081040100818C :10026400A4000081A8000081AC000081B0000081DE
:10027400080100810C01008110010081140100813A :10027400B4000081B8000081BC000081C00000818E
:10028400180100811C0100812001008124010081EA :10028400D0000081D4000081D8000081DC0000810E
:10029400E0000081E4000081E8000081EC000081BE
:1002A400F0000081F4000081F8000081FC0000816E
:1002B4000001008104010081080100810C0100811A
:040000058000000077 :040000058000000077
:00000001FF :00000001FF

View File

@@ -268,5 +268,172 @@ void _vx_mat_sub(unsigned tid, unsigned wid)
static mat_e_arg_t mat_e_args;
// --------------------------------------------------------------
void _vx_e_mat_add(unsigned, unsigned);
void vx_e_mat_add(void * x, void * scal, void * z, unsigned num_rows, unsigned num_cols)
{
mat_e_args.x = x;
mat_e_args.scal = scal;
mat_e_args.z = z;
mat_e_args.num_cols = num_cols;
mat_e_args.num_rows = num_rows;
unsigned num_avail_threads = vx_available_threads();
unsigned off = (num_cols/num_avail_threads);
if ((num_cols%num_avail_threads) != 0)
{
off += 1;
}
mat_e_args.offset = off;
if (num_cols >= num_avail_threads)
{
vx_spawnWarps(num_rows, num_avail_threads, _vx_e_mat_add, (void *) (&mat_e_args));
}
else
{
vx_spawnWarps(num_rows, num_cols, _vx_e_mat_add, (void *) (&mat_e_args));
}
unsigned num_avail_warps = vx_available_warps();
if (num_rows > num_avail_warps)
{
vx_wait_for_warps(num_avail_warps);
}
else
{
vx_wait_for_warps(num_rows);
}
}
void _vx_e_mat_add(unsigned tid, unsigned wid)
{
// vx_print_str("*");
// for (int z = 0; z < ((wid * 1000) + 1000); z++);
mat_e_arg_t * args = (mat_e_arg_t *) vx_get_arg_struct();
unsigned * x_ptr = args->x;
unsigned scal = *((unsigned *) args->scal);
unsigned * z_ptr = args->z;
unsigned off = args->offset;
unsigned i_index = off * tid;
if (off == 0)
{
off = 1;
i_index = tid;
}
unsigned num_cols = args->num_cols;
for (int iter = 0; iter < off; ++iter)
{
int final_i = (wid * num_cols) + i_index;
unsigned cond = i_index < num_cols;
__if(cond)
{
z_ptr[final_i] = x_ptr[final_i] + scal;
i_index++;
}
__else
__end_if
}
return;
}
void _vx_e_mat_mult(unsigned, unsigned);
void vx_e_mat_mult(void * x, void * scal, void * z, unsigned num_rows, unsigned num_cols)
{
mat_e_args.x = x;
mat_e_args.scal = scal;
mat_e_args.z = z;
mat_e_args.num_cols = num_cols;
mat_e_args.num_rows = num_rows;
unsigned num_avail_threads = vx_available_threads();
unsigned off = (num_cols/num_avail_threads);
if ((num_cols%num_avail_threads) != 0)
{
off += 1;
}
mat_e_args.offset = off;
if (num_cols >= num_avail_threads)
{
vx_spawnWarps(num_rows, num_avail_threads, _vx_e_mat_mult, (void *) (&mat_e_args));
}
else
{
vx_spawnWarps(num_rows, num_cols, _vx_e_mat_mult, (void *) (&mat_e_args));
}
unsigned num_avail_warps = vx_available_warps();
if (num_rows > num_avail_warps)
{
vx_wait_for_warps(num_avail_warps);
}
else
{
vx_wait_for_warps(num_rows);
}
}
void _vx_e_mat_mult(unsigned tid, unsigned wid)
{
// vx_print_str("*");
// for (int z = 0; z < ((wid * 1000) + 1000); z++);
mat_e_arg_t * args = (mat_e_arg_t *) vx_get_arg_struct();
unsigned * x_ptr = args->x;
unsigned scal = *((unsigned *) args->scal);
unsigned * z_ptr = args->z;
unsigned off = args->offset;
unsigned i_index = off * tid;
if (off == 0)
{
off = 1;
i_index = tid;
}
unsigned num_cols = args->num_cols;
for (int iter = 0; iter < off; ++iter)
{
int final_i = (wid * num_cols) + i_index;
unsigned cond = i_index < num_cols;
__if(cond)
{
z_ptr[final_i] = x_ptr[final_i] * scal;
i_index++;
}
__else
__end_if
}
return;
}

View File

@@ -6,9 +6,9 @@
typedef struct typedef struct
{ {
unsigned * x; void * x;
unsigned * y; void * y;
unsigned * z; void * z;
unsigned mat_dim; unsigned mat_dim;
unsigned offset; unsigned offset;
@@ -16,20 +16,40 @@ typedef struct
void vx_sq_mat_mult(void *, void *, void *, unsigned); void vx_sq_mat_mult(void *, void *, void *, unsigned);
// --------------------------------------------------------------------------
typedef struct typedef struct
{ {
unsigned * x; void * x;
unsigned * y; void * y;
unsigned * z; void * z;
unsigned num_cols; unsigned num_cols;
unsigned num_rows; unsigned num_rows;
unsigned offset; unsigned offset;
} mat_r_arg_t; } mat_r_arg_t;
// -------------------------- Matrix Addition -------------------------- // -------------------------- Matrix Addition -----------------------------
void vx_mat_add(void *, void *, void *, unsigned, unsigned); void vx_mat_add(void *, void *, void *, unsigned, unsigned);
// -------------------------- Matrix Subtraction -------------------------- // -------------------------- Matrix Subtraction --------------------------
void vx_mat_sub(void *, void *, void *, unsigned, unsigned); void vx_mat_sub(void *, void *, void *, unsigned, unsigned);
// -----------------------------------------------------------------------
typedef struct
{
void * x;
void * scal;
void * z;
unsigned num_cols;
unsigned num_rows;
unsigned offset;
} mat_e_arg_t;
// -------------------------- Matrix element Addition ------------------
void vx_e_mat_add(void *, void *, void *, unsigned, unsigned);
// -------------------------- Matrix element Addition ------------------
void vx_e_mat_mult(void *, void *, void *, unsigned, unsigned);

View File

@@ -19,6 +19,18 @@ void initialize_mats()
} }
} }
void print_matrix(unsigned * z)
{
vx_print_str("-------------------------------\n");
for (int j = 0; j < (MAT_DIM * MAT_DIM); j++)
{
if (j!=0) if ((j % MAT_DIM) == 0) vx_print_str("\n");
vx_print_hex(z[j]);
vx_print_str(" ");
}
vx_print_str("\n-------------------------------\n");
}
int main() int main()
{ {
@@ -26,44 +38,32 @@ int main()
// matrix multiplication // matrix multiplication
vx_sq_mat_mult(x, y, z, MAT_DIM); vx_sq_mat_mult(x, y, z, MAT_DIM);
vx_print_str("-------------------------\n"); vx_print_str("\n\nMatrix multiplication\n");
vx_print_str("FINAL MAT\n"); print_matrix(z);
for (int j = 0; j < (MAT_DIM * MAT_DIM); j++)
{
if ((j % MAT_DIM) == 0) vx_print_str("\n");
vx_print_hex(z[j]);
vx_print_str(" ");
}
vx_print_str("\n-------------------------------\n");
// matrix addition // matrix addition
vx_mat_add(x, y, z, NUM_ROWS, NUM_COLS); vx_mat_add(x, y, z, NUM_ROWS, NUM_COLS);
vx_print_str("-------------------------\n"); vx_print_str("\n\nMatrix Addition\n");
vx_print_str("FINAL ADD\n"); print_matrix(z);
for (int j = 0; j < (NUM_COLS * NUM_ROWS); j++)
{
if ((j % NUM_COLS) == 0) vx_print_str("\n");
vx_print_hex(z[j]);
vx_print_str(" ");
}
vx_print_str("\n-------------------------------\n");
// matrix sub // matrix sub
vx_mat_sub(x, y, z, NUM_ROWS, NUM_COLS); vx_mat_sub(x, y, z, NUM_ROWS, NUM_COLS);
vx_print_str("-------------------------\n"); vx_print_str("\n\nMatrix Subtraction\n");
vx_print_str("FINAL Sub\n"); print_matrix(z);
for (int j = 0; j < (NUM_COLS * NUM_ROWS); j++) unsigned scal = 3;
{
if ((j % NUM_COLS) == 0) vx_print_str("\n"); // matrix element add
vx_print_hex(z[j]); vx_e_mat_add(z, &scal, z, NUM_ROWS, NUM_COLS);
vx_print_str(" "); vx_print_str("\n\nMatrix Element Addition\n");
} print_matrix(z);
vx_print_str("\n-------------------------------\n");
// matrix element add
vx_e_mat_mult(z, &scal, z, NUM_ROWS, NUM_COLS);
vx_print_str("\n\nMatrix Element Addition\n");
print_matrix(z);
return 0; return 0;

View File

@@ -89,7 +89,7 @@ void vx_spawnWarps(unsigned num_Warps, unsigned num_threads, FUNC, void * args)
vx_before_main(); vx_before_main();
unsigned num_available_warps = vx_available_warps(); unsigned num_available_warps = vx_available_warps();
vx_printf("Num available warps: ", num_available_warps); // vx_printf("Num available warps: ", num_available_warps);
asm __volatile__("addi s2, sp, 0"); asm __volatile__("addi s2, sp, 0");
int warp = 0; int warp = 0;