Denis Nagorny - Pumping Python Performance

16
Pumping Python Performance Sergey Maidanov Software Engineering Manager, Scripting Analyzers & Tools, Intel

Transcript of Denis Nagorny - Pumping Python Performance

Page 1: Denis Nagorny - Pumping Python Performance

Pumping Python PerformanceSergey MaidanovSoftware Engineering Manager, Scripting Analyzers & Tools, Intel

Page 2: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 2STAC Summit, November 2015

Programming Languages by Popularity

Python remains #1 programming language in hiring demand followed by Java and C++

Go and Scala demonstrate strong growth for last 2 years * Source: CodeEval, Feb 2015

Page 3: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 3STAC Summit, November 2015

Programming Languages Productivity

Python Java C++ C0

1

2

3

4

5

Programming complexity (Hours)

Prechelt* Berkholz**

Python Java C++ C0

1

2

3

4

Language Verbosity (LOC/Feature)

Prechelt* Berkholz**

* L.Prechelt, An empirical comparison of seven programming languages, IEEE Computer, 2000, Vol. 33, Issue 10, pp. 23-29** RedMonk - D.Berkholz, Programming languages ranked by expressiveness

Page 4: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 4

Numerical Modeling: From Prototype To Production

1. Pre-Processing

2. Analysis

3. Modeling4. Model Validation

5. Visualizatio

n

1. Pre-processing

2. Model Calibratio

n

3. Decision Making

4. Model Validation

5. Reporting

Prototyping Production

Python*, R*,

Matlab*, Excel*

Fortran*, C++.

Java*/Scala*

HPC/Big Data Cluster

Workstation

STAC Summit, November 2015

MPI*, OpenMP*, Hadoop*, Spark*, …

1x3-10x

and more

Development cost

Development cost

Page 5: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 5STAC Summit, November 2015

Why’s Interpreted Code Unfriendly To Modern HW?Moore’s law still works and will work for at least next 10 years

We have hit limits in Power Instruction level parallelism Clock speed

But not in Transistors (more memory, bigger caches, wider SIMD, specialized

HW) Number of cores

Flop/Byte continues growing 10x worse in last 20 years

Source: J.Cownie, HPC Trends and What They Mean for Me, Imperial College, Oct. 2015

Efficient software development means Optimizations for data locality & contiguity Vectorization Threading

Page 6: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 6STAC Summit, November 2015

Performance: Native vs. Interpreted Code

Python C C (Parallelism)0.1

1

10

100

1000

10000

Black Scholes Formula Moptions/sec

Chapter 19. Performance Optimization of Black Scholes Pricing

Configuration info: - Versions: Intel® Distribution for Python 2.7.10 Technical Preview 1 (Aug 03, 2015), icc 15.0; Hardware: Intel® Xeon® CPU E5-2698 v3 @ 2.30GHz (2 sockets, 16 cores each, HT=OFF), 64 GB of RAM, 8 DIMMS of 8GB@2133MHz; Operating System: Ubuntu 14.04 LTS.

55x

349x

Vectorization, threading, and data locality optimizations

Static compilation

Page 7: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 7

Possible Improvement Approaches

How to make Python more usable in both prototyping & production?

Numerical/machine learning packages (NumPy/SciPy/Scikit-learn) accelerated with native libraries (e.g. Intel® MKL)

Python language extensions that exploit vectorization and multi-core parallelism, e.g. Cython (via GCC/ICC), Numba (LLVM)

Better performance profiling of Python codes Packages and extensions for multi-node parallelism, e.g.

mpi4py Integration with Big Data/ML infrastructures (Hadoop,

Spark)STAC Summit, November 2015

Page 8: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 8

Configuration info: - Versions: Intel® Distribution for Python 2.7.10 Technical Preview 1 (Aug 03, 2015), Ubuntu* built Python*: Python 2.7.10, NumPy 1.9.2 built with gcc 4.8.4; Hardware: Intel® Xeon® CPU E5-2698 v3 @ 2.30GHz (2 sockets, 16 cores each, HT=OFF), 64 GB of RAM, 8 DIMMS of 8GB@2133MHz; Operating System: Ubuntu 14.04 LTS.

