3.7 KiB
Introduction of host RT structure
Compiling Environment
Linux, C++17 is required.
Installation Instruction
Temporarily only support cmake.
Simply just do
-
Method 1:
mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=path make -j cd .. cmake --install build -
Method 2:
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=path cmake --build build -j cmake --install build -
Mehtod 3: in your project CMakeLists.txt add following command:
set(CALRT_DIR /paht/calrt/hostrt/cmake/calrt) find_package(calrt REQUIRED PATHS ${CALRT_DIR})
If you are running on PLD, please add
cmake -DPLD_MODE=ON ..
If not define-DCMAKE_INSTALL_PREFIX, config cmake file would be install at the default path/usr/local/
If define it, when building your own project with cmakelist, docmake -DCMAKE_PREFIX_PATH=path ... path is where you install calrt cmake files. Calrt Lib is required Threads lib
Example
cd /path/calrt/hostrt
cmake -S . -B build -DCMAKE_INSTALL_PREFIX=./
cmake --build build -j
cmake --install build
cd /your_project/build
cmake -DCMAKE_PREFIX_PATH=/path/calrt/hostrt/lib/cmake/calrt ..
make -j
Project Layout
- bak: A common backup module for potential uses.
- driver: Calculet Device PCIE Driver.
- include: RT header files.
- main: demo main files.
- src: RT definetion files.
- 3rd_party_licens.md
- LICENSE
Src Folder Structure
under src folder, it lists multiple functional modules, such as:
- device
- calcore_cmd
- deploy
- inference
- calrt_utils.cpp:
- calrt.cpp: top interface implement for 'C' environment.
- loguru.cpp: 3rd party log system. Developing Use Only
- xxhash.c: 3rd party hash algorithm.
Calculet Runtime API Documentation
Coding Style [Developer Notice]
Basically follow up Camel-Case. It is better to document each class in header file, following "Docs as Code" to avoid massive documentation work.
-
Member Variable: 'p' stands for 'pointer', 'm' stands for member'. Naming rule: adj. + noun.
- Pointer Member Variable:
int *pmIntValue. - Non-pointer Member Variable:
int intValue.
- Pointer Member Variable:
-
Member Function: Naming fule: verb. + noun. such as
void DrawBox(). -
Non-member Function: Discuss: follow same rule as member function but it may not be Captial Letter. E.G.
void drawBox(). -
Const var/Func: Every letter must be captial with underline. E.G.
const int MAX_DDR_SIZE = 1024. -
Interface: Functions that explose to user. Discuss all small letter with underline. E.G.
void draw_box(). -
Struct: Must have _s as struct name postfix. E.G.
struct MyStruct_s{};. -
Enumeration: Must have _e as enumeration postfix. E.G.
enum MyEnum_e{};.
Constraint for memory_reserved_info.txt
Must follow these rules:
- Only left blank space if it is a different column or topic.
- E.G. tensor_name shape
- If element is a list, then the list must obey blank-free rule.
- Only use English-style comma ',' to seperate your data.
- E.G. shape
[224,224,3] - E.G. shape
[224, 224, 3]ERROR!!!
- E.G. shape
- Must have a pair of ccu ELF
- E.G. ccu0_chip0.bin, ccu1_chip0.bin TRUE ^^
- E.G. ccu0_chip0.bin ccu0_chip1.bin ERROR!
Additional
About Member Variable naming rule, it is flexible. But the essential idea is prefix -- 'p' stands for 'pointer', 'm' stands for 'member'. It can be m_width or mWidth, while i do recommand second one. But it really doesn't matter at all.