Как переключить автоматический планировщик "Урок 21: Авто-планировщик" на Adam2019 или Li2018 - PullRequest
1 голос
/ 18 июня 2020

Я считаю, что автоматический планировщик, принятый в lesson_21_auto_scheduler_generate. cpp, является классическим алгоритмом Mullapudi2016. Как переключить этот автоматический планировщик на Adam2019 или Li2018 для этого урока?

Adam2019 все еще находится в экспериментальной стадии? Согласно статье, результат намного лучше, чем у Mullapudi2016. Возможно, разработчикам Halide стоит добавить в туториал урок по использованию Adam2019.

1 Ответ

1 голос
/ 18 июня 2020

Adam2019 все еще находится в экспериментальной стадии?

Нет! Он готов к использованию.

Как мне переключить этот автоматический планировщик на Adam2019 или Li2018 для этого урока?

Это делается при запуске генератора. Запустите генератор без аргументов, чтобы увидеть текст справки, который покажет вам, как загрузить плагин auto_schedule.so. Если вы используете Windows или используете новую сборку CMake, это довольно просто. После сборки и установки Halide в локальный каталог просто:

cmake_minimum_required(VERSION 3.16)
project(Lesson21)

set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_EXTENSIONS NO)

find_package(Halide REQUIRED)

# Add the generator
add_executable(lesson_21_auto_scheduler_generate lesson_21_auto_scheduler_generate.cpp)
target_link_libraries(lesson_21_auto_scheduler_generate PRIVATE Halide::Generator)

# Use the generator to create the two variants that the runner expects
add_halide_library(auto_schedule_false FROM lesson_21_auto_scheduler_generate
                   GENERATOR auto_schedule_gen 
                   PARAMS auto_schedule=false)

add_halide_library(auto_schedule_true FROM lesson_21_auto_scheduler_generate
                   GENERATOR auto_schedule_gen 
                   PARAMS auto_schedule=true
                   AUTOSCHEDULER Halide::Adams2019)

# Link them to the runner executable
add_executable(lesson_21_auto_scheduler_run lesson_21_auto_scheduler_run.cpp)
target_link_libraries(lesson_21_auto_scheduler_run
                      PRIVATE
                      auto_schedule_false 
                      auto_schedule_true
                      Halide::Tools)

Функция add_halide_library управляет запущенными генераторами для создания библиотек stati c. Аргумент AUTOSCHEDULER позволяет выбирать между Halide::Adams2019 и Halide::Li2018. На момент написания вы полностью опускаете его, чтобы выбрать автоматический планировщик classi c (по умолчанию). В будущем он будет переименован в Halide::Mullapudi2016. Вам все равно нужно передать auto_schedule=true в списке PARAMS.

Затем выполните сборку с:

$ cd build
$ cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/path/to/Halide-install ..
$ cmake --build .
$ ./lesson_21_auto_scheduler_run
Manual schedule: 9.31708ms
Auto schedule: 1.64732ms

Возможно, разработчикам Halide стоит добавить урок по использованию Adam2019 в

Я уже давно хотел добавить руководство по использованию Halide из CMake. В сроках нет никаких обещаний, но, надеюсь, я скоро доберусь до него.

...