SVD Cholesky QR Inv DGEMM 1 1 1 1 12X 4X 4X 4X 4X

22X

61X

70X77X

97X

UbuntuIntel, 1 threadIntel, 32 threads

Spee

dup

Python* Performance Boost on Select Numerical FunctionsIntel® Distribution for Python (Technical Preview) vs. Ubuntu Python

N=10000 N=40000 N=30000 N=25000 N=40000

Python Numerical Packages Acceleration

STAC Summit, November 2015

Page 9: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 9STAC Summit, November 2015

Python Language Extensions For Performance

Python NumExpr Numba Cython C (Parallelism)0.1

1

10

100

1000

10000

Black Scholes Formula Moptions/sec

36x

88x

6x

<35%

Configuration info: - Versions: Intel® Distribution for Python 2.7.10 Technical Preview 1 (Aug 03, 2015), Ubuntu* built Python*: Python 2.7.10, NumPy 1.9.2 built with gcc 4.8.4, llvm 3.6.0, Numba 0.22.0, icc 15.0; Hardware: Intel® Xeon® CPU E5-2698 v3 @ 2.30GHz (2 sockets, 16 cores each, HT=OFF), 64 GB of RAM, 8 DIMMS of 8GB@2133MHz; Operating System: Ubuntu 14.04 LTS.

1x

1.2x

1.5x

10x6x

Development cost

1x

Page 10: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 10

Scientific/Engineering

Web/Social

Business

Data Analytics Usage Models

1. Pre-Processing

2. Analysis

3. Modeling4. Model Validation

5. Visualizatio

n

1. Pre-processing

2. Model Calibratio

n

3. Decision Making

4. Model Validation

5. Reporting

Interactive Modeling Visualization &

ReportingProduction Use

R*, Python*, other 3rd party

tools

C++, Java*, Scala*, Python*

SoftwareDAAL

Software

DAALVisual IDE

Collaboration Services

Data Store

Infrastructure (Comms, Security)

Management (Monitoring, Rule

Management)

Client Edge

Data Source Edge

C++, JS, C#

Data Center

Workstation

SQL, noSQL, Files,

Sensor Data

C++, JS, C#

STAC Summit, November 2015

Page 11: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice

Intel Confidential – NDA presentation; presentation contains Intel confidential information presented to customers with a

non-disclosure agreement

11

Big Data Requires End-To-End SolutionsWhat device do I run analytics?

Perform analysis close to data source to optimize response latency, decrease network bandwidth utilization, and maximize security.

Offload data to cluster for large-scale analytics only. Make personalized decisions on a client device

Pre-processing Transformation Analysis Modeling Decision Making

Decompression,Filtering,

Normalization

Aggregation,Dimension Reduction

Summary Statistics

Clustering, etc.

Machine Learning (Training)Parameter Estimation

SimulationForecasting

Decision Trees, etc.

Scie

ntifi

c/En

gine

erin

g

Web

/Soc

ial

Busin

ess

Compute (Server, Desktop, etc ) Client Edge

Data Source Edge

Validation

Hypothesis testingModel errors

STAC Summit, November 2015

Page 12: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 12

Kernel D Dense

Big Data Flow and Computational Flow

Observations, nTime

Mem

ory

Capa

city

CategoricalBlank/Missing

Numeric

Attri

bute

s, p

Big Data Attributes Computational SolutionDistributed across different nodes/devices

•Distributed computing, e.g. comm-avoiding algorithms

Huge data size not fitting into device memory

•Distributed computing•Streaming algorithms

Data coming in time •Data buffering•Streaming algorithms

Non-homogeneous data •CategoricalNumeric (counters, histograms, etc)•Homogeneous numeric data kernels• Conversions, Indexing, Repacking

Sparse/Missing/Noisy data •Sparse data algorithms•Recovery methods (bootstrapping, outlier correction)

Distributed Computing Streaming Computing

D1D2D3

Si+1 = T(Si,Di)Ri+1 = F(Si+1)

R1

Rk

D1

D2

Dk

R2 RSi,Ri

