0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WSL2 で DirectML(Direct Machine Learning) を見え据えて, DirectML を llvm-mingw(clang) でビルドする

Last updated at Posted at 2020-06-21

背景

  • Linux and Windows で Vulkan で機械学習をしたい
  • WSL2 で Linux から DirectX/DirectML/Vulkan/OpenCL/CUDA が使えるようになる(声明だけ)
  • Vulkan 自体には(まだ)機械学習関連は無いので, とりあえず DirectML でしのぐ
    • WINE or Mesa チームが, DirectML の Vulkan 実装を作ってくれるかも?という期待もある.
    • ちなみに WINE or Mesa チームは, D3D12 を Vulkan で動かせるようにしてくれています.

現状, WSL2 環境で DirectML/Vulkan/OpenCL を Linux C/C++ アプリ側からどう使うのかは不明です.
(clang(-cl) で Windows 関連ヘッダを直接扱えるようにするのか, なにかしら stub ファイルを用意するのですかね)

とりあえず llvm-mingw(clang) で DirectML.h を使うビルド環境を整えておいて, あとで Linux に移行しやすいようにしておきたいです.
directml.h のコンパイルが通るのは確認しました.

セットアップ

d3d12.h と directml.h あたりのヘッダが必要なので, Windows SDK を取得しておきます.

DirectML を使うには 10.0.18362.0 or later(MSVC version 16.2 or later) が必要になります.

DirectML.h は Timestamp は 2018 年と以外と前から存在しています.

llvm-mingw(clang)で,

  • 他の windows 関連のシステムヘッダは mingw のほうを見るようにする
    • e.g. d3d12.h, directml.h だけ別フォルダで管理など
  • C++ モードでコンパイルする(directml.h がクラス継承など使っているため)
    • C モードだとそもそもだめっぽい
  • http://tsubaki.hatenablog.com/entry/20110115/1295080728 を参考にちょこっと修正

で, 一応ビルドができるのは確認しました.

ただ, 実際にはここから Microsoft 独自の COM(?) コードを書いての API 呼び出しなどがあるため, 道は遠いです.

WSL2 で正式に GPU 使えるのも来年のようですし, 1 ~ 2 年くらいかけてゆっくり開発環境対応ですかね.

その他参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?