1 Star 0 Fork 3

xiongying/Halide

forked from Gitee 极速下载/Halide 
Create your Gitee Account
Explore and code with more than 14 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
SelectGPUAPI.cpp 1.36 KB
Copy Edit Raw Blame History
#include "SelectGPUAPI.h"
#include "DeviceInterface.h"
#include "IRMutator.h"
namespace Halide {
namespace Internal {
namespace {
class SelectGPUAPI : public IRMutator {
using IRMutator::visit;
DeviceAPI default_api, parent_api;
Expr visit(const Call *op) override {
if (op->name == "halide_default_device_interface") {
return make_device_interface_call(default_api);
} else {
return IRMutator::visit(op);
}
}
Stmt visit(const For *op) override {
DeviceAPI selected_api = op->device_api;
if (op->device_api == DeviceAPI::Default_GPU) {
selected_api = default_api;
}
DeviceAPI old_parent_api = parent_api;
parent_api = selected_api;
Stmt stmt = IRMutator::visit(op);
parent_api = old_parent_api;
op = stmt.as<For>();
internal_assert(op);
if (op->device_api != selected_api) {
return For::make(op->name, op->min, op->extent, op->for_type, selected_api, op->body);
}
return stmt;
}
public:
SelectGPUAPI(const Target &t) {
default_api = get_default_device_api_for_target(t);
parent_api = DeviceAPI::Host;
}
};
} // namespace
Stmt select_gpu_api(const Stmt &s, const Target &t) {
return SelectGPUAPI(t).mutate(s);
}
} // namespace Internal
} // namespace Halide
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C/C++
1
https://gitee.com/VisionDeveloper/Halide.git
git@gitee.com:VisionDeveloper/Halide.git
VisionDeveloper
Halide
Halide
main

Search