Skip to main content

HEIR Jupyter playground

This is a way to start running HEIR compiler passes in a Jupyter notebook or IPython notebook without having to build the entire HEIR project from scratch.

Uses the nightly HEIR build.

Usage

Load Jupyter:

jupyter notebook

In Jupyter:

%pip install heir_play
%load_ext heir_play
%%heir_opt --convert-if-to-select --canonicalize

func.func @secret_condition_with_non_secret_int(%inp: i16, %cond: !secret.secret<i1>) -> !secret.secret<i16> {
  %0 = secret.generic ins(%inp, %cond : i16, !secret.secret<i1>) {
  ^bb0(%copy_inp: i16, %secret_cond: i1):
    %1 = scf.if %secret_cond -> (i16) {
      %2 = arith.addi %copy_inp, %copy_inp : i16
      scf.yield %2 : i16
    } else {
      scf.yield %copy_inp : i16
    }
    secret.yield %1 : i16
  } -> !secret.secret<i16>
  return %0 : !secret.secret<i16>
}

The cell should output something similar to

Running heir-opt...
module {
  func.func @secret_condition_with_non_secret_int(%arg0: i16, %arg1: !secret.secret<i1>) -> !secret.secret<i16> {
    %0 = arith.addi %arg0, %arg0 : i16
    %1 = secret.generic ins(%arg1 : !secret.secret<i1>) {
    ^bb0(%arg2: i1):
      %2 = arith.select %arg2, %0, %arg0 : i16
      secret.yield %2 : i16
    } -> !secret.secret<i16>
    return %1 : !secret.secret<i16>
  }
}

Limitations

Right now, heir-opt as a standalone binary is not able to run lowerings to boolean TFHE schemes due to an external dependency on ABC (see #885). If you try to run any pipeline requiring the yosys-optimizer pass, will see the following error from ABC:

ERROR: ABC: execution of command ""external/edu_berkeley_abc/abc" -s -f /tmp/yosys-abc-iEdp1F/abc.script 2>&1" failed: return code 127.

Metadata

Release files for heir-play 0.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for heir-play 0.0.4
File Size Uploaded
heir_play-0.0.4.tar.gz 8.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for heir-play 0.0.4
File Interpreter ABI Platform
heir_play-0.0.4-py3-none-any.whl Python 3 none any Details

Total release size: 23.1 kB

Release files / heir_play-0.0.4.tar.gz

Download URL heir_play-0.0.4.tar.gz
Size 8.1 kB
Tags Source
SHA-256 checksum
How to use checksums
8e8cb229173edd5691a6a8dd137a6ae6303160107cf553b408bb77910754bd1d
BLAKE2b-256 checksum
How to use checksums
fe1dca1d22cd1238706ac17b64d1da8a0d72c0ba9bec048a412a9eb4a77cadbc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.12

Release files / heir_play-0.0.4-py3-none-any.whl

Download URL heir_play-0.0.4-py3-none-any.whl
Size 15.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8e017eeb75ffd37445e3ef35cd6c3dd74817cbef6c97d6329975dab637f65c3e
BLAKE2b-256 checksum
How to use checksums
7000243a69a21db8a0e91dd25804a9ff270eaed5774b0ad325c2410e60f6a128
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.10.12

Release history Release notifications | RSS feed

This release

0.0.4 This release

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page