【Halide】generatorの概要と作成方法

c++

はじめに

Halideはgeneratorという中間ファイルを用いることで、作成したプログラムを再利用可能な部品にカプセル化することができます。

ここではgeneratorの概要とgeneratorの作成手順(スクリプト含め)について紹介します。

generatorとは

概要

Halideで実装したプログラムとGit上にあるGenGen.cppとコンパイル・リンクして、generatorと呼ばれる実行可能な中間ファイルを作成することができます。

generatorを実行すると以下のファイルを自動生成することができます。

  • 静的ライブラリ(.a)
  • オブジェクトファイル(.o)
  • ヘッダファイル(.h)
  • アセンブリファイルなど

ファイルを自動生成する中間ファイルなので「generator」と呼んでいるみたいです。

通常コンパイルとgenerator利用の違い

generatorを利用する理由

generatorを作成しておくことで、後から目的(環境)に合ったファイルを作成することが出来ます

generatorを作成するときに生成するファイルの種類だけではなく、どの環境(target)で使用するかを指定することが出来ます。

Halideはマルチプラットフォームに対応しており、作成したアルゴリズムを当初とは別の環境で使用したいときもgeneratorを活用することですぐに対応できます

対応している環境
CPUX86, ARM, MIPSなど
OSLinux, Windows, macOSなど
GPUCUDA, OpenCLなど
Halideが対応している環境

generatorの作成手順

generatorを作成する手順例

  1. Halideでスクリプト(halide_program.cpp)を作成する
  2. halide_program.cppとGenGen.cppをコンパイル、リンクをすることでgeneratorを作成
  3. generatorを実行する(実行時に、生成するファイルの種類を指定する)
  4. 自動生成されたファイル(オブジェクトファイルなど)を他のソースファイル(main.cpp)で使用する

フォルダ構成

スクリプト例

generatorを作成するscript

自動生成したファイルを利用するscript

Makefile

result

参考サイト

Github(公式)

tutorial(公式)

コメント

タイトルとURLをコピーしました