From 84cb0bdbbe1fb510c8e77a702540069e4bc6aecf Mon Sep 17 00:00:00 2001 From: Umut Date: Fri, 17 Sep 2021 12:55:54 +0300 Subject: [PATCH] doc: write compilation artifacts tutorial --- .../artifacts/auto/1.initial.graph.png | Bin 0 -> 7755 bytes .../artifacts/manual/1.initial.graph.png | Bin 0 -> 23985 bytes .../artifacts/manual/2.final.graph.png | Bin 0 -> 23985 bytes docs/index.rst | 1 + docs/user/tutorial/COMPILATION_ARTIFACTS.md | 184 ++++++++++++++++++ 5 files changed, 185 insertions(+) create mode 100644 docs/_static/tutorials/artifacts/auto/1.initial.graph.png create mode 100644 docs/_static/tutorials/artifacts/manual/1.initial.graph.png create mode 100644 docs/_static/tutorials/artifacts/manual/2.final.graph.png create mode 100644 docs/user/tutorial/COMPILATION_ARTIFACTS.md diff --git a/docs/_static/tutorials/artifacts/auto/1.initial.graph.png b/docs/_static/tutorials/artifacts/auto/1.initial.graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e88663dffc60707a81a63d987e12b32008f08ca2 GIT binary patch literal 7755 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 HZyE7Fn!;k- literal 0 HcmV?d00001 diff --git a/docs/_static/tutorials/artifacts/manual/1.initial.graph.png b/docs/_static/tutorials/artifacts/manual/1.initial.graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d4a4f3c97bab43000130355a3de4ddec3263f4d6 GIT binary patch literal 23985 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 +``` + +### 1.initial.graph.txt + +This file contains information about the initial computation graph of the function you are trying to compile. + +``` +%0 = x # EncryptedScalar> +%1 = np.sin(0) # EncryptedScalar> +return(%1) +``` + +### 1.initial.graph.png + +This file contains the visualization of the initial computation graph of the function you are trying to compile. + +![](../../_static/tutorials/artifacts/auto/1.initial.graph.png) + +### traceback.txt + +This file contains information about the error you got. + +``` +Traceback (most recent call last): + File "/src/concrete/numpy/compile.py", line 301, in compile_numpy_function + return _compile_numpy_function_internal( + File "/src/concrete/numpy/compile.py", line 234, in _compile_numpy_function_internal + op_graph = _compile_numpy_function_into_op_graph_internal( + File "/src/concrete/numpy/compile.py", line 103, in _compile_numpy_function_into_op_graph_internal + raise ValueError( +ValueError: cannot be compiled as it has nodes with either float inputs or outputs. +Offending nodes : +``` + +## Manual export + +Manual exports are mostly used for visualization. Nonetheless, they can be very useful for demonstrations. Here is how to do it: + +```python +import concrete.numpy as hnp +import pathlib + +artifacts = hnp.CompilationArtifacts(pathlib.Path("/custom/export/path")) +hnp.compile_numpy_function( + lambda x: 100 - (3 * (x + 2)), + {"x": hnp.EncryptedScalar(hnp.UnsignedInteger(3))}, + inputset=[(i,) for i in range(2 ** 3)], + compilation_artifacts=artifacts, +) +artifacts.export() +``` + +Since this example compiles, we can see some new artifacts. + +### 1.initial.graph.txt + +This file contains information about the initial computation graph of the function you are trying to compile. + +``` +%0 = Constant(100) # ClearScalar> +%1 = Constant(3) # ClearScalar> +%2 = x # EncryptedScalar> +%3 = Constant(2) # ClearScalar> +%4 = Add(2, 3) # EncryptedScalar> +%5 = Mul(4, 1) # EncryptedScalar> +%6 = Sub(0, 5) # EncryptedScalar> +return(%6) +``` + +### 1.initial.graph.png + +This file contains the visualization of the initial computation graph of the function you are trying to compile. + +![](../../_static/tutorials/artifacts/manual/1.initial.graph.png) + +### 2.final.graph.txt + +This file contains information about the final computation graph of the function you are trying to compile. + +``` +%0 = Constant(100) # ClearScalar> +%1 = Constant(3) # ClearScalar> +%2 = x # EncryptedScalar> +%3 = Constant(2) # ClearScalar> +%4 = Add(2, 3) # EncryptedScalar> +%5 = Mul(4, 1) # EncryptedScalar> +%6 = Sub(0, 5) # EncryptedScalar> +return(%6) +``` + +### 2.final.graph.png + +This file contains the visualization of the final computation graph of the function you are trying to compile. + +![](../../_static/tutorials/artifacts/manual/2.final.graph.png) + +### bounds.txt + +This file contains information about the bounds of the final computation graph of the function you are trying to compile using the input set you provide. + +``` +%0 :: [100, 100] +%1 :: [3, 3] +%2 :: [0, 7] +%3 :: [2, 2] +%4 :: [2, 9] +%5 :: [6, 27] +%6 :: [73, 94] +``` + +You can learn what bounds are [here](../../dev/explanation/TERMINOLOGY_AND_STRUCTURE.md). + +### mlir.txt + +This file contains information about the MLIR of the function you are trying to compile using the input set you provide. + +``` +module { + func @main(%arg0: !HLFHE.eint<7>) -> !HLFHE.eint<7> { + %c100_i8 = constant 100 : i8 + %c3_i8 = constant 3 : i8 + %c2_i8 = constant 2 : i8 + %0 = "HLFHE.add_eint_int"(%arg0, %c2_i8) : (!HLFHE.eint<7>, i8) -> !HLFHE.eint<7> + %1 = "HLFHE.mul_eint_int"(%0, %c3_i8) : (!HLFHE.eint<7>, i8) -> !HLFHE.eint<7> + %2 = "HLFHE.sub_int_eint"(%c100_i8, %1) : (i8, !HLFHE.eint<7>) -> !HLFHE.eint<7> + return %2 : !HLFHE.eint<7> + } +} +``` + +You can learn more about MLIR [here](../../dev/explanation/MLIR.md).