Andrzej Janik oznámil vydání ZLUDA 5, open-source implementace technologie CUDA. Cílem projektu je umožnit běh nemodifikovaných CUDA aplikací na systémech s grafickými procesory jiných výrobců než NVIDIA s výkonem blízkým aplikacím běžícím bez interpoziční procesory. Kód projektu je napsán v jazyce Rust a je licencován pod licencemi MIT a Apache 2.0.
ZLUDA 5 byla druhou významnou verzí projektu, která vznikla po vyčištění kódové základny od kódu vyvinutého během Andrzejova působení v AMD. Od roku 2022 Andrzej pracoval v AMD na vytvoření vrstvy kompatibility CUDA pro grafické procesory AMD, ale projekt byl v roce 2024 ukončen. V souladu s podmínkami své smlouvy a po obdržení povolení k publikaci od zástupce AMD Andrzej zveřejnil práci, kterou vyvinul během svého působení v AMD, s otevřeným zdrojovým kódem, což umožnilo spouštění aplikací CUDA nad ROCm stackem a běhovým prostředím Heterogeneous Computing Interface for Portability (HIP).
Loni byl Andrzej nucen odstranit svůj kód z otevřeného přístupu poté, co dopis od právníků jasně ukázal, že povolení udělené v e-mailové korespondenci je neplatné. Poté začal Andrzej pracovat na nové verzi ZLUDA, založené na kódové základně, která existovala předtím, než Andrzej nastoupil do AMD. V současné době se projekt zaměřuje na aplikace, které využívají CUDA k urychlení úloh strojového učení. Projekt je v současné době omezen na grafické procesory AMD, ale nakonec bude adaptován i pro grafické procesory Intel.
Klíčová vylepšení v nové verzi:
- Přidána počáteční podpora pro spouštění frameworků llm.c, Llama.cpp a PyTorch nad ZLUDA pro spouštění rozsáhlých jazykových modelů pomocí optimalizací CUDA pro grafické karty NVIDIA.
- Byla implementována počáteční podpora pro spouštění aplikací, které používají knihovny cuBLAS, cuBLASLT a nvml ke zlepšení výkonu.
- Pro trasování aplikací pomocí CUDA byla přidána vrstva zluda_trace. Pomocí zluda_trace můžete diagnostikovat problémy a identifikovat chyby v ZLUDA, které narušují normální běh aplikací.
- Byl zaveden nástroj příkazového řádku zoc (offline kompilátor ZLUDA), který umožňuje kompilaci instrukčních souborů NVIDIA PTX do mezilehlé reprezentace AMD RDNA (dříve byla tato funkce k dispozici jako knihovní funkce).
- Zavaděč modulů PTX implementuje mechanismus ukládání do mezipaměti pro jádra spouštěná na GPU. Ukládání do mezipaměti zabraňuje opětovnému provádění operací náročných na zdroje, jako je kompilace instrukcí PTX (Parallel Thread Execution) do strojového kódu pro daný GPU.
Zdroj: opennet.ru
