Skip to main content

A cell magic enabling one to run HEIR pipelines in Jupyter notebooks.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

heir_play-0.0.4.tar.gz (8.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

heir_play-0.0.4-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file heir_play-0.0.4.tar.gz.

File metadata

  • Download URL: heir_play-0.0.4.tar.gz
  • Upload date:
  • Size: 8.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for heir_play-0.0.4.tar.gz
Algorithm Hash digest
SHA256 8e8cb229173edd5691a6a8dd137a6ae6303160107cf553b408bb77910754bd1d
MD5 4c51f9d8f352df3a669d9a7d5dc89433
BLAKE2b-256 fe1dca1d22cd1238706ac17b64d1da8a0d72c0ba9bec048a412a9eb4a77cadbc

See more details on using hashes here.

File details

Details for the file heir_play-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: heir_play-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 15.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.10.12

File hashes

Hashes for heir_play-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 8e017eeb75ffd37445e3ef35cd6c3dd74817cbef6c97d6329975dab637f65c3e
MD5 7c8d42d0c6b24902db9816fcd304c7c4
BLAKE2b-256 7000243a69a21db8a0e91dd25804a9ff270eaed5774b0ad325c2410e60f6a128

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page