RPIでHalide

2018年2月17日 - 未分類

Halideは、画商処理を自動的に並列化とかGPU利用とかして、高速化してくれるものらしい。Raspberry Piでの画像処理は早くはないので、試してみました。

まず、 Halideのバイナリーをダウンロードします。これは、Arm7用らしくって、Raspberry Pi Zero WHでは動作しませんでした。Raspberry Pi Model 3を使います。

wget https://github.com/halide/Halide/releases/download/release_2018_02_15/halide-arm32-linux-32-trunk-46d8e9e0cdae456489f1eddfd6d829956fc3c843.tgz

解凍します。
tar zxvf halide-arm32-linux-32-trunk-46d8e9e0cdae456489f1eddfd6d829956fc3c843.tgz

コンパイル前の設定
export LD_LIBRARY_PATH=/home/pi/src/halide/bin

sudo apt-get install libpng12-dev
sudo apt-get install libjpeg-dev

チュートリアルのコンパイル
cd Halide/tutorial

g++ lesson_01__basics.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -o lesson_01_basics

g++ lesson_02_input_image.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_02_input_image

g++ lesson_03_debugging_1.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_03_debugging_1

g++ lesson_04_debugging_2.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_04_debugging_2

g++ lesson_05_scheduling_1.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_05_scheduling_1

g++ lesson_06_realizing_over_shifted_domains.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_06_realizing_over_shifted_domains

g++ lesson_07_multi_stage_pipelines.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_07_multi_stage_pipelines

g++ lesson_08_scheduling_2.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_08_scheduling_2

g++ lesson_09_update_definitions.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_09_update_definitions

g++ lesson_10_aot_compilation_run.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_10_aot_compilation_run

/tmp/ccfyV2RC.o: In function `main’:
/home/pi/src/halide/tutorial/lesson_10_aot_compilation_run.cpp:50: undefined reference to `brighter’

g++ lesson_11_cross_compilation.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_11_cross_compilation

g++ lesson_12_using_the_gpu.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_12_using_the_gpu

g++ lesson_13_tuples.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_13_tuples

g++ lesson_15*.cpp ../tools/GenGen.cpp -g -std=c++11 -fno-rtti -I ../include -L ../bin -lHalide -lpthread -ldl -o lesson_15_generate

g++ lesson_16_rgb_generate.cpp ../tools/GenGen.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_16_rgb_generate

g++ lesson_17_predicated_rdom.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_17_predicated_rdom

g++ lesson_18_parallel_associative_reductions.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_18_parallel_associative_reductions

g++ lesson_19_wrapper_funcs.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_19_wrapper_funcs

g++ lesson_20_cloning_funcs.cpp -g -std=c++11 -fno-rtti -I ../include -I ../tools -L ../bin -lHalide -lpthread -ldl -ljpeg -lpng -o lesson_20_cloning_funcs

openCL依存部分以外は、動作しているみたいです。

Translate »