From ebf4e5a32ce2612ccc18002bf3afb746bec5643c Mon Sep 17 00:00:00 2001 From: Jammy Zhou <jammy.zhou@gmail.com> Date: Fri, 19 Jan 2018 17:40:05 +0000 Subject: [PATCH] Additional mali target support (#794) * Add Mali target support to tvm.target.create * Add Mali target support in codegen --- include/tvm/build_module.h | 3 +++ python/tvm/target.py | 3 +++ src/codegen/build_module.cc | 12 +++++++++++- 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/include/tvm/build_module.h b/include/tvm/build_module.h index 75062e819..ae7ca3ca6 100644 --- a/include/tvm/build_module.h +++ b/include/tvm/build_module.h @@ -73,6 +73,9 @@ EXPORT Target metal(); /*! \return A target for rasp */ EXPORT Target rasp(); +/*! \return A target for Mali */ +EXPORT Target mali(); + /*! \return A target for stackvm */ EXPORT Target stackvm(); diff --git a/python/tvm/target.py b/python/tvm/target.py index 3437e70e0..4584c1aa4 100644 --- a/python/tvm/target.py +++ b/python/tvm/target.py @@ -81,6 +81,7 @@ class Target(object): - :any:`tvm.target.rasp` create raspberry pi target - :any:`tvm.target.cuda` create CUDA target - :any:`tvm.target.rocm` create ROCM target + - :any:`tvm.target.mali` create Mali target """ current = None @@ -306,6 +307,8 @@ def create(target_str): device_name = item.split("=")[1] if device_name == "rasp": return rasp(arr[1:]) + if device_name == "mali": + return mali(arr[1:]) return Target(arr[0], arr[1:]) diff --git a/src/codegen/build_module.cc b/src/codegen/build_module.cc index 2c419d43d..df71a4a41 100644 --- a/src/codegen/build_module.cc +++ b/src/codegen/build_module.cc @@ -70,7 +70,8 @@ Target Target::create(const std::string& target_str) { auto result = device_name == "rasp" ? target::rasp() : - TargetFromName(target_name); + (device_name == "mali" ? target::mali() : + TargetFromName(target_name)); std::string item; while (ss >> item) { @@ -116,6 +117,15 @@ Target rasp() { return Target("llvm", kDLCPU, 512, 1, keys, options); } +Target mali() { + std::unordered_set<std::string> keys({ "rocm", "gpu" }); + std::vector<std::string> options({ + "-device=mali" + }); + return Target("opencl", kDLOpenCL, 256, 1, keys, options); +} + + Target stackvm() { std::unordered_set<std::string> keys({ "stackvm", "cpu" }); std::vector<std::string> options; -- GitLab