{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from psyclone.parse.algorithm import parse\n", "_, inv_info = parse(\"shallow_alg.f90\", api=\"gocean1.0\")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from psyclone.psyGen import PSyFactory, TransInfo\n", "psy = PSyFactory(\"gocean1.0\", distributed_memory=False).create(inv_info)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from psyclone.psyir.backend.fortran import FortranWriter\n", "fwriter = FortranWriter()\n", "print(fwriter(psy.container))\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(psy.invokes.names)\n", "sched = psy.invokes.get('invoke_0').schedule\n", "print(sched.view())\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "trans_info = TransInfo()\n", "print(trans_info.list)\n", "fuse_trans = trans_info.get_trans_name('LoopFuseTrans')\n", "omp_trans = trans_info.get_trans_name('GOceanOMPParallelLoopTrans')\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# invoke0\n", "# fuse all outer loops\n", "fuse_trans.apply(sched[0], sched[1])\n", "fuse_trans.apply(sched[0], sched[1])\n", "fuse_trans.apply(sched[0], sched[1])\n", "print(sched.view())\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# fuse all inner loops\n", "fuse_trans.apply(sched[0].loop_body[0], sched[0].loop_body[1])\n", "fuse_trans.apply(sched[0].loop_body[0], sched[0].loop_body[1])\n", "fuse_trans.apply(sched[0].loop_body[0], sched[0].loop_body[1])\n", "print(sched.view())\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "omp_trans.apply(sched[0])\n", "print(sched.view())\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(fwriter(psy.container))\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.7" } }, "nbformat": 4, "nbformat_minor": 4 }