{
  "nbformat": 4,
  "nbformat_minor": 0,
  "metadata": {
    "colab": {
      "name": "low_level_invoke_function.ipynb",
      "provenance": [],
      "collapsed_sections": []
    },
    "kernelspec": {
      "name": "python3",
      "display_name": "Python 3"
    }
  },
  "cells": [
    {
      "cell_type": "markdown",
      "metadata": {
        "id": "uMVh8_lZDRa7",
        "colab_type": "text"
      },
      "source": [
        "See the IREE docs/using_colab.md document for instructions.\n",
        "\n",
        "This notebook shows off some concepts of the low level IREE python bindings."
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "7qZfpb7Ob6id",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "import numpy as np\n",
        "from pyiree import binding\n"
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "FsHplZ3kEWrl",
        "colab_type": "code",
        "colab": {}
      },
      "source": [
        "def dump_module(m):\n",
        "  print(\"Loaded module:\", m.name)\n",
        "  i = 0\n",
        "  while True:\n",
        "    f = m.lookup_function_by_ordinal(i)\n",
        "    if not f: break\n",
        "    print(\"  Export:\", f.name, \"-> args(\", f.signature.argument_count, \n",
        "          \"), results(\", f.signature.result_count, \")\")\n",
        "    i += 1  "
      ],
      "execution_count": 0,
      "outputs": []
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "rxaiDxiq96SD",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 51
        },
        "outputId": "c7c254b5-2dd4-478e-bdc4-8386a1d29953"
      },
      "source": [
        "# Compile a module.\n",
        "blob = binding.compiler.compile_module_from_asm(\"\"\"\n",
        "  func @simple_mul(%arg0: tensor<4xf32>, %arg1: tensor<4xf32>) -> tensor<4xf32>\n",
        "        attributes { iree.module.export } {\n",
        "      %0 = \"xla_hlo.mul\"(%arg0, %arg1) {name = \"mul.1\"} : (tensor<4xf32>, tensor<4xf32>) -> tensor<4xf32>\n",
        "      return %0 : tensor<4xf32>\n",
        "  }\n",
        "  \"\"\")\n",
        "m = binding.vm.create_module_from_blob(blob)\n",
        "dump_module(m)"
      ],
      "execution_count": 4,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "Loaded module: module\n",
            "  Export: simple_mul -> args( 2 ), results( 1 )\n"
          ],
          "name": "stdout"
        }
      ]
    },
    {
      "cell_type": "code",
      "metadata": {
        "id": "aH6VdaoXD4hV",
        "colab_type": "code",
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 102
        },
        "outputId": "c4e8be2c-f144-41c8-952c-9aca66300899"
      },
      "source": [
        "# Initialize the runtime and register the module.\n",
        "# Use the CPU interpreter driver (which has the most implementation done):\n",
        "driver_name = \"interpreter\"\n",
        "\n",
        "# Live on the edge and give the vulkan driver a try:\n",
        "# driver_name = \"vulkan\"\n",
        "\n",
        "policy = binding.rt.Policy()\n",
        "instance = binding.rt.Instance(driver_name=driver_name)\n",
        "context = binding.rt.Context(instance=instance, policy=policy)\n",
        "context.register_module(m)\n",
        "f = context.resolve_function(\"module.simple_mul\")\n",
        "\n",
        "print(\"INVOKE F:\", f.name)\n",
        "arg0 = context.wrap_for_input(np.array([1., 2., 3., 4.], dtype=np.float32))\n",
        "arg1 = context.wrap_for_input(np.array([4., 5., 6., 7.], dtype=np.float32))\n",
        "\n",
        "# Invoke the function and wait for completion.\n",
        "inv = context.invoke(f, policy, [arg0, arg1])\n",
        "print(\"Status:\", inv.query_status())\n",
        "inv.await_ready()\n",
        "\n",
        "# Get the result as a numpy array and print.\n",
        "results = inv.results\n",
        "print(\"Results:\", results)\n",
        "result = results[0].map()\n",
        "print(\"Mapped result:\", result)\n",
        "result_ary = np.array(result, copy=False)\n",
        "print(\"NP result:\", result_ary)\n"
      ],
      "execution_count": 5,
      "outputs": [
        {
          "output_type": "stream",
          "text": [
            "INVOKE F: simple_mul\n",
            "Status: True\n",
            "Results: [<pyiree.binding.hal.BufferView object at 0x7fc7697105e0>]\n",
            "Mapped result: <pyiree.binding.hal.MappedMemory object at 0x7fc769710618>\n",
            "NP result: [ 4. 10. 18. 28.]\n"
          ],
          "name": "stdout"
        }
      ]
    }
  ]
}