3 ポイント 投稿者 GN⁺ 2024-03-06 | 1件のコメント | WhatsAppで共有
  • ZLUDA 3は、CUDAに縛られていたNVIDIA GPU向けアプリケーションをAMD GPU上で修正なしに実行しようとするオープンソース技術
  • Intel GPU向けのCUDA代替実装として始まったが、IntelとAMDでの評価が打ち切られたため、今回はAMD GPU向けコードが公開された
  • BlenderではネイティブHIPバックエンドに近い性能を示す例がある一方、3DF ZephyrとRealityCaptureはZLUDA上で「much slower」とされており、アプリごとの差が大きい
  • RealityCaptureやArnoldのようなNVIDIA専用CGアプリの実行可能性は確認されたが、OptiX対応はLinuxで最低限の水準にとどまり、レンダリングワークフローには制約がある
  • Intel・AMDの支援がない状況で、プロジェクトは「realistically now abandoned」に近く、NVIDIA SDKライセンスも非NVIDIAプラットフォーム向け変換レイヤー開発を制限している

ZLUDA 3が解決しようとするCUDA依存の問題

  • ZLUDA 3は、NVIDIA GPU向けに作られたGPUベースのアプリケーションを他社製ハードウェアで動作させるオープンソースプロジェクト
  • 既存アプリケーションを修正なしで新しいハードウェア上で動かすよう設計されており、アプリ開発者に追加の移植作業を求めない
  • ZLUDAは2020年にIntel GPU向けCUDAドロップイン代替実装として初公開され、2021年のバージョン2以降は開発継続が難しくなった
  • Andrzej JanikがIntel在籍中だった2021年、IntelはZLUDAを正式な技術候補として評価したが、「Intel GPUでCUDAアプリケーションを動かすビジネスケースがない」と判断した
  • Janikは2022年にIntelを離れた後AMDにアプローチし、AMDも2年間ZLUDAを評価したが、これ以上進めないことにした
  • その後、更新されたコードがオープンソースとして公開され、関連する背景はPhoronixの記事で詳しく見られる

CGアプリで確認された動作範囲

  • ZLUDA 3は、NVIDIAのCUDA APIで開発されたGPUアプリをAMD GPU上で動かすことを目指している
  • VFX、モーショングラフィックス、可視化の分野では、一部の主要CGアプリやレンダラーがCUDAベースのため、事実上NVIDIA専用のままになっている場合がある
  • AMDのHIPはCUDAアプリをAMDハードウェアへ移植する技術だが、ソフトウェア開発者の作業が必要
    • HIPはRedshiftやBlenderのCyclesのAMD対応版で使われている
    • ZLUDA 3もHIPベースで作られているが、目標は既存CUDAアプリの無修正実行
  • JanikがZLUDAでテストしたNVIDIA専用ソフトウェアには、3DF ZephyrRealityCapture、AutodeskのArnoldが含まれる
  • Arnold対応は概念実証レベルで、ZLUDAのOptiX実装で正常にレンダリングできたシーンは限られている

性能と互換性の現実的な限界

  • Janikは、CUDAアプリはAMD GPU上で「near-native performance」で動作すると評価している
  • PhoronixのベンチマークとBlender Artistsフォーラムのスレッドによれば、BlenderではZLUDAの性能がネイティブHIPバックエンドに近い例がある
  • 一方で、ZLUDAのGitHubリポジトリでは3DF ZephyrとRealityCaptureがZLUDA上でmuch slowerと表示されている
  • 多くのGPUレンダラーは、レイトレーシング高速化のためにCUDAに加えてNVIDIAのOptiXも使用する
    • ZLUDAのOptiX対応は「minimum」レベル
    • OptiX対応はLinuxのみにあり、Windowsにはない
    • 実装状況は「buggy, unoptimized and incomplete」
    • ZLUDA-OptiXは再配布版に含まれておらず、自分でビルドする必要がある
  • 他のCUDAベースCGアプリが動作するかどうかは、ユーザーテストなしでは判断しにくい

プロジェクト継続性とライセンス上の制約

  • Janikは、IntelまたはAMDの支援がなければZLUDAは「realistically now abandoned」状態だと見ている
    • プロジェクトを前進させる提案には前向き
    • そうでなければ、DLSSのように個人的に関心のあるNVIDIA技術への対応だけを追加する可能性が高い
    • 現在のコードも、CUDAからHIPへの段階的な移植を進めるソフトウェア開発者にとって活用できる
  • 2024年3月14日の更新によれば、Tom’s HardwareはNVIDIAのSDKライセンス条件が、CUDA Toolkitを含むSDK成果物を非NVIDIAプラットフォーム向け変換技術の開発に使うことを禁じていると指摘している
  • ZLUDA 3のコンパイル済み版はWindowsとLinux向けに提供され、ソースコードはApache 2.0またはMIT licenseで提供される
  • ZLUDA 3のダウンロードはプロジェクトのGitHubリポジトリから可能

