我想测试不同的自动调度程序是如何工作的。我知道有3种不同的自动调度程序:"Mullapudi2016“(默认的自动调度程序)、"Adams2019”和"Li2018“。"Adams2019“位于app/autoscheduler (https://github.com/halide/Halide)中,"Li2018”位于gradient_autoscheduler中。但我怎样才能在混凝土管道上使用(例如哈里斯)?我试图在Pipeline.cpp中添加一个新地图,如下所示:
std::map<std::string, AutoSchedulerFn> &Pipeline::get_autoscheduler_map() {
static std::map<std::string, AutoSchedulerFn> autoschedulers = {
{ "Mullapudi2016", auto_schedule_Mullapudi2016 },
{ "Admas2019", auto_schedule_Adams2019 }
};
return autoschedulers;
}"auto_schedule_Adams2019“的定义类似于"auto_schedule_Mullapudi2016",但只是将"generate_schedules”改为"generate_schedule",后者已经在“app/autoscheduler/AutoSchedule.cpp”中定义。
void Pipeline::auto_schedule_Mullapudi2016(Pipeline pipeline, const Target &target,
const MachineParams &arch_params, AutoSchedulerResults *outputs) {
AutoSchedulerResults results;
results.target = target;
results.machine_params_string = arch_params.to_string();
user_assert(target.arch == Target::X86 || target.arch == Target::ARM ||
target.arch == Target::POWERPC || target.arch == Target::MIPS)
<< "The Mullapudi2016 autoscheduler is currently supported only on these architectures." << (int)target.arch;
results.scheduler_name = "Mullapudi2016";
results.schedule_source = generate_schedules(pipeline.contents->outputs, target, arch_params);
// this autoscheduler has no featurization
*outputs = results;
}
void Pipeline::auto_schedule_Adams2019(Pipeline pipeline, const Target &target,
const MachineParams &arch_params, AutoSchedulerResults *outputs) {
AutoSchedulerResults results;
results.target = target;
results.machine_params_string = arch_params.to_string();
user_assert(target.arch == Target::X86 || target.arch == Target::ARM ||
target.arch == Target::POWERPC || target.arch == Target::MIPS)
<< "The Mullapudi2016 autoscheduler is currently supported only on these architectures." << (int)target.arch;
results.scheduler_name = "Adams2019";
results.schedule_source = generate_schedule(pipeline.contents->outputs, target, arch_params);
// this autoscheduler has no featurization
*outputs = results;
}理想情况下,当我在哈里斯中调用auto_schedule时,只需给出调度程序的名称。但是,如何将"harris“项目与”app/autoscheduler“中的自动调度程序"Adams2019”连接起来呢?我想我需要"auto_schedule.dll",它是由auto_schedule编译的。

但不幸的是,我不知道如何将它与我的项目连接起来。是有人有同样的问题,还是有人知道如何使用不同的自动调度程序?
发布于 2019-12-06 00:21:49
将-p标志传递给生成器二进制文件将使其加载插件。李和亚当斯的自动切割机是作为插件构建的。生成器二进制的-s标志从已加载的二进制文件中选择要使用的自动代码程序。穆拉普迪自动编程程序不是一个插件,而是内置的,正如你所说的。
所有这些工作都是在linux和mac上完成的,所以我不确定是否所有的构建系统都在windows上工作。如果你对makefile很满意,看一看应用程序/autoscheduler中的“make演示”,看看事情是如何工作的。
https://stackoverflow.com/questions/59199003
复制相似问题