add minimum documentation
This commit is contained in:
		
							parent
							
								
									d7a85cd7fa
								
							
						
					
					
						commit
						2c8b1361a1
					
				
							
								
								
									
										66
									
								
								README.md
								
								
								
								
							
							
						
						
									
										66
									
								
								README.md
								
								
								
								
							| 
						 | 
					@ -1,2 +1,66 @@
 | 
				
			||||||
# ONNF
 | 
					# ONNF
 | 
				
			||||||
Open Neural Network Frontend
 | 
					Open Neural Network Frontend : an ONNX frontend to MLIR.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[](https://circleci.com/gh/clang-ykt/ONNF)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Installation
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					We assume an existing installation of MLIR. The LLVM-Project repo commit hash we used to test against is 9b6ad8466bb8b97082b705270603ad7f4559e931 and the MLIR repo commit hash we used is 0710266d0f56cf6ab0f437badbd7416b6cecdf5f. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Two environment variables need to be set:
 | 
				
			||||||
 | 
					- LLVM_SRC should point to the llvm src directory (e.g., llvm-project/llvm).
 | 
				
			||||||
 | 
					- LLVM_BUILD should point to the llvm build directory (e.g., llvm-project/build).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To build ONNF, use the following command:
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					git clone --recursive git@github.com:clang-ykt/ONNF.git
 | 
				
			||||||
 | 
					mkdir build
 | 
				
			||||||
 | 
					cd build
 | 
				
			||||||
 | 
					cmake ..
 | 
				
			||||||
 | 
					cmake --build . --target all
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					After the above commands succeed, an `onnf` executable should appear in the `bin` directory. 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Using ONNF
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The usage of `onnf` is as such:
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					OVERVIEW: ONNF MLIR modular optimizer driver
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					USAGE: onnf [options] <input file>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					OPTIONS:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Generic Options:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  --help        - Display available options (--help-hidden for more)
 | 
				
			||||||
 | 
					  --help-list   - Display list of available options (--help-list-hidden for more)
 | 
				
			||||||
 | 
					  --version     - Display the version of this program
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ONNF Options:
 | 
				
			||||||
 | 
					These are frontend options.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  Choose target to emit:
 | 
				
			||||||
 | 
					      --EmitONNXIR - Ingest ONNX and emit corresponding ONNX dialect.
 | 
				
			||||||
 | 
					      --EmitMLIR   - Lower model to MLIR built-in transformation dialect.
 | 
				
			||||||
 | 
					      --EmitLLVMIR - Lower model to LLVM IR (LLVM dialect).
 | 
				
			||||||
 | 
					      --EmitLLVMBC - Lower model to LLVM IR and emit (to file) LLVM bitcode for model.
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Example
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For example, to lower an ONNX model (e.g., add.onnx) to ONNX dialect, use the following command:
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					./onnf --EmitONNXIR add.onnx
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					The output should look like:
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					module {
 | 
				
			||||||
 | 
					  func @main_graph(%arg0: tensor<10x10x10xf32>, %arg1: tensor<10x10x10xf32>) -> tensor<10x10x10xf32> {
 | 
				
			||||||
 | 
					    %0 = "onnx.Add"(%arg0, %arg1) : (tensor<10x10x10xf32>, tensor<10x10x10xf32>) -> tensor<10x10x10xf32>
 | 
				
			||||||
 | 
					    return %0 : tensor<10x10x10xf32>
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue