Four Ways to Boost Your NumPy Performance

Abstract

無論是資料分析師或研究人員,進行科學運算時,經常會使用Python中的NumPy套件輔助計算,常遭遇的問題之一,是在開發時的測試資料上,程式運算速度相當快速,但當將其ㄧ部署到線上,接收到幾個量級大的實際資料後,運算時間遠遠不如預期,而嚴重影響了系統整體效能或是研究產出。

本場talk會使用一個常見的數學函數當例子,使用4(*)種熱門的方式對其進行最佳化,比較各方案對同一個函數改進後的效能差異,最後分享實際的使用心得、各方案的易用性、相關優劣並且推薦適合的使用情境。

* 會眾需有NumPy使用經驗

Description

針對經常需要使用NumPy進行科學運算的資料分析師或研究人員,在他們碰到NumPy運算瓶頸時,提供數種可能的改善方式,並且在talk的尾聲會進行比較並提出建議: 1. 協助會眾初步認識Python底層的Typed Memoryviews (講解Cython時會使用到) 2. 協助會眾了解4(+1)種常見加速Numpy的方法以及其優劣 (易用性、效能增幅等) 2.1 Cython 2.2 CuPy 2.3 Numba 2.4 Pythran 2.5 Transonic 3. 根據使用經驗給出建議,讓聽眾回去後,在不同環境限制下,可較容易選擇的採用的方案 ### Cython Typed Memoryviews * [Typed Memoryviews] https://cython.readthedocs.io/en/latest/src/userguide/memoryviews.html ### 以下為本講題使用到的專案網址 * [CuPy] https://cupy.chainer.org/ * [Numba] http://numba.pydata.org/ * [Pythran] https://pythran.readthedocs.io/en/latest/ ### Talk Example Code * 演講後放上Github

Speaker

clyang

Cybersecurity hobbyist
Python performance tuning enthusiast