diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e70e682c..5a069ac2 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,7 @@ ### License -The Intel HERACLES P-ISA Tools project is licensed under the terms in [LICENSE](https://github.com/IntelLabs/hec-p-isa-tools/blob/main/LICENSE). By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms. +The Intel Encrypted Computing SDK project is licensed under the terms in [LICENSE](https://github.com/IntelLabs/hec-p-isa-tools/blob/main/LICENSE). By contributing to the project, you agree to the license and copyright terms therein and release your contribution under these terms. ### Sign your work diff --git a/README.md b/README.md index a02abe7e..2387e167 100644 --- a/README.md +++ b/README.md @@ -1,75 +1,73 @@ -# HERACLES Polynomial Instruction Set Architecture Tools -[![CodeQL](https://github.com/ossf/scorecard-action/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/IntelLabs/hec-p-isa-tools/actions/workflows/codeql-analysis.yml) -[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/IntelLabs/hec-p-isa-tools/badge)](https://scorecard.dev/viewer/?uri=github.com/IntelLabs/hec-p-isa-tools) +# Encrypted Computing Software Development Kit +[![CodeQL](https://github.com/ossf/scorecard-action/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/IntelLabs/encrypted-computing-sdk/actions/workflows/codeql-analysis.yml) +[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/IntelLabs/encrypted-computing-sdk/badge)](https://scorecard.dev/viewer/?uri=github.com/IntelLabs/encrypted-computing-sdk) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/9276/badge)](https://www.bestpractices.dev/projects/9276) ## Overview -Intel’s [HERACLES accelerator technology](https://dl.acm.org/doi/10.1145/3560810.3565290) -aims at improving the computational performance of -[Fully Homomorphic Encryption (FHE)](https://en.wikipedia.org/wiki/Homomorphic_encryption). -FHE allows computation to be performed on -encrypted data without having to decrypt the data which brings in -profound and beneficial implications for data privacy and data confidentiality. -However, these benefits come with a significant performance cost which has so far -confined FHE based applications to specific use case archetypes primarily in use -by the regulated industries and government. +[Fully Homomorphic Encryption (FHE)](https://en.wikipedia.org/wiki/Homomorphic_encryption) +allows computation to be performed on encrypted data without having to decrypt +the data which brings in profound and beneficial implications for data privacy +and data confidentiality. However, these benefits come with a significant performance +cost which has so far confined FHE based applications to specific use case archetypes +primarily in use by the regulated industries and government. Most of the FHE schemes of today perform the computation using very large polynomial rings, thus requiring considerable compute power and data -movement between main memory and the CPU's registers. HERACLES improves -the performance of FHE by accelerating the computation over the large -polynomials and optimizing the data movement involved in the computation. +movement between main memory and the CPU's registers, which introduces large +computational overheds. New FHE hardware accelerator architectures aim at +accelerate the computation over large polynomial rings while minimizing +the data movement between the memory and the compute elements. + +The Encrypted Computing SDK introduces a multistage transformation +(compiler) pipeline that breaks down the large polynomial computation into +the various abstraction layers to make it easier for developers to target +different hardware architectures as well as to develop new implementations +of FHE schemes, and integrate with existing 3rd Party libraries, compilers +and transpilers. The SDK is inspired by the +[LLVM Compiler Infrastructure](https://llvm.org/), and adopts a +modular approach based on language independent intermediate +representations (IRs) that promotes the separation of concerns at each +stage of the pipeline and allowing for dedicated transformations and +optimizations. -HERACLES introduces a new Polynomial Data type which does not exist in -today's traditional CPUs. For this new polynomial data type, it supports -a new set of novel and fundamental instructions, the Polynomial Instructions +Our first target hardware platform is Intel’s +[HERACLES accelerator technology](https://dl.acm.org/doi/10.1145/3560810.3565290) +which introduces a new Polynomial Data type which does not exist in today's +traditional CPUs. For this new polynomial data type, it supports a +new set of novel and fundamental instructions, the Polynomial Instructions Set Architecture (P-ISA), that operates directly on large polynomials in -a SIMD fashion. We at Intel Labs are developing a new compiler pipeline, -the Encrypted Computing SDK, to make it easier for developers to develop -new implementations of FHE schemes and also integrate with existing libraries. +a SIMD fashion. -

