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.3.tar.gz (8.0 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.3-py3-none-any.whl (14.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: heir_play-0.0.3.tar.gz
  • Upload date:
  • Size: 8.0 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.3.tar.gz
Algorithm Hash digest
SHA256 fdc20d634d6b7db6a49b8adb7e21de45681c7d5f2e9d1fe51619068cadc544f4
MD5 29a532b87c3d5ce3646ce477b14eabf0
BLAKE2b-256 1c4683f090d4a416f815188214cec8268e1b9e3de591ce0ace66742a694c12c0

See more details on using hashes here.

File details

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

File metadata

  • Download URL: heir_play-0.0.3-py3-none-any.whl
  • Upload date:
  • Size: 14.9 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.3-py3-none-any.whl
Algorithm Hash digest
SHA256 82a75db7dd15b710ec592230e9e792e72d68480cab2434250a3034466dfee076
MD5 0fbb4f2ba17f3d33bfdaf57eef008e4a
BLAKE2b-256 3906dae4b24f31b96278b6002b11bad2f81d5936d23594cb4f24cb41bb301af0

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