Skip to content

Intel’s HERACLES accelerator introduces a new set of fundamental instructions, the Polynomial Instructions Set Architecture (P-ISA) that operates directly on polynomials requiring a completely new programming environment. This open-source project aims at developing the building blocks for a compiler toolchain for HERACLES.

License

Notifications You must be signed in to change notification settings

IntelLabs/hec-p-isa-tools

HERACLES Polynomial Instruction Set Architecture Tools

CodeQL OpenSSF Scorecard OpenSSF Best Practices

Overview

Intel’s HERACLES accelerator technology aims at improving the computational performance of Fully Homomorphic Encryption (FHE). 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.

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.

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 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.

The Encrypted Computing SDK (or HERACLES SDK) will realize a multistage transformation (compiler) pipeline, inspired by the LLVM Compiler Infrastructure. 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




HERACLES 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. 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 to start experimenting with it.

Contributing

Intel P-ISA Tools project welcomes external contributions through pull requests to the main branch.

Please refer to the Contributing and Code of Conduct documents for additional information on the contribution acceptance guidelines.

We use signed commits, please remember to sign your commits before making a pull request. See instructions here for how to sign commits.

We also use pre-commit, so before contributing, please ensure that you run pre-commit and make sure all checks pass with

pre-commit install
pre-commit run --all-files

Please run the tests provided in each of the components and make sure the tests pass.

Feedback

We encourage feedback and suggestions via GitHub Issues as well as via GitHub Discussions.

About

Intel’s HERACLES accelerator introduces a new set of fundamental instructions, the Polynomial Instructions Set Architecture (P-ISA) that operates directly on polynomials requiring a completely new programming environment. This open-source project aims at developing the building blocks for a compiler toolchain for HERACLES.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages