)]}'
{
  "commit": "68cc71ce5d7ce58751343ccf9cb5aec6dcd60f8e",
  "tree": "ed178a0ccc72eab5c1fc8ed108057b52671fa3c4",
  "parents": [
    "f27082a17463803e4deed9eea28075883e58a31c"
  ],
  "author": {
    "name": "yangfan",
    "email": "yang0773@gmail.com",
    "time": "Mon Mar 12 10:57:52 2018 +0800"
  },
  "committer": {
    "name": "Sameer Agarwal",
    "email": "sameeragarwal@google.com",
    "time": "Sun Apr 08 14:23:10 2018 +0000"
  },
  "message": "Optimization for custom small blas multiplication with dynamic\ntemplate parameters in C level.\n\n- unroll for loops\n- matrix access more cache coherent\n- platform independant\n\nBriefly, this commit brings 1~50% performance improvments for\nmost cases in small_blas_gem(m/v)_benchmark, but a small drop\nfor corner cases with small dimensions especially 1,2,3. Here\nwe list the results partially, which show decrease percentage\nof executing time, compared to unoptimized version.\n\nPlatform: desktop PC (i7-7700 CPU MP8@3.60GHz + ubuntu 17.10)\n(Lenovo Research Device+ Lab, \u003cyangfan34@lenovo.com\u003e)\n\nBenchmark                                   Time        CPU\n-----------------------------------------------------------\nBM_MatrixMatrixMultiplyDynamic/2/2/2     -0.1082    -0.1083\nBM_MatrixMatrixMultiplyDynamic/2/2/15    -0.1270    -0.1270\nBM_MatrixMatrixMultiplyDynamic/2/4/2     -0.1433    -0.1433\nBM_MatrixMatrixMultiplyDynamic/2/4/15    -0.2069    -0.2068\nBM_MatrixMatrixMultiplyDynamic/2/6/2     -0.1446    -0.1446\nBM_MatrixMatrixMultiplyDynamic/2/6/15    -0.2156    -0.2156\nBM_MatrixMatrixMultiplyDynamic/2/8/2     -0.1788    -0.1788\nBM_MatrixMatrixMultiplyDynamic/2/8/15    -0.3316    -0.3316\nBM_MatrixMatrixMultiplyDynamic/2/10/2    -0.2025    -0.2025\nBM_MatrixMatrixMultiplyDynamic/2/10/15   -0.3444    -0.3444\nBM_MatrixMatrixMultiplyDynamic/2/12/2    -0.0515    -0.0515\nBM_MatrixMatrixMultiplyDynamic/2/12/15   -0.3733    -0.3733\nBM_MatrixMatrixMultiplyDynamic/2/15/2    -0.2784    -0.2784\nBM_MatrixMatrixMultiplyDynamic/2/15/15   -0.3704    -0.3704\nBM_MatrixMatrixMultiplyDynamic/4/2/2     -0.1839    -0.1839\nBM_MatrixMatrixMultiplyDynamic/4/2/15    -0.1922    -0.1922\nBM_MatrixMatrixMultiplyDynamic/4/4/2     -0.2248    -0.2248\nBM_MatrixMatrixMultiplyDynamic/4/4/15    -0.3132    -0.3132\nBM_MatrixMatrixMultiplyDynamic/4/6/2     -0.2311    -0.2311\nBM_MatrixMatrixMultiplyDynamic/4/6/15    -0.3239    -0.3239\nBM_MatrixMatrixMultiplyDynamic/4/8/2     -0.0574    -0.0574\nBM_MatrixMatrixMultiplyDynamic/4/8/15    -0.4173    -0.4173\nBM_MatrixMatrixMultiplyDynamic/4/10/2    -0.2861    -0.2861\nBM_MatrixMatrixMultiplyDynamic/4/10/15   -0.4065    -0.4064\nBM_MatrixMatrixMultiplyDynamic/4/12/2    -0.2976    -0.2975\nBM_MatrixMatrixMultiplyDynamic/4/12/15   -0.4218    -0.4218\nBM_MatrixMatrixMultiplyDynamic/4/15/2    -0.3116    -0.3116\nBM_MatrixMatrixMultiplyDynamic/4/15/15   -0.4242    -0.4241\nBM_MatrixMatrixMultiplyDynamic/8/12/2    -0.3675    -0.3674\nBM_MatrixMatrixMultiplyDynamic/8/12/4    -0.5055    -0.5055\nBM_MatrixMatrixMultiplyDynamic/8/12/6    -0.4302    -0.4302\nBM_MatrixMatrixMultiplyDynamic/8/12/8    -0.4854    -0.4854\nBM_MatrixMatrixMultiplyDynamic/8/12/10   -0.4882    -0.4882\nBM_MatrixMatrixMultiplyDynamic/8/12/12   -0.5209    -0.5209\nBM_MatrixMatrixMultiplyDynamic/8/12/15   -0.4558    -0.4558\nBM_MatrixMatrixMultiplyDynamic/8/15/2    -0.2319    -0.2319\nBM_MatrixMatrixMultiplyDynamic/8/15/4    -0.5105    -0.5105\nBM_MatrixMatrixMultiplyDynamic/8/15/6    -0.4477    -0.4477\nBM_MatrixMatrixMultiplyDynamic/8/15/8    -0.5479    -0.5479\nBM_MatrixMatrixMultiplyDynamic/8/15/10   -0.4843    -0.4843\nBM_MatrixMatrixMultiplyDynamic/8/15/12   -0.5212    -0.5212\nBM_MatrixMatrixMultiplyDynamic/8/15/15   -0.4459    -0.4459\n\nBM_MatrixVectorMultiply/1/1              +0.0978    +0.0978\nBM_MatrixVectorMultiply/1/2              +0.0551    +0.0551\nBM_MatrixVectorMultiply/1/3              -0.0019    -0.0020\nBM_MatrixVectorMultiply/1/4              +0.0563    +0.0562\nBM_MatrixVectorMultiply/1/6              +0.1379    +0.1379\nBM_MatrixVectorMultiply/1/7              +0.1090    +0.1090\nBM_MatrixVectorMultiply/1/12             +0.0901    +0.0901\nBM_MatrixVectorMultiply/1/16             +0.0493    +0.0493\nBM_MatrixVectorMultiply/1/20             +0.2255    +0.2255\nBM_MatrixVectorMultiply/2/1              +0.1261    +0.1261\nBM_MatrixVectorMultiply/2/2              +0.2328    +0.2328\nBM_MatrixVectorMultiply/2/3              +0.1404    +0.1403\nBM_MatrixVectorMultiply/2/4              +0.0257    +0.0256\nBM_MatrixVectorMultiply/2/6              -0.1691    -0.1691\nBM_MatrixVectorMultiply/2/7              -0.2619    -0.2619\nBM_MatrixVectorMultiply/2/12             -0.4261    -0.4261\nBM_MatrixVectorMultiply/2/16             -0.5387    -0.5387\nBM_MatrixVectorMultiply/2/20             -0.6171    -0.6171\nBM_MatrixVectorMultiply/3/1              +0.1664    +0.1664\nBM_MatrixVectorMultiply/3/2              +0.0848    +0.0848\nBM_MatrixVectorMultiply/3/3              -0.0044    -0.0044\nBM_MatrixVectorMultiply/3/4              -0.0683    -0.0684\nBM_MatrixVectorMultiply/3/6              -0.1652    -0.1652\nBM_MatrixVectorMultiply/3/7              -0.1633    -0.1633\nBM_MatrixVectorMultiply/3/12             -0.1921    -0.1921\nBM_MatrixVectorMultiply/3/16             -0.3659    -0.3659\nBM_MatrixVectorMultiply/3/20             -0.4137    -0.4137\nBM_MatrixVectorMultiply/4/1              -0.0577    -0.0577\nBM_MatrixVectorMultiply/4/2              -0.1337    -0.1338\nBM_MatrixVectorMultiply/4/3              -0.1443    -0.1443\nBM_MatrixVectorMultiply/4/4              +0.0013    +0.0013\nBM_MatrixVectorMultiply/4/6              -0.1071    -0.1071\nBM_MatrixVectorMultiply/4/7              -0.1396    -0.1397\nBM_MatrixVectorMultiply/4/12             -0.2792    -0.2792\nBM_MatrixVectorMultiply/4/16             -0.4485    -0.4486\nBM_MatrixVectorMultiply/4/20             -0.3588    -0.3588\n\nChange-Id: I64a8cf11391e3d06341a2b8764cd1b4f1b8a23f1\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "264ac53047ddaaf8a45c339f4759b281efcf910c",
      "old_mode": 33188,
      "old_path": "internal/ceres/small_blas.h",
      "new_id": "34b4ec7adcba61f6842a44c7fcd6de0d0f56ad57",
      "new_mode": 33188,
      "new_path": "internal/ceres/small_blas.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "978c5d56a8427978c625c7684a0869890aa93359",
      "new_mode": 33188,
      "new_path": "internal/ceres/small_blas_generic.h"
    }
  ]
}
