[quote="tqchen, post:28, topic:6844"] Another way to think about it is that llvm itself is a target, and we happened to have a JIT engine locally for that target. [/quote]
This is precisely the point of view that I strongly disagree with. The code that runs is not LLVM IR, it must be compiled to whatever the target triple happens to be. Any LLVM IR that we can generate at some point is not target-agnostic, on the contrary, it's very much target-specific. That target should be what we consider the "target" here. Calling it "llvm" only serves to obfuscate this. There is more to this, but let me try to be succint. 1. `target='llvm'` means LLVM with `-target=` whatever the default triple is for the LLVM libraries linked into TVM. It will happen to be the same as host most of the time, but it is more of a coincidence rather than a conscious choice. If this target triple doesn't agree with the host platform, and we attempt to JIT something, TVM will crash. 2. If we want to build for Android, we still have to use the `llvm` target, even though there is no JIT supported. LLVM (as in "compiler framework") does support JITing on ARM/AArch64, but TVM doesn't use it (due to Android limitations). So, here there is `llvm` target that doesn't come with JIT. If we propose a target for a specific GPU device, we should also have a specific target for Android CPU instead of the awkward `llvm -target=aarch64...`. Similarly, for "the CPU of the system we're running on", we should use something like `host`. --- [Visit Topic](https://discuss.tvm.ai/t/rfc-tvm-target-specification/6844/29) to respond. You are receiving this because you enabled mailing list mode. To unsubscribe from these emails, [click here](https://discuss.tvm.ai/email/unsubscribe/7a2f0863c1140f7a50676391753dbb1b80e288a62d9bcedd1998ef1ec3edb2e1).