IRは、名前でFuncを見つけるために歩くことができ、将来の参照のために地図に隠すことができます。しかし、これは単純に低レベルの名前付けの仕組みを解決します。問題は、名前自体がインタフェースの一部となり、スケジューリングがコード構造の低レベルの詳細に固有のままであることです。
この時点では、スケジューリングルーチンが依存できる情報を含む構造体を定義し、それを記入することがより良いものになります(これには、Varの名前も必要です)。 IRを構築するとき。次に、この構造体をC++関数に渡してスケジューリングを行うことができます。スケジューリングの一般的な部分は抽象化することができます。複雑なケースでは、すべてのIRが単一のルーチンで構築され、スケジュールされていても、C++ループなどを使用してFuncのセットにスケジューリングのチャンクを適用することがよくあります。事実上、structはアルゴリズムとスケジュールの間のインタフェースをカプセル化します。
私たちは、C++コードとは別のファイルにスケジュールを書きたい場合には、これをさらに細分化する直列化と逆シリアル化を行っています。しかし、もう一度、コードが動作するためにスケジュールされているコードの詳細を知る必要があります。また、別の言語のスケジューリングや開発のためのプログラミング言語としてシリアル化フォーマットを使用することも含まれます。
現在最も有望な手段は、ヒューリスティックな自動化スケジューリングです。 SIGGRAPHで発表されたRavi Teja Mullapudiらの論文があります。