- -The Encrypted Computing SDK (or HERACLES SDK) will realize a multistage -transformation (compiler) pipeline, inspired by the -[LLVM Compiler Infrastructure](https://llvm.org/). We have adopted a -modular approach based on language independent intermediate -representations (IR) that promotes the separation of concerns at each -stage of the pipeline and allowing for dedicated transformations and -optimizations. +

+ -This approach also allows for integration with 3rd Party compilers and -transpilers.


-## HERACLES SDK Roadmap: Phased Approach +## Encrypted Computing SDK Roadmap: Phased Approach

- +


-### HERACLES SDK Phase 1: Components and Tasks +### Encrypted Computing SDK Phase 1: Components and Tasks

- +


-We are currently at Phase 1, more specifically developing the P-ISA Tools -component which comprises three main tools, a) Kernel Generator, b) Program -Mapper, and c) Functional Modeler Simulator. +We are currently at Phase 1, developing the P-ISA tools and Assembler tools +component which comprises a) Kernel Generator, b) Program +Mapper, c) Functional Modeler Simulator, and d) HERACLES Assembler. Each tool in this repo is self contained and has its own local README. -Current development is focussed on the Kernel Generator. -Follow the instructions [here](./kerngen) to start experimenting with it. - # Contributing Intel P-ISA Tools project welcomes external contributions through pull requests to the `main` branch. diff --git a/docs/Encrypted-Computing-SDK/Overview/EncryptedComputingSDK-Polynomial_Instruction_Set_Architecture_Tools-public.pdf b/docs/Encrypted-Computing-SDK/Overview/EncryptedComputingSDK-Polynomial_Instruction_Set_Architecture_Tools-public.pdf new file mode 100644 index 00000000..da7abe1e Binary files /dev/null and b/docs/Encrypted-Computing-SDK/Overview/EncryptedComputingSDK-Polynomial_Instruction_Set_Architecture_Tools-public.pdf differ diff --git a/docs/Encrypted-Computing-SDK/Overview/EncryptedComputingSDK-Polynomial_Instruction_Set_Architecture_Tools-public.pptx b/docs/Encrypted-Computing-SDK/Overview/EncryptedComputingSDK-Polynomial_Instruction_Set_Architecture_Tools-public.pptx new file mode 100644 index 00000000..4ff1ecbd Binary files /dev/null and b/docs/Encrypted-Computing-SDK/Overview/EncryptedComputingSDK-Polynomial_Instruction_Set_Architecture_Tools-public.pptx differ diff --git a/docs/Encrypted-Computing-SDK/empty_file.txt b/docs/Encrypted-Computing-SDK/empty_file.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/docs/Encrypted-Computing-SDK/empty_file.txt @@ -0,0 +1 @@ + diff --git a/docs/images/HERACLES_SDK_Integration_3rd_Party.png b/docs/images/HERACLES_SDK_Integration_3rd_Party.png deleted file mode 100644 index e53c97e4..00000000 Binary files a/docs/images/HERACLES_SDK_Integration_3rd_Party.png and /dev/null differ diff --git a/docs/images/HERACLES_SDK_Phase_1.png b/docs/images/HERACLES_SDK_Phase_1.png deleted file mode 100644 index 739ffc86..00000000 Binary files a/docs/images/HERACLES_SDK_Phase_1.png and /dev/null differ diff --git a/docs/images/HERACLES_SDK_Phase_2.png b/docs/images/HERACLES_SDK_Phase_2.png deleted file mode 100644 index 7fa26cb2..00000000 Binary files a/docs/images/HERACLES_SDK_Phase_2.png and /dev/null differ diff --git a/docs/images/HERACLES_SDK_Phased_Approach.png b/docs/images/HERACLES_SDK_Phased_Approach.png deleted file mode 100644 index 3e3efd3c..00000000 Binary files a/docs/images/HERACLES_SDK_Phased_Approach.png and /dev/null differ diff --git a/docs/images/HERACLES_SDK_Stack.png b/docs/images/HERACLES_SDK_Stack.png deleted file mode 100644 index 07150a0f..00000000 Binary files a/docs/images/HERACLES_SDK_Stack.png and /dev/null differ diff --git a/docs/images/SDK_Integration_3rd_party.png b/docs/images/SDK_Integration_3rd_party.png new file mode 100644 index 00000000..cb5fa473 Binary files /dev/null and b/docs/images/SDK_Integration_3rd_party.png differ diff --git a/docs/images/SDK_Phase_1.png b/docs/images/SDK_Phase_1.png new file mode 100644 index 00000000..4d86626e Binary files /dev/null and b/docs/images/SDK_Phase_1.png differ diff --git a/docs/images/SDK_Roadmap.png b/docs/images/SDK_Roadmap.png new file mode 100644 index 00000000..5b049402 Binary files /dev/null and b/docs/images/SDK_Roadmap.png differ