小弟最近在跟 GpuOcelot 的 project.底下先就 "build" 跟 "graph" 的一些觀念介紹.
Build Part
how to install GpuOcelot?
Step1. external lib build
可參考 svn 的方式.
http://code.google.com/p/gpuocelot/wiki/Installation,把所需要的lib 依序 build 起來.
Refs:
LLVM 2.8 env set && pass manager set
Boost 1.4.X
ps: default prefix 路徑在 /usr/local/bin, /usr/local/lib 下, 且記得加入到 $PATH 下.
% export PATH=$PATH:/usr/local/bin:/usr/local/lib
% $PATH
Step2. hack source code.
2-1. boost env command
在 1.4 版之後 -lboost_filesystem-mt 改成 -lboost_filesystem.所以要改
./scripts/build_environment.py 內 boost set.
//@ original
env.Replace(EXTRA_LIBS=['-lboost_system-mt',
'-lboost_filesystem-mt', \
'-lboost_thread-mt', '-lGLEW'])
//@ new
env.Replace(EXTRA_LIBS=['-lboost_system',
'-lboost_filesystem', \
'-lboost_thread', '-lGLEW'])
2-2. string 2 char*
ps : 好像在之前的版本沒有這個問題說...
// @ original
// std::ofstream file(_path + "prof." + _kernelName + "_controlFlow.dot");
// @ new
std::string path = _path + "prof." + _kernelName + "_controlFlow.dot";
std::ofstream file(path.c_str());
2-3. enum of class
在./gpuocelot/ocelot/ocelot/ir/interface/PTXOperand.h 中定義了 PTXOperand 的 Layer 如ex(1). 所以要存取 Register時, 應該是 ir::PTXOperand::Register, 而不是 ir::PTXOperand::AddressMode::Register,如果硬要把 AddressMode 加入的話.應該要改成 ex(2), 不過改成 ex(2) 後跟 design sink 不起來.所以還是把 AddressMode 拿掉如 ex(3).
ex(1)
// @ original
namespace ir {
...
class PTXOperand {
enum AddressMode {
Register,
}
...
}
ex(2)
// @ new
namespace ir {
...
class PTXOperand {
class AddressMode {
enum AddressMode {
Register,
}
}
...
ex(3)
// @ original
if (ptxInstruction->a.addressMode == ir::PTXOperand::AddressMode::Special) {
// @ new
if (ptxInstruction->a.addressMode == ir::PTXOperand::Special) {
2-4 lib include
#include "boost/array.hpp"
...
Step3. run & build test
//@ build a& install
% ./build.py -i
//@ build test all
% ./build.py -t full
cd .release_build/
Graph theories Part
可以先從 "
Advanced Compiler Design and Implementation" by Steven Muchnick
這本書看起. Ocelot 裡面有很多 Analysis 的方式是來自這本書的...當然小弟也是在進修中..XD
Dominator (graph theory)
SSA Graph
Tree traversal
沒有留言:
張貼留言