2016-10-17 11 views
1

今はハライドでコードを書いていましたが、私はいつも自分のスケジュールを書いていました。それから、私はこの論文を読む:http://graphics.cs.cmu.edu/projects/halidesched/mullapudi16_halidesched.pdf。私が理解しているように、最良のスケジュールを生成する方法がいくつかあります。それをどうすればできますか?スケジュールをオートチューニングする方法をハライド

ありがとうございました!

編集:

こんにちは。私は枝を引っ張って、CMAKEでそれを構築しようとしました。しかし、私はそれでハロゲン化物をコンパイルする問題を抱えている:

これは、VS 2015でのエラーです:

4> D:/halideAutoScheduler2/Halide.build/Release\initmod.aarch64_cpu_features_32.ll -> D:/halideAutoScheduler2/Halide.build/Release\initmod.aarch64_cpu_features_32.bc 
4> C:\Program Files (x86)\LLVM\bin\llvm-as.exe: D:/halideAutoScheduler2/Halide.build/Release\initmod.aarch64_cpu_features_32.ll:23:6: error: expected type 
4> !0 = !{!"clang version 3.6.0 (tags/RELEASE_360/final)"} 
4>  ^
4>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppCommon.targets(171,5): error MSB6006: "cmd.exe" exited with code 1. 

任意のヒント?

https://github.com/halide/Halide/tree/auto_schedulerはハライドコードの一部を取り、すべての既存のスケジュールを削除します。

プルこのブランチ

答えて

2

非常に簡単な答えは...。 (私は現在、#if 0を使用していますが、ジェネレータを使用する場合は、明示的なスケジューリングと自動スケジューリングのどちらかを選択する方が良いでしょう)C++コードのパラメータを含むif文を使用するのも良い方法です)

すべての出力をFuncsとし、Func::estimateメソッドを呼び出して、これらの出力の概算範囲を指定します。ただし、自動スケジューラは最小値として推定値を使用することがあります。

次に、で、Funcではないことを確認し、auto_scheduleメソッドを呼び出します。 (A Pipelineは、Funcから構築することができる)Pipelineは、realizeを介して実行されるか、またはcompile_to_fileなどを介してコンパイルされる。

いくつかのスケジューリングは、オートスケジューラと混在することができます(例えば、ストライドとエクステントをアサートするなど)。しかし、複雑なスケジューリングが既に適用されている場合、自動スケジューラがアサートする可能性があります。

関連する問題