Commit Graph

6 Commits

Author SHA1 Message Date
Sameer Agarwal 0258b2a0b0 Update the sizes in small_blas_gem?_benchmark.cc
The sizes are reflective of the matrix sizes
that occur in production.

Change-Id: I8cd85d0640702df09afafced0d28ef416bab946f
2018-03-23 13:40:14 -07:00
Sameer Agarwal 8c81149e4d Revert changes to MatrixTransposeMatrixMultiply.
This change while algebraically equivalent was causing non-trivial
changes in the numbers being reported by ceres and in some cases
they got worse.

Also fix a small header include in parallel_for_test.cc which
was discovered as part of testing this patch.

Change-Id: I8c8d61538819f0b25af6059fa75ad068fc22f5e4
2018-02-28 19:47:52 -08:00
Sameer Agarwal 973d30dffa Revert "Improve the performance of MatrixTransposeVector Multiply."
This reverts commit 6c835f81a7.

This CL introduced a subtle cancellation error which is causing
some application tests to fail, and is therefore being reverted.

Change-Id: Iaaa8f13a18f0a805b0e70a25ccd1e97efb21f330
2018-02-27 14:40:45 +00:00
Sameer Agarwal 656f9efbd3 Improve the performance of MatrixTransposeMatrix multiply.
Compute A'B as rank-1 sums of outer products of the rows of
A and B. This is more cache coherent.

