分類: ZLUDA

  • ZLUDA 收官之戰 – 它還只是個孩子啊!

    ZLUDA 收官之戰 – 它還只是個孩子啊!

    承上文:

    ZLUDA 拓荒之路 – 榨乾 Intel CPU 算力的中短期方案

     

    先說結論:

    ZLUDA 目前在我的環境測試起來並不支援一些好棒棒框架,

    像是 PyTorch、Numba 之類的,雖然我沒有測試,但是有足夠信心認為 Tenserflow 也不支援。

    先附上我的環境:

    OS: Ubuntu 22.04

    Intel GPU: UHD 770

    我的測試方式是下載 ZLUDA 的 Releases 2 的版本

    這個解開會有一個資料夾內含兩個 .so 檔,

    將想執行的檔案放在與 .so 檔同個資料夾下執行即可。

    但是像作者一樣測試 GeekBench 5.2.3 的話是會過的,

    數據差別不大,至於為什麼測出沒有 Sobel 測項?

    因為要有那個測項要付錢啊啊啊啊啊!
    GeekBench 5.2.3 官網下載點

    接著我要勘誤上篇關於 CUDA 與 ZLUDA 的引用關係,

    後來發現 ZLUDA 使用上應該是要完全取代 CUDA 的,

    所以你不裝 CUDA 它也會跑得起來。

    但由於 ZLUDA 並沒有支援 CUDA 的所有功能,

    加上我猜測它是針對某版的 CUDA 來開發的,

    所以 API 串接那邊也會報錯,而 CUDA 本家會動態連結這些函式,

    導致 ZLUDA 的支援性很低。

    最後來談談這東西的未來性還有有志之士可以怎麼發展下去?

    我認為這東西會踩到 Intel 把拔的 oneAPI 計畫,

    短時間內應該就這樣了。

    所以除非有誰與 Nvidia, Intel 同時具有競爭關係又做 CPU + GPU?

    ZLUDA 才會復活。

    (望向蘇媽)

    有志之士的話可以接著試試看,

    因為我曾經在 Python 3.7 及上述環境中讓 Numba 呼叫到 Intel UHD 770 的硬體。

    以下是給有志之士的簡易指南:

    1.確認自己手上有(消費級 Intel CPU 超過 8代 或  Intel XE CPU)且 (有內顯)

    2.裝 Intel 內顯驅動(Ubuntu 20.04 可以參考這篇, 22.04 也可以參考但記得不用降內核)

    3.確認內顯驅動有裝好xD

    4.裝 Python3.7 + Numba 0.49 – 0.58 版本,我印象當時是裝這區間。

    5.下載 ZLUDA 的 Releases 2 的版本 來測試

    裝驅動的時候要特別注意,

    我在那邊卡很久,不一定第一次會裝好,

    重複裝的時候不要反安裝到這個 gawk libc6-dev udev,

    這套件就算你不 –purge 都會幫你把 Gnome 還有一拖拉庫東西 拆掉 :)

    最後講一下 Intel 的 oneAPI,

    我用過裡面的 Intel® oneAPI Base Toolkit + Intel® AI Analytics Toolkit(PyTorch 最佳化)

    用同一台機器來計算同一份呼叫到 PyTorch 的檔案,

    用 Intel 方案的環境會算得比純 PyTorch 版本還要慢。

    就是大家可以收一收回家了,感謝各位。

    如果有志之士想討論 or Intel 官方想維護一下自己的東西(#。

    歡迎聯絡我:

    wuyiulin@gmail.com

  • ZLUDA 拓荒之路 – 榨乾 Intel CPU 算力的中短期方案

     

    在開始壞壞之前,我們先了解一下 ZLUDA 是什麼?

    ZLUDA 是一款很有理想的開源套件,

    號稱能模擬閉源的 CUDA ,只用 Intel CPU 就能執行現有的 CUDA code。

    但實際用下去發現還是有一點小限制,

    畢竟作者本人在 2021 年跳坑了(用膝蓋猜是被 I社把拔的 Arc 顯卡利益衝突到)。

    目前 Linux 系列只支援到 5.19 Kernel,

    如果你跟我一樣用 Ubuntu 22.04 也是失去支援。

    Windows 戰場就優質許多,

    只要你是臺正常的家用主機應該都能用!

    畢竟這年代誰還用奔騰與賽揚或是 Atom 當家用 CPU 你說對吧?

    但還是跟一票嵌入式 CPU 說掰掰了,

    因為 ZLADA 主要壓榨的是 UHD 顯示晶片的算力。

    話不多說,先來下載在 windows 上面用:

    下載連結

    下載完解壓縮,你的框架套件(PyTorch 等)也不用重裝,

    就直接:

    zluda_wuth.exe -- python your_py_file.py

    就能跑了,484很方便?

    Ummmm,通常是不會那麼方便啦。

    有幾點要特別注意,因為這貨是模擬 CUDA 所以不是真的尻 CUDA 出來用。

    你的框架套件配合 CUDA 版本要看 nvidia-smi 上面你裝的 Nvidia Driver 支援的比較準,

    而不是 nvcc -V 出來的真實 CUDA 版本。

    不然注入 zlida_with.exe 的時候會說你的 Driver 與 CUDA mismatch。

    聽起來有點模糊對不對?

    簡單來說,

    如果你下 nvidia-smi 發現自己 Nvidia Driver 是 53X.xx 版,配合的 CUDA 是 12.2,

    而 nvcc -V 出來的真實 CUDA 版本是 10.0?

    那麼你 PyTorch 就要按照 Nvidia Driver 配合的 CUDA 裝,而不是裝 cu100 系列的 PyTorch。

    這點要特別注意!

    還有就是如果在 conda 環境內遇到 Python3.8 的 dll loss 問題,

    需要重新安裝 Python ?

    切記在 conda 裡面重新安裝 Python ,套件會繼承下來,

    這會與之前舊有的 PyTorch 連動產生一些問題。

    像是好事的 PyTorch 1.8.1 會喜歡幫你更新 typing_extensions,

    如果你重新安裝了低版本的 Python (e.g. 3.8 -> 3.7)

    會遇到 typing_extensions 錯誤,而且長得很像你程式寫錯:

    File “C:UsersuserNameanaconda3envsmyenvlibsite-packagestyping_extensions.py”, line 874
        def TypedDict(typename, fields=_marker, /, *, total=True, **kwargs):
                                                ^
    SyntaxError: invalid syntax


    莫急莫慌莫害怕,先查一下 typing-extensions 版本是不是被繼承?

    是的話直接:

    pip show typing-extensions
    pip uninstall typing_extensions
    pip install typing_extensions
    

    我印象還因為 zluda 處理了一些 deadlock 問題,

    還好天公疼憨人讓我順手解開了。

    以上就能讓 ZLUDA 在 Windows 上順利跑起來!

    結論時間:

    ZLUDA 真的能取代低階 GPU (_050, _060)的 inference task 嗎?

    以下情況是拿 Alder Lake 的 i5 去測的結論,

    某些情況會比純 CPU inference 快一點,

    但要 Costdown 還是想多了。

    有進步,但不多!