From 2f07e6cc2467b1d44b769804f2aff8854032bd51 Mon Sep 17 00:00:00 2001 From: Luo Tao Date: Thu, 7 Dec 2017 16:17:19 +0800 Subject: [PATCH] add graph in IntelOptimizedReadme --- benchmark/IntelOptimizedPaddle.md | 33 +++++++++---------------- benchmark/figs/googlenet-cpu-train.png | Bin 0 -> 18254 bytes benchmark/figs/resnet-cpu-train.png | Bin 0 -> 20243 bytes benchmark/figs/vgg-cpu-train.png | Bin 0 -> 18336 bytes 4 files changed, 11 insertions(+), 22 deletions(-) create mode 100644 benchmark/figs/googlenet-cpu-train.png create mode 100644 benchmark/figs/resnet-cpu-train.png create mode 100644 benchmark/figs/vgg-cpu-train.png diff --git a/benchmark/IntelOptimizedPaddle.md b/benchmark/IntelOptimizedPaddle.md index 16c2390fd31..26930a76377 100644 --- a/benchmark/IntelOptimizedPaddle.md +++ b/benchmark/IntelOptimizedPaddle.md @@ -2,21 +2,17 @@ Machine: -- Server - - Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz, 2 Sockets, 20 Cores per socket -- Laptop - - DELL XPS15-9560-R1745: i7-7700HQ 8G 256GSSD - - i5 MacBook Pro (Retina, 13-inch, Early 2015) -- Desktop - - i7-6700k +- Server: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz, 2 Sockets, 20 Cores per socket +- Laptop: TBD System: CentOS release 6.3 (Final), Docker 1.12.1. -PaddlePaddle: paddlepaddle/paddle:latest (for MKLML and MKL-DNN), paddlepaddle/paddle:latest-openblas (for OpenBLAS) -- MKL-DNN tag v0.11 -- MKLML 2018.0.1.20171007 -- OpenBLAS v0.2.20 -(TODO: will rerun after 0.11.0) +PaddlePaddle: (TODO: will rerun after 0.11.0) +- paddlepaddle/paddle:latest (for MKLML and MKL-DNN) + - MKL-DNN tag v0.11 + - MKLML 2018.0.1.20171007 +- paddlepaddle/paddle:latest-openblas (for OpenBLAS) + - OpenBLAS v0.2.20 On each machine, we will test and compare the performance of training on single node using MKL-DNN / MKLML / OpenBLAS respectively. @@ -35,9 +31,7 @@ Input image size - 3 * 224 * 224, Time: images/second | MKLML | 12.12 | 13.70 | 16.18 | | MKL-DNN | 28.46 | 29.83 | 30.44 | - -chart on batch size 128 -TBD + - ResNet-50 @@ -47,9 +41,7 @@ TBD | MKLML | 32.52 | 31.89 | 33.12 | | MKL-DNN | 81.69 | 82.35 | 84.08 | - -chart on batch size 128 -TBD + - GoogLeNet @@ -59,10 +51,7 @@ TBD | MKLML | 128.46| 137.89| 158.63 | | MKL-DNN     | 250.46| 264.83| 269.50 | -chart on batch size 128 -TBD + ### Laptop TBD -### Desktop -TBD diff --git a/benchmark/figs/googlenet-cpu-train.png b/benchmark/figs/googlenet-cpu-train.png new file mode 100644 index 0000000000000000000000000000000000000000..c3f67faf096fe9b45dd815f294b41679dc7c9e54 GIT binary patch literal 18254 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 lnuqV?{%77{~KUcujl{( literal 0 HcmV?d00001 diff --git a/benchmark/figs/resnet-cpu-train.png b/benchmark/figs/resnet-cpu-train.png new file mode 100644 index 0000000000000000000000000000000000000000..b96ecd5ff940c0d000613b1ed1f11fb16796cf47 GIT binary patch literal 20243 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 lkO1}p1*qU{{u{0P1OJZ literal 0 HcmV?d00001 diff --git a/benchmark/figs/vgg-cpu-train.png b/benchmark/figs/vgg-cpu-train.png new file mode 100644 index 0000000000000000000000000000000000000000..f830ca6a87d10b72a5113636dd5686ab25a2e864 GIT binary patch literal 18336 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