Benchmark                                                 Time             CPU      Time Old      Time New       CPU Old       CPU New
--------------------------------------------------------------------------------------------------------------------------------------
BM_MatrixMatrixMultiplyDynamic/2/2/2                   +0.0031         +0.0033            27            27            27            27
BM_MatrixMatrixMultiplyDynamic/2/2/4                   +0.0383         +0.0380            41            42            41            42
BM_MatrixMatrixMultiplyDynamic/2/2/6                   +0.0001         +0.0019            58            58            57            58
BM_MatrixMatrixMultiplyDynamic/2/2/8                   +0.0169         +0.0169            70            71            70            71
BM_MatrixMatrixMultiplyDynamic/2/2/10                  +0.0162         +0.0161            83            85            83            85
BM_MatrixMatrixMultiplyDynamic/2/2/12                  -0.0049         -0.0048            93            93            93            93
BM_MatrixMatrixMultiplyDynamic/2/2/15                  +0.0131         +0.0129           114           115           114           115
BM_MatrixMatrixMultiplyDynamic/2/4/2                   +0.0494         +0.0489            32            34            32            34
BM_MatrixMatrixMultiplyDynamic/2/4/4                   +0.0121         +0.0121            51            52            51            52
BM_MatrixMatrixMultiplyDynamic/2/4/6                   +0.0134         +0.0138            70            71            70            71
BM_MatrixMatrixMultiplyDynamic/2/4/8                   +0.0006         +0.0005            90            90            90            90
BM_MatrixMatrixMultiplyDynamic/2/4/10                  +0.0248         +0.0248           107           110           107           110
BM_MatrixMatrixMultiplyDynamic/2/4/12                  -0.0239         -0.0234           125           122           125           122
BM_MatrixMatrixMultiplyDynamic/2/4/15                  +0.0611         +0.0605           155           164           155           164
BM_MatrixMatrixMultiplyDynamic/2/6/2                   -0.0017         -0.0017            39            39            39            39
BM_MatrixMatrixMultiplyDynamic/2/6/4                   +0.0139         +0.0147            59            60            59            60
BM_MatrixMatrixMultiplyDynamic/2/6/6                   -0.1062         -0.1003            89            80            89            80
BM_MatrixMatrixMultiplyDynamic/2/6/8                   -0.0339         -0.0344           116           112           115           111
BM_MatrixMatrixMultiplyDynamic/2/6/10                  +0.0568         +0.0455           142           150           141           148
BM_MatrixMatrixMultiplyDynamic/2/6/12                  -0.0073         -0.0062           155           154           155           154
BM_MatrixMatrixMultiplyDynamic/2/6/15                  +0.0219         +0.0215           187           191           187           191
BM_MatrixMatrixMultiplyDynamic/2/8/2                   -0.0165         -0.0160            43            42            43            42
BM_MatrixMatrixMultiplyDynamic/2/8/4                   -0.0247         -0.0245            71            69            70            69
BM_MatrixMatrixMultiplyDynamic/2/8/6                   -0.0642         -0.0614           104            98           104            98
BM_MatrixMatrixMultiplyDynamic/2/8/8                   -0.0607         -0.0599           133           125           133           125
BM_MatrixMatrixMultiplyDynamic/2/8/10                  -0.0523         -0.0510           166           157           166           157
BM_MatrixMatrixMultiplyDynamic/2/8/12                  -0.0381         -0.0376           189           182           189           182
BM_MatrixMatrixMultiplyDynamic/2/8/15                  -0.0725         -0.0716           243           226           243           225
BM_MatrixMatrixMultiplyDynamic/2/10/2                  -0.0421         -0.0416            50            48            50            48
BM_MatrixMatrixMultiplyDynamic/2/10/4                  -0.0558         -0.0549            83            78            83            78
BM_MatrixMatrixMultiplyDynamic/2/10/6                  -0.0527         -0.0518           115           109           115           109
BM_MatrixMatrixMultiplyDynamic/2/10/8                  -0.0421         -0.0413           150           144           150           144
BM_MatrixMatrixMultiplyDynamic/2/10/10                 -0.0606         -0.0601           202           190           202           190
BM_MatrixMatrixMultiplyDynamic/2/10/12                 -0.0409         -0.0406           224           215           224           215
BM_MatrixMatrixMultiplyDynamic/2/10/15                 -0.0308         -0.0302           277           268           277           268
BM_MatrixMatrixMultiplyDynamic/2/12/2                  -0.0059         -0.0058            53            52            53            52
BM_MatrixMatrixMultiplyDynamic/2/12/4                  +0.0019         +0.0023            87            87            87            87
BM_MatrixMatrixMultiplyDynamic/2/12/6                  -0.0032         -0.0025           126           125           126           125
BM_MatrixMatrixMultiplyDynamic/2/12/8                  -0.0039         -0.0038           159           158           159           158
BM_MatrixMatrixMultiplyDynamic/2/12/10                 -0.0175         -0.0171           205           201           205           201
BM_MatrixMatrixMultiplyDynamic/2/12/12                 -0.0643         -0.0633           295           276           294           276
BM_MatrixMatrixMultiplyDynamic/2/12/15                 -0.0215         -0.0201           328           321           328           321
BM_MatrixMatrixMultiplyDynamic/2/15/2                  +0.0092         +0.0103            58            58            58            58
BM_MatrixMatrixMultiplyDynamic/2/15/4                  +0.0762         +0.0765            98           105            98           105
BM_MatrixMatrixMultiplyDynamic/2/15/6                  -0.0155         -0.0172           138           136           138           136
BM_MatrixMatrixMultiplyDynamic/2/15/8                  +0.0674         +0.0658           180           192           180           191
BM_MatrixMatrixMultiplyDynamic/2/15/10                 +0.0254         +0.0255           236           242           236           242
BM_MatrixMatrixMultiplyDynamic/2/15/12                 -0.0383         -0.0378           289           278           289           278
BM_MatrixMatrixMultiplyDynamic/2/15/15                 -0.0313         -0.0308           407           394           406           394
BM_MatrixMatrixMultiplyDynamic/4/2/2                   +0.0286         +0.0286            42            43            42            43
BM_MatrixMatrixMultiplyDynamic/4/2/4                   -0.0455         -0.0439            71            68            71            68
BM_MatrixMatrixMultiplyDynamic/4/2/6                   +0.0221         +0.0229            93            95            93            95
BM_MatrixMatrixMultiplyDynamic/4/2/8                   -0.0226         -0.0225           120           118           120           118
BM_MatrixMatrixMultiplyDynamic/4/2/10                  -0.1153         -0.1130           158           140           158           140
BM_MatrixMatrixMultiplyDynamic/4/2/12                  -0.0145         -0.0143           164           162           164           162
BM_MatrixMatrixMultiplyDynamic/4/2/15                  -0.0396         -0.0393           205           197           205           197
BM_MatrixMatrixMultiplyDynamic/4/4/2                   -0.0696         -0.0682            57            53            57            53
BM_MatrixMatrixMultiplyDynamic/4/4/4                   -0.0233         -0.0231            91            89            91            89
BM_MatrixMatrixMultiplyDynamic/4/4/6                   -0.0711         -0.0702           130           121           130           121
BM_MatrixMatrixMultiplyDynamic/4/4/8                   -0.1180         -0.1113           178           157           176           157
BM_MatrixMatrixMultiplyDynamic/4/4/10                  -0.0301         -0.0282           194           188           194           188
BM_MatrixMatrixMultiplyDynamic/4/4/12                  -0.1156         -0.1137           251           222           251           222
BM_MatrixMatrixMultiplyDynamic/4/4/15                  -0.0182         -0.0179           307           302           307           301
BM_MatrixMatrixMultiplyDynamic/4/6/2                   -0.0228         -0.0220            64            63            64            63
BM_MatrixMatrixMultiplyDynamic/4/6/4                   +0.0048         +0.0045           106           107           106           107
BM_MatrixMatrixMultiplyDynamic/4/6/6                   -0.0131         -0.0126           155           153           155           153
BM_MatrixMatrixMultiplyDynamic/4/6/8                   -0.0526         -0.0502           211           200           210           200
BM_MatrixMatrixMultiplyDynamic/4/6/10                  -0.0995         -0.0975           274           247           274           247
BM_MatrixMatrixMultiplyDynamic/4/6/12                  -0.0436         -0.0430           297           284           297           284
BM_MatrixMatrixMultiplyDynamic/4/6/15                  +0.0042         +0.0050           344           345           343           345
BM_MatrixMatrixMultiplyDynamic/4/8/2                   -0.0283         -0.0279            74            72            74            72
BM_MatrixMatrixMultiplyDynamic/4/8/4                   -0.0282         -0.0277           125           122           125           122
BM_MatrixMatrixMultiplyDynamic/4/8/6                   -0.0756         -0.0693           185           171           184           171
BM_MatrixMatrixMultiplyDynamic/4/8/8                   -0.0510         -0.0444           267           253           265           253
BM_MatrixMatrixMultiplyDynamic/4/8/10                  -0.0512         -0.0460           301           285           299           285
BM_MatrixMatrixMultiplyDynamic/4/8/12                  -0.0046         -0.0006           351           349           349           349
BM_MatrixMatrixMultiplyDynamic/4/8/15                  -0.0795         -0.0785           452           416           451           416
BM_MatrixMatrixMultiplyDynamic/4/10/2                  -0.0415         -0.0406            85            81            85            81
BM_MatrixMatrixMultiplyDynamic/4/10/4                  -0.0118         -0.0118           143           141           143           141
BM_MatrixMatrixMultiplyDynamic/4/10/6                  -0.0484         -0.0478           217           206           216           206
BM_MatrixMatrixMultiplyDynamic/4/10/8                  -0.0373         -0.0372           280           269           280           269
BM_MatrixMatrixMultiplyDynamic/4/10/10                 +0.0083         +0.0083           350           353           350           353
BM_MatrixMatrixMultiplyDynamic/4/10/12                 -0.0364         -0.0365           436           420           436           420
BM_MatrixMatrixMultiplyDynamic/4/10/15                 -0.0221         -0.0210           513           502           512           502
BM_MatrixMatrixMultiplyDynamic/4/12/2                  -0.0569         -0.0565            94            89            94            89
BM_MatrixMatrixMultiplyDynamic/4/12/4                  -0.0343         -0.0338           162           157           162           157
BM_MatrixMatrixMultiplyDynamic/4/12/6                  +0.0197         +0.0198           227           232           227           231
BM_MatrixMatrixMultiplyDynamic/4/12/8                  -0.0390         -0.0388           310           298           310           298
BM_MatrixMatrixMultiplyDynamic/4/12/10                 -0.0088         -0.0085           389           386           389           386
BM_MatrixMatrixMultiplyDynamic/4/12/12                 +0.0524         +0.0505           545           574           545           572
BM_MatrixMatrixMultiplyDynamic/4/12/15                 +0.0801         +0.0764           597           645           597           642
BM_MatrixMatrixMultiplyDynamic/4/15/2                  -0.0024         -0.0026            99            99            99            99
BM_MatrixMatrixMultiplyDynamic/4/15/4                  -0.0289         -0.0270           187           181           186           181
BM_MatrixMatrixMultiplyDynamic/4/15/6                  -0.0264         -0.0261           263           256           263           256
BM_MatrixMatrixMultiplyDynamic/4/15/8                  -0.0344         -0.0334           349           337           348           337
BM_MatrixMatrixMultiplyDynamic/4/15/10                 -0.0189         -0.0191           454           446           454           445
BM_MatrixMatrixMultiplyDynamic/4/15/12                 -0.0483         -0.0470           524           499           523           498
BM_MatrixMatrixMultiplyDynamic/4/15/15                 -0.1084         -0.1070           840           749           838           748
BM_MatrixMatrixMultiplyDynamic/6/2/2                   -0.0574         -0.0561            59            56            59            56
BM_MatrixMatrixMultiplyDynamic/6/2/4                   -0.0727         -0.0721            98            91            98            91
BM_MatrixMatrixMultiplyDynamic/6/2/6                   -0.0292         -0.0283           133           129           133           129
BM_MatrixMatrixMultiplyDynamic/6/2/8                   -0.0283         -0.0278           167           162           167           162
BM_MatrixMatrixMultiplyDynamic/6/2/10                  -0.0482         -0.0476           216           206           216           206
BM_MatrixMatrixMultiplyDynamic/6/2/12                  -0.0117         -0.0115           243           240           243           240
BM_MatrixMatrixMultiplyDynamic/6/2/15                  -0.0234         -0.0225           299           292           299           292
BM_MatrixMatrixMultiplyDynamic/6/4/2                   -0.0950         -0.0898            79            72            79            72
BM_MatrixMatrixMultiplyDynamic/6/4/4                   -0.0300         -0.0298           130           127           130           127
BM_MatrixMatrixMultiplyDynamic/6/4/6                   -0.0379         -0.0376           175           169           175           169
BM_MatrixMatrixMultiplyDynamic/6/4/8                   -0.0340         -0.0319           236           228           236           228
BM_MatrixMatrixMultiplyDynamic/6/4/10                  -0.0498         -0.0490           289           275           289           275
BM_MatrixMatrixMultiplyDynamic/6/4/12                  +0.0134         +0.0134           325           330           325           330
BM_MatrixMatrixMultiplyDynamic/6/4/15                  -0.0836         -0.0794           469           429           466           429
BM_MatrixMatrixMultiplyDynamic/6/6/2                   -0.0614         -0.0563            91            86            91            86
BM_MatrixMatrixMultiplyDynamic/6/6/4                   -0.0249         -0.0239           153           149           152           149
BM_MatrixMatrixMultiplyDynamic/6/6/6                   -0.0442         -0.0438           235           224           234           224
BM_MatrixMatrixMultiplyDynamic/6/6/8                   -0.0127         -0.0083           296           292           295           292
BM_MatrixMatrixMultiplyDynamic/6/6/10                  +0.0305         +0.0302           360           371           360           371
BM_MatrixMatrixMultiplyDynamic/6/6/12                  -0.0479         -0.0463           434           413           433           413
BM_MatrixMatrixMultiplyDynamic/6/6/15                  -0.0774         -0.0742           542           500           540           500
BM_MatrixMatrixMultiplyDynamic/6/8/2                   -0.0617         -0.0611           106            99           106            99
BM_MatrixMatrixMultiplyDynamic/6/8/4                   -0.1153         -0.1147           202           179           202           179
BM_MatrixMatrixMultiplyDynamic/6/8/6                   -0.0591         -0.0589           270           254           270           254
BM_MatrixMatrixMultiplyDynamic/6/8/8                   -0.0677         -0.0671           381           355           381           355
BM_MatrixMatrixMultiplyDynamic/6/8/10                  -0.0771         -0.0757           451           416           450           416
BM_MatrixMatrixMultiplyDynamic/6/8/12                  -0.0520         -0.0519           522           495           522           495
BM_MatrixMatrixMultiplyDynamic/6/8/15                  -0.0386         -0.0386           639           614           638           614
BM_MatrixMatrixMultiplyDynamic/6/10/2                  -0.0764         -0.0756           121           111           120           111
BM_MatrixMatrixMultiplyDynamic/6/10/4                  -0.0847         -0.0777           224           205           222           205
BM_MatrixMatrixMultiplyDynamic/6/10/6                  -0.0762         -0.0748           320           295           319           295
BM_MatrixMatrixMultiplyDynamic/6/10/8                  -0.0160         -0.0164           413           407           413           406
BM_MatrixMatrixMultiplyDynamic/6/10/10                 +0.0438         +0.0429           526           549           525           548
BM_MatrixMatrixMultiplyDynamic/6/10/12                 +0.0641         +0.0615           606           645           605           643
BM_MatrixMatrixMultiplyDynamic/6/10/15                 +0.0983         +0.0965           741           814           740           812
BM_MatrixMatrixMultiplyDynamic/6/12/2                  +0.0697         +0.0663           135           144           135           144
BM_MatrixMatrixMultiplyDynamic/6/12/4                  -0.0230         -0.0240           251           245           250           244
BM_MatrixMatrixMultiplyDynamic/6/12/6                  -0.0728         -0.0703           365           338           364           338
BM_MatrixMatrixMultiplyDynamic/6/12/8                  -0.1444         -0.1402           514           440           511           440
BM_MatrixMatrixMultiplyDynamic/6/12/10                 -0.1268         -0.1216           628           548           624           548
BM_MatrixMatrixMultiplyDynamic/6/12/12                 -0.1323         -0.1250           883           766           875           766
BM_MatrixMatrixMultiplyDynamic/6/12/15                 -0.1337         -0.1304           995           862           991           862
BM_MatrixMatrixMultiplyDynamic/6/15/2                  -0.1163         -0.1140           158           140           158           140
BM_MatrixMatrixMultiplyDynamic/6/15/4                  -0.0721         -0.0689           285           265           284           265
BM_MatrixMatrixMultiplyDynamic/6/15/6                  -0.0597         -0.0582           414           389           413           389
BM_MatrixMatrixMultiplyDynamic/6/15/8                  -0.1189         -0.1173           563           496           562           496
BM_MatrixMatrixMultiplyDynamic/6/15/10                 -0.0754         -0.0737           749           693           747           692
BM_MatrixMatrixMultiplyDynamic/6/15/12                 +0.0141         +0.0153           871           883           866           879
BM_MatrixMatrixMultiplyDynamic/6/15/15                 -0.1184         -0.1152          1398          1233          1387          1228
BM_MatrixMatrixMultiplyDynamic/8/2/2                   -0.0232         -0.0242            77            75            77            75
BM_MatrixMatrixMultiplyDynamic/8/2/4                   +0.1114         +0.1085           120           133           119           132
BM_MatrixMatrixMultiplyDynamic/8/2/6                   +0.0794         +0.0760           169           183           169           182
BM_MatrixMatrixMultiplyDynamic/8/2/8                   +0.0833         +0.0780           221           239           221           238
BM_MatrixMatrixMultiplyDynamic/8/2/10                  +0.0037         +0.0037           264           265           264           265
BM_MatrixMatrixMultiplyDynamic/8/2/12                  +0.0114         +0.0115           301           304           301           304
BM_MatrixMatrixMultiplyDynamic/8/2/15                  +0.0034         +0.0030           378           380           378           380
BM_MatrixMatrixMultiplyDynamic/8/4/2                   +0.0197         +0.0198            90            91            90            91
BM_MatrixMatrixMultiplyDynamic/8/4/4                   +0.0231         +0.0230           156           160           156           160
BM_MatrixMatrixMultiplyDynamic/8/4/6                   +0.0233         +0.0235           225           230           225           230
BM_MatrixMatrixMultiplyDynamic/8/4/8                   +0.0352         +0.0349           286           296           286           296
BM_MatrixMatrixMultiplyDynamic/8/4/10                  +0.0569         +0.0551           362           382           362           382
BM_MatrixMatrixMultiplyDynamic/8/4/12                  -0.0180         -0.0181           424           416           424           416
BM_MatrixMatrixMultiplyDynamic/8/4/15                  -0.0807         -0.0763           627           576           623           576
BM_MatrixMatrixMultiplyDynamic/8/6/2                   -0.0030         -0.0029           111           111           111           111
BM_MatrixMatrixMultiplyDynamic/8/6/4                   +0.0053         +0.0051           198           199           198           199
BM_MatrixMatrixMultiplyDynamic/8/6/6                   -0.1261         -0.1233           330           288           329           288
BM_MatrixMatrixMultiplyDynamic/8/6/8                   -0.0760         -0.0755           398           368           398           368
BM_MatrixMatrixMultiplyDynamic/8/6/10                  -0.0497         -0.0487           505           480           505           480
BM_MatrixMatrixMultiplyDynamic/8/6/12                  +0.0090         +0.0091           529           534           529           534
BM_MatrixMatrixMultiplyDynamic/8/6/15                  -0.0778         -0.0757           704           649           702           649
BM_MatrixMatrixMultiplyDynamic/8/8/2                   -0.1332         -0.1305           150           130           149           130
BM_MatrixMatrixMultiplyDynamic/8/8/4                   -0.0903         -0.0878           257           234           257           234
BM_MatrixMatrixMultiplyDynamic/8/8/6                   -0.1177         -0.1165           380           335           379           335
BM_MatrixMatrixMultiplyDynamic/8/8/8                   -0.0799         -0.0786           509           468           508           468
BM_MatrixMatrixMultiplyDynamic/8/8/10                  -0.1098         -0.1057           604           538           601           537
BM_MatrixMatrixMultiplyDynamic/8/8/12                  -0.0676         -0.0662           697           650           696           650
BM_MatrixMatrixMultiplyDynamic/8/8/15                  -0.0707         -0.0696           856           796           855           796
BM_MatrixMatrixMultiplyDynamic/8/10/2                  -0.0429         -0.0417           149           142           149           142
BM_MatrixMatrixMultiplyDynamic/8/10/4                  -0.0652         -0.0640           286           267           286           267
BM_MatrixMatrixMultiplyDynamic/8/10/6                  -0.0259         -0.0253           402           392           402           392
BM_MatrixMatrixMultiplyDynamic/8/10/8                  -0.0131         -0.0129           526           520           526           519
BM_MatrixMatrixMultiplyDynamic/8/10/10                 -0.0873         -0.0865           697           636           696           636
BM_MatrixMatrixMultiplyDynamic/8/10/12                 -0.0130         -0.0127           799           788           798           788
BM_MatrixMatrixMultiplyDynamic/8/10/15                 -0.0441         -0.0438          1018           973          1018           973
BM_MatrixMatrixMultiplyDynamic/8/12/2                  -0.0384         -0.0379           172           166           172           165
BM_MatrixMatrixMultiplyDynamic/8/12/4                  -0.0321         -0.0307           307           297           307           297
BM_MatrixMatrixMultiplyDynamic/8/12/6                  -0.0394         -0.0380           458           440           458           440
BM_MatrixMatrixMultiplyDynamic/8/12/8                  -0.0529         -0.0522           608           576           607           576
BM_MatrixMatrixMultiplyDynamic/8/12/10                 -0.0566         -0.0560           747           705           747           705
BM_MatrixMatrixMultiplyDynamic/8/12/12                 -0.0007         -0.0006          1024          1024          1024          1023
BM_MatrixMatrixMultiplyDynamic/8/12/15                 -0.0422         -0.0420          1163          1114          1162          1113
BM_MatrixMatrixMultiplyDynamic/8/15/2                  -0.0241         -0.0241           197           192           197           192
BM_MatrixMatrixMultiplyDynamic/8/15/4                  -0.0515         -0.0514           352           334           352           333
BM_MatrixMatrixMultiplyDynamic/8/15/6                  -0.0192         -0.0194           506           496           506           496
BM_MatrixMatrixMultiplyDynamic/8/15/8                  -0.0338         -0.0334           674           651           674           651
BM_MatrixMatrixMultiplyDynamic/8/15/10                 -0.0556         -0.0545           922           871           921           871
BM_MatrixMatrixMultiplyDynamic/8/15/12                 -0.0473         -0.0462          1052          1002          1050          1001
BM_MatrixMatrixMultiplyDynamic/8/15/15                 -0.0522         -0.0521          1484          1406          1483          1406
BM_MatrixTransposeMatrixMultiplyDynamic/2/2/2          -0.1216         -0.1203            31            27            31            27
BM_MatrixTransposeMatrixMultiplyDynamic/2/2/4          -0.3827         -0.3818            49            30            49            30
BM_MatrixTransposeMatrixMultiplyDynamic/2/2/6          -0.3901         -0.3888            67            41            67            41
BM_MatrixTransposeMatrixMultiplyDynamic/2/2/8          -0.5469         -0.5458            86            39            86            39
BM_MatrixTransposeMatrixMultiplyDynamic/2/4/2          -0.2362         -0.2365            47            36            47            36
BM_MatrixTransposeMatrixMultiplyDynamic/2/4/4          -0.4470         -0.4469            77            43            77            43
BM_MatrixTransposeMatrixMultiplyDynamic/2/4/6          -0.4545         -0.4546           111            61           111            61
BM_MatrixTransposeMatrixMultiplyDynamic/2/4/8          -0.6093         -0.6093           142            56           142            56
BM_MatrixTransposeMatrixMultiplyDynamic/2/5/2          -0.2345         -0.2348            54            41            54            41
BM_MatrixTransposeMatrixMultiplyDynamic/2/5/4          -0.5111         -0.5107            99            48            99            48
BM_MatrixTransposeMatrixMultiplyDynamic/2/5/6          -0.4944         -0.4946           136            69           136            69
BM_MatrixTransposeMatrixMultiplyDynamic/2/5/8          -0.6354         -0.6354           171            62           171            62
BM_MatrixTransposeMatrixMultiplyDynamic/2/8/2          -0.3370         -0.3369            82            55            82            55
BM_MatrixTransposeMatrixMultiplyDynamic/2/8/4          -0.5062         -0.5064           139            69           139            69
BM_MatrixTransposeMatrixMultiplyDynamic/2/8/6          -0.5422         -0.5421           208            95           208            95
BM_MatrixTransposeMatrixMultiplyDynamic/2/8/8          -0.6903         -0.6896           294            91           294            91
BM_MatrixTransposeMatrixMultiplyDynamic/2/10/2         -0.1791         -0.1811            99            82            99            81
BM_MatrixTransposeMatrixMultiplyDynamic/2/10/4         -0.5062         -0.5061           177            88           177            88
BM_MatrixTransposeMatrixMultiplyDynamic/2/10/6         -0.5110         -0.5110           256           125           256           125
BM_MatrixTransposeMatrixMultiplyDynamic/2/10/8         -0.6632         -0.6632           334           112           333           112
BM_MatrixTransposeMatrixMultiplyDynamic/2/12/2         -0.3272         -0.3269           120            81           120            81
BM_MatrixTransposeMatrixMultiplyDynamic/2/12/4         -0.5019         -0.5019           212           105           212           105
BM_MatrixTransposeMatrixMultiplyDynamic/2/12/6         -0.5365         -0.5365           303           140           303           140
BM_MatrixTransposeMatrixMultiplyDynamic/2/12/8         -0.6856         -0.6856           398           125           398           125
BM_MatrixTransposeMatrixMultiplyDynamic/2/15/2         -0.2425         -0.2425           143           109           143           109
BM_MatrixTransposeMatrixMultiplyDynamic/2/15/4         -0.5891         -0.5871           298           122           296           122
BM_MatrixTransposeMatrixMultiplyDynamic/2/15/6         -0.5790         -0.5782           414           174           413           174
BM_MatrixTransposeMatrixMultiplyDynamic/2/15/8         -0.7173         -0.7173           509           144           509           144
BM_MatrixTransposeMatrixMultiplyDynamic/4/2/2          +0.0482         +0.0489            37            39            37            39
BM_MatrixTransposeMatrixMultiplyDynamic/4/2/4          -0.2428         -0.2433            60            45            60            45
BM_MatrixTransposeMatrixMultiplyDynamic/4/2/6          -0.2921         -0.2917            84            59            84            59
BM_MatrixTransposeMatrixMultiplyDynamic/4/2/8          -0.4632         -0.4630           105            56           105            56
BM_MatrixTransposeMatrixMultiplyDynamic/4/4/2          -0.0305         -0.0301            60            58            60            58
BM_MatrixTransposeMatrixMultiplyDynamic/4/4/4          -0.3008         -0.3007           101            70           101            70
BM_MatrixTransposeMatrixMultiplyDynamic/4/4/6          -0.3708         -0.3700           149            94           149            94
BM_MatrixTransposeMatrixMultiplyDynamic/4/4/8          -0.5160         -0.5159           190            92           189            92
BM_MatrixTransposeMatrixMultiplyDynamic/4/5/2          -0.0187         -0.0185            71            70            71            70
BM_MatrixTransposeMatrixMultiplyDynamic/4/5/4          -0.3064         -0.3054           130            90           130            90
BM_MatrixTransposeMatrixMultiplyDynamic/4/5/6          -0.3762         -0.3753           184           115           184           115
BM_MatrixTransposeMatrixMultiplyDynamic/4/5/8          -0.5845         -0.5838           240           100           240           100
BM_MatrixTransposeMatrixMultiplyDynamic/4/8/2          +0.0517         +0.0521           109           115           109           115
BM_MatrixTransposeMatrixMultiplyDynamic/4/8/4          -0.2895         -0.2889           194           138           194           138
BM_MatrixTransposeMatrixMultiplyDynamic/4/8/6          -0.3138         -0.3136           279           191           279           191
BM_MatrixTransposeMatrixMultiplyDynamic/4/8/8          -0.5429         -0.5421           381           174           380           174
BM_MatrixTransposeMatrixMultiplyDynamic/4/10/2         +0.0612         +0.0620           135           143           135           143
BM_MatrixTransposeMatrixMultiplyDynamic/4/10/4         -0.3269         -0.3263           259           174           258           174
BM_MatrixTransposeMatrixMultiplyDynamic/4/10/6         -0.2955         -0.2961           343           242           343           241
BM_MatrixTransposeMatrixMultiplyDynamic/4/10/8         -0.5484         -0.5475           466           210           465           210
BM_MatrixTransposeMatrixMultiplyDynamic/4/12/2         +0.1234         +0.1239           157           177           157           177
BM_MatrixTransposeMatrixMultiplyDynamic/4/12/4         -0.3002         -0.2997           291           204           291           204
BM_MatrixTransposeMatrixMultiplyDynamic/4/12/6         -0.3419         -0.3415           415           273           415           273
BM_MatrixTransposeMatrixMultiplyDynamic/4/12/8         -0.5604         -0.5600           545           239           544           239
BM_MatrixTransposeMatrixMultiplyDynamic/4/15/2         +0.1730         +0.1712           185           217           185           216
BM_MatrixTransposeMatrixMultiplyDynamic/4/15/4         -0.3099         -0.3097           346           239           346           239
BM_MatrixTransposeMatrixMultiplyDynamic/4/15/6         -0.3743         -0.3741           521           326           521           326
BM_MatrixTransposeMatrixMultiplyDynamic/4/15/8         -0.5411         -0.5409           654           300           654           300
BM_MatrixTransposeMatrixMultiplyDynamic/6/2/2          +0.2546         +0.2547            41            51            41            51
BM_MatrixTransposeMatrixMultiplyDynamic/6/2/4          -0.0940         -0.0942            66            60            66            60
BM_MatrixTransposeMatrixMultiplyDynamic/6/2/6          -0.1584         -0.1585            95            80            95            80
BM_MatrixTransposeMatrixMultiplyDynamic/6/2/8          -0.4333         -0.4329           130            74           130            74
BM_MatrixTransposeMatrixMultiplyDynamic/6/4/2          +0.1951         +0.1952            69            82            69            82
BM_MatrixTransposeMatrixMultiplyDynamic/6/4/4          -0.2034         -0.2034           123            98           123            98
BM_MatrixTransposeMatrixMultiplyDynamic/6/4/6          -0.1998         -0.1995           178           142           178           142
BM_MatrixTransposeMatrixMultiplyDynamic/6/4/8          -0.4348         -0.4347           233           131           233           131
BM_MatrixTransposeMatrixMultiplyDynamic/6/5/2          +0.5517         +0.5521            82           128            82           128
BM_MatrixTransposeMatrixMultiplyDynamic/6/5/4          -0.1427         -0.1427           145           124           145           124
BM_MatrixTransposeMatrixMultiplyDynamic/6/5/6          -0.1846         -0.1846           220           179           220           179
BM_MatrixTransposeMatrixMultiplyDynamic/6/5/8          -0.4871         -0.4873           290           149           290           148
BM_MatrixTransposeMatrixMultiplyDynamic/6/8/2          +0.3469         +0.3473           131           176           131           176
BM_MatrixTransposeMatrixMultiplyDynamic/6/8/4          -0.1013         -0.1018           248           223           248           222
BM_MatrixTransposeMatrixMultiplyDynamic/6/8/6          -0.1652         -0.1670           354           295           353           294
BM_MatrixTransposeMatrixMultiplyDynamic/6/8/8          -0.4302         -0.4299           447           255           447           255
BM_MatrixTransposeMatrixMultiplyDynamic/6/10/2         +0.4005         +0.4001           157           219           157           219
BM_MatrixTransposeMatrixMultiplyDynamic/6/10/4         -0.0439         -0.0441           295           282           294           281
BM_MatrixTransposeMatrixMultiplyDynamic/6/10/6         -0.1031         -0.1074           420           377           420           375
BM_MatrixTransposeMatrixMultiplyDynamic/6/10/8         -0.3655         -0.3679           556           353           555           351
BM_MatrixTransposeMatrixMultiplyDynamic/6/12/2         +0.5654         +0.5604           183           287           183           286
BM_MatrixTransposeMatrixMultiplyDynamic/6/12/4         -0.1118         -0.1116           353           314           353           314
BM_MatrixTransposeMatrixMultiplyDynamic/6/12/6         -0.2045         -0.2053           517           411           516           410
BM_MatrixTransposeMatrixMultiplyDynamic/6/12/8         -0.4662         -0.4660           657           350           656           350
BM_MatrixTransposeMatrixMultiplyDynamic/6/15/2         +0.3582         +0.3588           242           328           241           328
BM_MatrixTransposeMatrixMultiplyDynamic/6/15/4         -0.1403         -0.1407           428           368           428           367
BM_MatrixTransposeMatrixMultiplyDynamic/6/15/6         -0.2424         -0.2421           632           479           632           479
BM_MatrixTransposeMatrixMultiplyDynamic/6/15/8         -0.5094         -0.5092           835           410           834           409
BM_MatrixTransposeMatrixMultiplyDynamic/8/2/2          +0.3930         +0.3925            47            66            47            66
BM_MatrixTransposeMatrixMultiplyDynamic/8/2/4          +0.0226         +0.0215            78            80            78            80
BM_MatrixTransposeMatrixMultiplyDynamic/8/2/6          -0.0428         -0.0427           105           100           105           100
BM_MatrixTransposeMatrixMultiplyDynamic/8/2/8          -0.3418         -0.3437           141            93           141            92
BM_MatrixTransposeMatrixMultiplyDynamic/8/4/2          +0.3927         +0.3924            85           118            85           118
BM_MatrixTransposeMatrixMultiplyDynamic/8/4/4          -0.0040         -0.0039           137           136           136           136
BM_MatrixTransposeMatrixMultiplyDynamic/8/4/6          -0.0342         -0.0339           204           197           204           197
BM_MatrixTransposeMatrixMultiplyDynamic/8/4/8          -0.3575         -0.3577           267           171           267           171
BM_MatrixTransposeMatrixMultiplyDynamic/8/5/2          +0.7014         +0.7033            99           168            99           168
BM_MatrixTransposeMatrixMultiplyDynamic/8/5/4          +0.0952         +0.0952           163           179           163           179
BM_MatrixTransposeMatrixMultiplyDynamic/8/5/6          -0.1164         -0.1163           246           218           246           218
BM_MatrixTransposeMatrixMultiplyDynamic/8/5/8          -0.3550         -0.3565           322           208           322           207
BM_MatrixTransposeMatrixMultiplyDynamic/8/8/2          +0.7074         +0.7072           140           239           140           239
BM_MatrixTransposeMatrixMultiplyDynamic/8/8/4          +0.1072         +0.1075           276           306           276           306
BM_MatrixTransposeMatrixMultiplyDynamic/8/8/6          -0.0771         -0.0768           398           368           398           367
BM_MatrixTransposeMatrixMultiplyDynamic/8/8/8          -0.3614         -0.3612           524           335           524           335
BM_MatrixTransposeMatrixMultiplyDynamic/8/10/2         +0.6979         +0.7004           184           313           184           312
BM_MatrixTransposeMatrixMultiplyDynamic/8/10/4         +0.0967         +0.0955           326           357           325           356
BM_MatrixTransposeMatrixMultiplyDynamic/8/10/6         -0.0248         -0.0239           486           474           485           474
BM_MatrixTransposeMatrixMultiplyDynamic/8/10/8         -0.3432         -0.3437           603           396           603           396
BM_MatrixTransposeMatrixMultiplyDynamic/8/12/2         +0.5977         +0.5985           210           335           210           335
BM_MatrixTransposeMatrixMultiplyDynamic/8/12/4         -0.0530         -0.0484           405           384           403           384
BM_MatrixTransposeMatrixMultiplyDynamic/8/12/6         -0.0557         -0.0561           574           542           574           541
BM_MatrixTransposeMatrixMultiplyDynamic/8/12/8         -0.2835         -0.2849           730           523           730           522
BM_MatrixTransposeMatrixMultiplyDynamic/8/15/2         +0.7117         +0.7085           254           434           254           433
BM_MatrixTransposeMatrixMultiplyDynamic/8/15/4         +0.0630         +0.0602           458           487           458           486
BM_MatrixTransposeMatrixMultiplyDynamic/8/15/6         -0.0321         -0.0330           662           641           662           640
BM_MatrixTransposeMatrixMultiplyDynamic/8/15/8         -0.3974         -0.3978           911           549           910           548

