日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Mac M1安装arm64原生Python用veclib加速numpy

發布時間:2024/3/26 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mac M1安装arm64原生Python用veclib加速numpy 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

為什么要用arm64原生Python

之前在Mac M1上用anaconda裝的Python,在活動監視器里會發現是Rosetta轉譯的intel應用,運行Python程序性能會有較大損耗,無法發揮出Mac M1和M1 Max的性能。

如果更換為arm64下原生的Python,Apple的veclib能夠加速numpy,相比加速前后性能提升巨大。而常用的pandas,geopandas,scipy等各種數據分析包都是建立在numpy基礎上,M1和M1 Max經過這樣的配置后將成為數據科學領域的神器。

安裝過程

1.卸載anaconda

Uninstalling Anaconda — Anaconda documentationhttps://docs.anaconda.com/anaconda/install/uninstall/用anaconda-clean刪除配置文件

$ conda install anaconda-clean $ anaconda-clean --yes

再刪除anaconda3文件夾(根據自己anaconda3的路徑)

$ rm?-rf?~/anaconda3

2.安裝MacOSX版本的Miniforge3

參考這個,但有小改動https://gist.github.com/MarkDana/a9481b8134cf38a556cf23e1e815dafbhttps://gist.github.com/MarkDana/a9481b8134cf38a556cf23e1e815dafb

  • 下載?Miniforge3-MacOSX-arm64.sh,
  • 運行下面代碼安裝
  • $ bash Miniforge3-MacOSX-arm64.sh

    3.創建osx-arm64下的Python3.8環境

    我這里用的python3.8測試成功,python3.9不一定能行,各位視情況而定

    $ CONDA_SUBDIR=osx-arm64 conda create -n py38_native python=3.8 -c conda-forge --override-channels

    4.安裝numpy

    $ pip install cython pybind11 $ pip install --no-binary :all: --no-use-pep517 numpy

    安裝好后,在Python里運行

    >>> import numpy >>> numpy.show_config()

    看看里面有沒有/System/Library/Frameworks/vecLib.framework/Headers的路徑,如果有,則說明numpy已經能夠使用apple的veclib進行加速,可以在Python中運行下面代碼測試

    import time import numpy as np np.random.seed(42) a = np.random.uniform(size=(300, 300)) runtimes = 10timecosts = [] for _ in range(runtimes):s_time = time.time()for i in range(100):a += 1np.linalg.svd(a)timecosts.append(time.time() - s_time)print(f'mean of {runtimes} runs: {np.mean(timecosts):.5f}s')

    這段代碼用numpy進行了100次SVD分解,在之前intel版本下實測需要29s,而現在經過veclib加速后只需要1s,提升30倍

    原來的:

    加速的:

    5.安裝其他包

    接下來用pip install安裝其他的包,我測試了一下conda install,不太行,pip install比較穩妥

    jupyter notebook

    $ pip install jupyter notebook

    ?pandas

    $ pip install pandas

    geopandas?

    ?geopandas不容易裝,直接pip install會報錯,conda install也不行,只能一個一個依賴開始裝,主要有問題的是fiona和pyproj這兩個依賴

    1.fiona

    對于fiona,它需要GDAL包作為依賴,用homebrew安裝GDAL

    $ brew install GDAL

    然后再安裝fiona就行

    $ pip install fiona

    2.pyproj

    對于pyproj,它需要PROJ包作為依賴,用homebrew安裝PROJ

    $ brew install PROJ

    然后安裝pyproj,注意這里不能直接安裝最新版(最新是3.3.1),否則會報錯說PROJ_DIR變量沒設置。

    先安裝低版本:

    $ pip install pyproj==1.9.6

    然后再安裝geopandas

    $ pip install geopandas

    成功

    TransBigData和pybdshadow

    這兩個包是我自己寫的包,TransBigData用于處理時空大數據,pybdshadow用于處理建筑陰影,也一起裝上

    $ pip install transbigdata $ pip install pybdshadow

    效果測試

    用我自己開發的pybdshadow測試了一下建筑陰影計算的性能,案例是這個:

    pybdshadow/Example1-building_shadow_analysis.ipynb at main · ni1o1/pybdshadow · GitHubA python package for generating, analyzing and visualizing building shadows - pybdshadow/Example1-building_shadow_analysis.ipynb at main · ni1o1/pybdshadowhttps://github.com/ni1o1/pybdshadow/blob/main/example/Example1-building_shadow_analysis.ipynb算一個片區的建筑陰影

    有加速的情況用了4.7秒:

    沒加速的情況用了8.1秒:

    ?

    ?

    總結

    以上是生活随笔為你收集整理的Mac M1安装arm64原生Python用veclib加速numpy的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。