お髭の人が盛り上がっていたTVM and Deep Learning Compiler Conference
当日はTwitterにいろいろ流れてきたのですが、講演ビデオやスライドが公開されていないのでさっぱり。
追記)、2018.12.30
どうやら昨夜(現地時間2018.12.29)に、スライドがアップされたようです。めでたしめでたし。
どうやら昨夜(現地時間2018.12.29)に、スライドがアップされたようです。めでたしめでたし。
でしたが、NTT研究所の森田さんという方がMediumにレポートを。。。
こんな感じで、FPGAのbitstreamを生成するんですね。
引用します import tvm tgt_host="llvm" tgt="aocl_sw_emu" n = tvm.var("n") A = tvm.placeholder((n,), name='A') B = tvm.placeholder((n,), name='B') C = tvm.compute(A.shape, lambda i: A[i] + B[i], name="C") s = tvm.create_schedule(C.op) px, x = s[C].split(C.op.axis[0], nparts=1) s[C].bind(px, tvm.thread_axis("pipeline")) fadd = tvm.build(s, [A, B, C], tgt, target_host=tgt_host, name="myadd") fadd.save("myadd.o") fadd.imported_modules[0].save("myadd.aocx") tvm.contrib.cc.create_shared("myadd.so", ["myadd.o"])
ここでは、"aocl_sw_emu" ということで、エミュレータにて動作させるようですね。
実行は、次のようなコードです。
引用します import tvm import numpy as np import os tgt="aocl_sw_emu" fadd = tvm.module.load("myadd.so") fadd_dev = tvm.module.load("myadd.aocx") fadd.import_module(fadd_dev) ctx = tvm.context(tgt, 0) n = 1024 a = tvm.nd.array(np.random.uniform(size=n).astype("float32"), ctx) b = tvm.nd.array(np.random.uniform(size=n).astype("float32"), ctx) c = tvm.nd.array(np.zeros(n, dtype="float32"), ctx) fadd(a, b, c) tvm.testing.assert_allclose(c.asnumpy(), a.asnumpy() + b.asnumpy())
ランタイムは、こちらのディレクトリ