Change-Id: I09d87c1885be86177b93c8fe0e6f89a75eb2f7a1
2018-02-26 00:17:51 +00:00
Sameer Agarwal d634d6168e Add small_blas_gemm_benchmark.
Change-Id: Ide8c86c77c4adf73a3f5b6be4f23ab3d59705f7b
2018-02-25 14:42:06 -08:00
Sameer Agarwal 6c835f81a7 Improve the performance of MatrixTransposeVector Multiply.
This is done by making the matrix access more cache coherent.
For small matrices there isn't much difference, but for
larger matrices like 4x20, this leads to ~50% performance
improvement.

Benchmark                                        Time             CPU      Time Old      Time New       CPU Old       CPU New
-----------------------------------------------------------------------------------------------------------------------------
BM_MatrixVectorMultiply/1/1                   +0.0138         +0.0046            10            10            10            10
BM_MatrixVectorMultiply/1/2                   +0.0215         +0.0146            10            11            10            10
BM_MatrixVectorMultiply/1/3                   +0.0469         +0.0422            10            10            10            10
BM_MatrixVectorMultiply/1/4                   +0.0696         +0.0671            10            11            10            11
BM_MatrixVectorMultiply/1/6                   +0.0827         +0.0795            12            13            12            13
BM_MatrixVectorMultiply/1/7                   +0.1408         +0.1152            13            15            13            14
BM_MatrixVectorMultiply/1/12                  +0.0317         +0.0232            17            18            17            17
BM_MatrixVectorMultiply/1/16                  -0.0362         -0.0168            21            20            20            20
BM_MatrixVectorMultiply/1/20                  +0.0304         +0.0290            22            22            22            22
BM_MatrixVectorMultiply/2/1                   +0.0019         +0.0009            10            10            10            10
BM_MatrixVectorMultiply/2/2                   +0.0285         +0.0291            11            12            11            12
BM_MatrixVectorMultiply/2/3                   -0.1178         -0.0977            16            14            15            14
BM_MatrixVectorMultiply/2/4                   +0.0938         +0.1144            15            17            15            17
BM_MatrixVectorMultiply/2/6                   +0.0617         +0.0629            17            18            17            18
BM_MatrixVectorMultiply/2/7                   +0.0956         +0.0876            20            22            19            21
BM_MatrixVectorMultiply/2/12                  +0.0043         +0.0119            24            24            24            24
BM_MatrixVectorMultiply/2/16                  +0.0361         +0.0337            29            30            29            30
BM_MatrixVectorMultiply/2/20                  +0.0463         +0.0365            33            35            33            34
BM_MatrixVectorMultiply/3/1                   -0.0201         -0.0210            12            12            12            11
BM_MatrixVectorMultiply/3/2                   -0.0741         -0.0766            16            15            16            15
BM_MatrixVectorMultiply/3/3                   -0.0076         -0.0118            18            18            18            18
BM_MatrixVectorMultiply/3/4                   +0.1071         +0.0963            19            21            19            21
BM_MatrixVectorMultiply/3/6                   +0.0449         +0.0390            23            24            23            23
BM_MatrixVectorMultiply/3/7                   +0.1099         +0.1018            25            28            24            27
BM_MatrixVectorMultiply/3/12                  +0.1512         +0.0992            33            38            32            35
BM_MatrixVectorMultiply/3/16                  +0.2281         +0.2005            37            46            37            44
BM_MatrixVectorMultiply/3/20                  +0.2387         +0.1799            49            61            48            57
BM_MatrixVectorMultiply/4/1                   +0.4444         +0.2574            14            21            14            18
BM_MatrixVectorMultiply/4/2                   +0.0313         +0.0230            19            20            19            20
BM_MatrixVectorMultiply/4/3                   +0.0626         +0.0596            23            24            23            24
BM_MatrixVectorMultiply/4/4                   +0.2322         +0.1440            23            28            23            26
BM_MatrixVectorMultiply/4/6                   +0.0936         +0.0768            26            29            26            28
BM_MatrixVectorMultiply/4/7                   +0.0848         +0.0835            28            30            28            30
BM_MatrixVectorMultiply/4/12                  +0.1607         +0.1101            39            46            39            43
BM_MatrixVectorMultiply/4/16                  +0.0752         +0.0687            48            52            48            51
BM_MatrixVectorMultiply/4/20                  +0.1782         +0.1463            61            72            60            69
BM_MatrixTransposeVectorMultiply/1/1          +0.3609         +0.2857             9            13             9            12
BM_MatrixTransposeVectorMultiply/1/2          +0.3106         +0.2970            10            13            10            12
BM_MatrixTransposeVectorMultiply/1/3          +0.3018         +0.2383            11            14            11            13
BM_MatrixTransposeVectorMultiply/1/4          -0.0795         -0.0819            14            13            14            12
BM_MatrixTransposeVectorMultiply/1/6          -0.0108         -0.0629            18            18            18            16
BM_MatrixTransposeVectorMultiply/1/7          -0.1073         -0.0879            20            18            19            17
BM_MatrixTransposeVectorMultiply/1/12         -0.3035         -0.3016            26            18            26            18
BM_MatrixTransposeVectorMultiply/1/16         -0.4909         -0.4951            39            20            38            19
BM_MatrixTransposeVectorMultiply/1/20         -0.4619         -0.4985            43            23            42            21
BM_MatrixTransposeVectorMultiply/2/1          +0.3471         +0.2906            10            13            10            13
BM_MatrixTransposeVectorMultiply/2/2          +0.2323         +0.2266            12            15            12            15
BM_MatrixTransposeVectorMultiply/2/3          +0.0802         +0.0779            16            17            16            17
BM_MatrixTransposeVectorMultiply/2/4          -0.0951         -0.0983            19            17            19            17
BM_MatrixTransposeVectorMultiply/2/6          -0.0974         -0.1064            24            21            24            21
BM_MatrixTransposeVectorMultiply/2/7          +0.0612         -0.0457            27            29            27            26
BM_MatrixTransposeVectorMultiply/2/12         -0.3777         -0.3838            41            25            41            25
BM_MatrixTransposeVectorMultiply/2/16         -0.4783         -0.4843            53            28            53            27
BM_MatrixTransposeVectorMultiply/2/20         -0.5567         -0.5566            71            32            70            31
BM_MatrixTransposeVectorMultiply/3/1          +0.4607         +0.4753            10            15            10            15
BM_MatrixTransposeVectorMultiply/3/2          +0.2870         +0.2754            14            19            14            18
BM_MatrixTransposeVectorMultiply/3/3          +0.1270         +0.1245            19            21            19            21
BM_MatrixTransposeVectorMultiply/3/4          +0.0160         +0.0076            22            22            22            22
BM_MatrixTransposeVectorMultiply/3/6          -0.0612         -0.0635            27            26            27            25
BM_MatrixTransposeVectorMultiply/3/7          -0.0531         -0.0695            31            29            30            28
BM_MatrixTransposeVectorMultiply/3/12         -0.4009         -0.3938            49            29            47            29
BM_MatrixTransposeVectorMultiply/3/16         -0.4584         -0.4537            64            35            62            34
BM_MatrixTransposeVectorMultiply/3/20         -0.5087         -0.5098            78            38            77            38
BM_MatrixTransposeVectorMultiply/4/1          +0.6696         +0.6837            11            18            11            18
BM_MatrixTransposeVectorMultiply/4/2          +0.3085         +0.3085            17            22            17            22
BM_MatrixTransposeVectorMultiply/4/3          +0.2908         +0.2821            21            26            20            26
BM_MatrixTransposeVectorMultiply/4/4          +0.0076         -0.0031            24            25            24            24
BM_MatrixTransposeVectorMultiply/4/6          -0.0884         -0.0841            34            31            34            31
BM_MatrixTransposeVectorMultiply/4/7          -0.0834         -0.0825            37            34            36            33
BM_MatrixTransposeVectorMultiply/4/12         -0.4477         -0.4453            62            34            61            34
BM_MatrixTransposeVectorMultiply/4/16         -0.5324         -0.5203            86            40            83            40
BM_MatrixTransposeVectorMultiply/4/20         -0.4905         -0.4933            99            50            98            50

Change-Id: I7f2a1c986e4a345bb67cb9eb0235234573024889
2018-02-25 13:44:22 -08:00