Tvm.device and tvm.target, What are they effects?

Can someone help me explain the difference between tvm.device and tvm.target?

I think generally device is hardware (primitives). (codegen) target is software that drives the deivice.

examples of dev v.s. target:

  • NVIDIA GPU ~ CUDA (=> NVPTX)
  • AMD GPU ~ ROCm
  • CPU ~ OPENCL/C/C++ (compiler)
  • PhD students ~ advisors

But if you look at tvm.runtime — tvm 0.9.dev0 documentation you will find that some naming can basically be the same. (“cuda” can stand for either an NVIDIA GPU or your CUDA code/NVCC compiler).

I understand their purpose through your explanation