Offline Computing

D1Dk-

1

Dk

R…

Append

R = F(D1,…,Dk)

Converts, Indexing, Repacking

Data Recovery

FD

F

ICC

B

FD

F

ICC

B

FD

F

ICC

B

FD

F

ICC

B

12

7

456

3

C C C C8

DD

DD

DD

DD

12

D D D D4D D D D7

DD

DD

DD

DD

Kernel CIndexed

DD

DD

DD

DD

Counter

Histogram

I

I I I I

FD

F

ICC

B

FD

F

ICC

B

FD

F

ICC

B

FD

F

ICC

B

12

7

456

3

C C C C8

Outlier

FD

F

ICC

B

FD

F

ICC

B

FD

F

ICC

B

FD

F

ICC

B

C C C C

Recover

STAC Summit, November 2015

Page 13: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 13

Intel® DAAL – Essentials for End-To-End Analytics• C++ and Java*/Scala* library for data

analytics• Targeting Python and R interfaces in future

releases• “MKL” for machine learning with a few key

differences• Optimizes entire data flow vs. compute part

only • Targets both data center and edge devices

• Supports offline, online and distributed data processing

• Abstracted from cross-device communication layer• Allows plugging in different Big Data & IoT

analytics frameworks• Comes with samples for Hadoop*, Spark*, MPI*

• Builds upon MKL/IPP for best performance

1M x 200 1M x 400 1M x 600 1M x 800 1M x 10000

2

4

6

8

4X6X 6X 7X 7X

PCA (correlation method) on an 8-node Hadoop* cluster based on Intel® Xeon®

Processors E5-2697 v3

Table size

Spee

dup

Configuration Info - Versions: Intel® Data Analytics Acceleration Library 2016, CDH v5.3.1, Apache Spark* v1.2.0, Weka 3.6.12; Hardware: Intel® Xeon® Processor E5-2699 v3, 2 Eighteen-core CPUs (45MB LLC, 2.3GHz), 128GB of RAM per node; Operating System: CentOS 6.6 x86_64.

02040

2.75X 12X 23X38X

Apriori on Intel® Xeon® Processor E5-2699 v3

Spee

dup

STAC Summit, November 2015

Page 14: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice Intel Confidential – NDA presentation; presentation c

ontains Intel confidential information presented to customers with a non-disclosure agreement

14

Summary• Python is among top productivity languages• Python is unfriendly to modern hardware, and hence to production use• New tools and libraries allow making tradeoff between productivity and

performance• Intel is investing in Python to be more usable in prototyping and production• Intel® Distribution for Python - in Tech Preview Now!• Intel® VTune Amplifier for Python – available for evaluation Now!

• Big Data analytics requires end-to-end solutions• Intel has “end-to-end” response for new analytics challenges• Intel® Data Analytics Acceleration Library 2016 product available Now!

Page 15: Denis Nagorny - Pumping Python Performance

Copyright © 2015, Intel Corporation. All rights reserved. *Other names and brands may be claimed as the property of others.

Optimization Notice 15STAC Summit, November 2015

Legal Disclaimer & Optimization NoticeINFORMATION IN THIS DOCUMENT IS PROVIDED “AS IS”. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. INTEL ASSUMES NO LIABILITY WHATSOEVER AND INTEL DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO THIS INFORMATION INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY PATENT, COPYRIGHT OR OTHER INTELLECTUAL PROPERTY RIGHT.

Software and workloads used in performance tests may have been optimized for performance only on Intel microprocessors. Performance tests, such as SYSmark and MobileMark, are measured using specific computer systems, components, software, operations and functions. Any change to any of those factors may cause the results to vary. You should consult other information and performance tests to assist you in fully evaluating your contemplated purchases, including the performance of that product when combined with other products.

Copyright © 2015, Intel Corporation. All rights reserved. Intel, Pentium, Xeon, Xeon Phi, Core, VTune, Cilk, and the Intel logo are trademarks of Intel Corporation in the U.S. and other countries.

Optimization NoticeIntel’s compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.

Notice revision #20110804

15

Page 16: Denis Nagorny - Pumping Python Performance