1件のコメント

 
GN⁺ 2024-03-06
Hacker News の意見
  • 22日前にも関連する議論があった:AMD が ROCm ベースの CUDA ドロップイン実装に資金提供し、その後オープンソースとして公開されたという投稿 [0] にコメントが400件付いた
    そのスレッドで注目すべきトップレベルコメントは、公開そのものが AMD が資金提供を打ち切った結果だったという内容:「2年にわたる開発とレビューの末、AMD は AMD GPU で CUDA アプリケーションを実行することに事業性はないと判断した。AMD との契約条件の1つに、AMD がさらなる開発に適さないと判断した場合、私が公開できるというものがあった。だから今日に至った。」出典: https://github.com/vosen/ZLUDA?tab=readme-ov-file#faq
    [0] https://news.ycombinator.com/item?id=39344815

  • AMD がこのプロジェクトへの資金提供を打ち切ったのは本当にばかげている。オープンソースとして公開された途端、AMD ユーザーに価値を生み始めたからだ
    こういうことこそ AMD の最優先課題であるべきに思えるのに、実際には何年もの間、サポートも乏しい代替 API を2つ、今では3つなのか、それにしがみついて迷走していた

    • これが信頼できる選択肢になった瞬間、Nvidia はすぐに停止命令を送り、訴訟を起こすだろう。真面目な解決策としては行き止まりなので、その文脈では理解できる
    • 人々に HIP を使わせたいからかもしれない
      「HIP は非常に薄いので、CUDA モードで直接コーディングする場合と比べて性能への影響はほとんどないか、まったくない」
      「HIPIFY ツールは CUDA ソースを HIP に自動変換する」
      1. https://github.com/ROCm/HIP
    • 戦略的に考えると、これが AMD にとって最善だったとは考えにくい。製品レベルで、法的に検証済みのものでないなら、開発者が AMD 向けにアプリケーションを作り、配布は Nvidia 上で行えるようにするツールになるだけだ
      コンシューマー向けグラフィックカードでは短期的な利益になり得るが、長期的にはデータセンターでの Nvidia の地位を固め続ける自滅策に近い
    • NVIDIA の発表について事前情報を受け取り、この契約者を解放した可能性が高い。契約条件上、プロジェクトはオープンソースになったはずだ
    • ここでは AMD が諦めることを選んだという前提が置かれている。もしかすると、もっと良いものを作っている最中かもしれないのでは?
  • この議論には「Nvidia が CUDA ソフトウェアを他のチップで動かすための変換レイヤーの使用を禁止した」という投稿も関係していそうだ [1]


    [1] https://news.ycombinator.com/item?id=39592689

    • Nvidia ハードウェアを使っておらず、Nvidia ドライバーも使っておらず、Nvidia の EULA に同意したこともないなら、なぜ気にする必要があるのか分からない
      エミュレーションは明示的にも、判例上も法的保護を受けている。互換性目的の API 複製は米国最高裁まで争われ、著作権の対象ではないと判断されたことがある。少なくともかなり広い範囲ではそうだと思う
      弁護士ではないが、Nvidia がどんな法的根拠を期待しているのかよく見えない。Nvidia ハードウェアをまったく持たない個人や会社なら、意味のない争点のように感じる。すでに Nvidia ハードウェアを持つ会社ならある程度主張を展開できるかもしれないが、それはむしろ反競争的行為の領域に正面から入るのではないか?
    • これが Wine/Proton と何が違うのか分からない。Microsoft EULA にも似たような条件があるはずで、執行可能だったなら Microsoft が Wine 開発者たちに同じように停止命令を送っていたのではないか?
    • 当該条項は記事の主張とは違って2022年1月から CUDA EULA にあり、記事の更新内容とは違ってダウンロードにも含まれていた点を改めて強調しておくべきだ
    • それに意味はあるのか? 他のシステムと互換インターフェースを持つシステムを実装するのに、誰かの許可が必要なわけではない
      EULA には違反するが、CUDA ソフトウェアをダウンロードしない限り EULA に同意する必要もなく、ZLUDA の作者たちはおそらくそれを避けられたはずだ
    • NVIDIA にそうする権限はない。ここに NVIDIA SDK は関与していない
  • 「Intel も結局『Intel GPU で CUDA アプリケーションを実行することに事業性はない』と判断した」とは、なんとも厄介だ

    • 簡単に言えば、一定の規模と年数に達した会社はみな、競争者を夢見るよりも独占者を夢見るようになる
    • Intel のグラフィックス部門はあまりにひどく、人々の記憶に残した悪印象のせいで Intel HD という名前を使うのをやめなければならなかった
  • AMD GPGPUを一度でも触ったことがある人なら知っている事実が確認された。AMDが2兆ドル企業になるのを阻んでいる唯一のものは、本当にひどいソフトウェアだ。
    AMDのOpenCLコンパイラのバグを見つけた記憶があるし [1]、セグメンテーションフォルトでOpenCLコンパイラを落とすのもとても簡単だった。それは結局直らなかったので、報告するのを諦めた。
    AMDがCUDAの競合を開発しなかったのは、私が見た中で最も近視眼的な判断だ。最高のハードウェアを作っても、それを使うソフトウェアが控えめに言ってもひどければ、誰も買わないし使わないということを理解している人たちに、なぜ取締役会が入れ替わらなかったのか分からない。
    顧客である私たちは、AMDの取締役会がテーブルの上に置き去りにした1兆ドルほどの価値を気にかけるには彼らが裕福すぎるせいで、高価なNvidiaカードを買わざるを得ない。AMD株を持っている人なら問いただすべきだ。その取締役会は一番近い排水口に流されるべきだ。
    [1] https://github.com/msoos/amdmiscompile -- 結局これは修正された

    • JavaScriptに説明するように、GPGPUが何なのか説明してくれる?
      私の素朴な理解では、グラフィックカードは命令とデータを載せて、あとは勝手に計算させられる奇妙なコンピュータだ。
      CUDAがなぜそんなに大ごとなのか分からない。AMDが自社GPUをArduinoボード4096枚の配列みたいに直接アクセスできるようにしてくれればいいのでは?
    • その通り。逆にAMDは一般にNvidiaよりオープンソースに友好的だ。Nvidiaはしばらく積極的に敵対的で、Linusの「F* you!」動画を見れば十分だ。
      ハードウェアを開発する会社は、たいていソフトウェアが苦手だ。例外はあるが多くはなく、そうした会社は実際に株価で報われている。AMDのソフトウェア部門の文化は知らないが、普通こういうものを直すにはかなり大きな変化が必要だ。
      取締役会を入れ替えるだけで解決するのは難しいだろう。経営トップの指示だけが会社の足を引っ張っている唯一の要因でないなら、もっと多くの管理層を変えなければならず、中間管理職も相当数入れ替える必要がある。ソフトウェア採用がうまくいっていなかったなら、個々の貢献者まで替えなければならない場合もある。
    • AMDがIntelと協力してSYCLを標準のGPGPUおよびヘテロジニアス・プログラミング方式として推さない理由が分からない。
      Intelはソフトウェアが得意で、SYCLは公開標準なので両社とも同じコードから利益を得られ、顧客は望めばThreadripperでもSYCLコードを走らせられる。最近の一部Threadripperは一部GPU並みに速いこともある。
      AMDは独自のプロプライエタリなロックイン・エコシステムを作ろうとしているのか? なぜクロスプラットフォームの公開標準にコミットしないのか分からない。
    • 私はAMD Software自体はかなり気に入っていた。ゲームやソフトウェアが標準で対応していないときに、GPUが全力で回るのを防ぐためフレームレートを60に制限するのが簡単だったし、Shadowplayのように直近数分を常時録画しておくインスタントリプレイをショートカットキーに設定することもできた。
      UPSがよくなかったときはGPUの電力制限もできたし、RX 580をあと1年ほど使うために自動オーバークロックもできた。
      ただし2020年ごろ以降のソフトウェア/ドライバは、VRタイトルを1時間もしないうちにクラッシュさせる。Linux向けのソフトウェアパッケージもなく、CoreCtrlはそこまで良くない。インスタントリプレイがときどき単に動かないこともある。WindowsとLinuxの両方で、ローカルLLMにROCmを一度もまともにつなげられなかったし、DKMSはapt upgradeのたびに無駄なコンパイルを大量にしたがった。
      次のGPUを好奇心でIntel Arcにするか、素直にNvidiaに戻るか悩んでいる。候補はA580、RX 6600、RTX 3050あたりで、ほかの部品の価格が下がるまで粘るかもしれない。
  • Metal、CUDA、AMD側の何かのような複数のカーネル言語にコンパイルされるプログラミング言語はあるのだろうか? ないなら、なぜないのだろう?
    CコンパイラはさまざまなCPUアーキテクチャ向けにコンパイルする。GPUアーキテクチャ向けのコンパイラもあるべきではないか? まだ誰も作っていないだけかもしれない。

    • OpenCLも含めて考えればいい?
      https://www.khronos.org/api/opencl
    • OpenMP 5がGPUサポートを明記した。ざっと検索したところ、一部のコンパイラは今では少なくとも部分的には対応しているようだ。
  • Meshroomのようなオープンソースのフォトグラメトリツールを動かすために、これを使ってみた人はいる? 記事ではいくつかのプロプライエタリなツールが言及されているが、私の必要性はかなり小さい。

  • これはJVMバイトコードの使用をめぐるOracle対Google事件とほとんど同じに見える。

    • そうは見えない。争点はバイトコード変換ではなく、より高いレベルのライブラリの知的財産をハードウェアに結びつけることだ。
      これはGoogleが「我々のAndroidアプリケーションはGoogleが承認した携帯電話でしか実行できない」と言うのに近い。私の理解では、GoogleはPlayフレームワークやMapsのようなものについては実際にそうしている。
  • 最近興味深いうわさを聞いたのだが、NVIDIAでCUDAを担当していた人が、何年もの間、リソースを獲得し、会社を説得してこのプロジェクトを真剣に受け止めさせようと闘っていたらしい。
    CUDAがなければ、NVIDIAが今日ほぼ1兆ドル企業になることは絶対になかっただろう。

  • geohotが高価なAMD GPUと格闘し続けていたことも関係している: https://twitter.com/tinygrad/status/1764734675002810622