1*edab6123Sjeremylt{ 2*edab6123Sjeremylt "cells": [ 3*edab6123Sjeremylt { 4*edab6123Sjeremylt "cell_type": "markdown", 5*edab6123Sjeremylt "metadata": {}, 6*edab6123Sjeremylt "source": [ 7*edab6123Sjeremylt "# libCEED for Python examples\n", 8*edab6123Sjeremylt "\n", 9*edab6123Sjeremylt "This is a tutorial to illustrate the main feautures of the Python interface for [libCEED](https://github.com/CEED/libCEED/), the low-level API library for efficient high-order discretization methods developed by the co-design [Center for Efficient Exascale Discretizations](https://ceed.exascaleproject.org/) (CEED) of the [Exascale Computing Project](https://www.exascaleproject.org/) (ECP).\n", 10*edab6123Sjeremylt "\n", 11*edab6123Sjeremylt "While libCEED's focus is on high-order finite/spectral element method implementations, the approach is mostly algebraic and thus applicable to other discretizations in factored form, as explained in the [user manual](https://libceed.readthedocs.io/)." 12*edab6123Sjeremylt ] 13*edab6123Sjeremylt }, 14*edab6123Sjeremylt { 15*edab6123Sjeremylt "cell_type": "markdown", 16*edab6123Sjeremylt "metadata": {}, 17*edab6123Sjeremylt "source": [ 18*edab6123Sjeremylt "## Setting up libCEED for Python" 19*edab6123Sjeremylt ] 20*edab6123Sjeremylt }, 21*edab6123Sjeremylt { 22*edab6123Sjeremylt "cell_type": "markdown", 23*edab6123Sjeremylt "metadata": {}, 24*edab6123Sjeremylt "source": [ 25*edab6123Sjeremylt "Install libCEED for Python by running" 26*edab6123Sjeremylt ] 27*edab6123Sjeremylt }, 28*edab6123Sjeremylt { 29*edab6123Sjeremylt "cell_type": "code", 30*edab6123Sjeremylt "execution_count": null, 31*edab6123Sjeremylt "metadata": {}, 32*edab6123Sjeremylt "outputs": [], 33*edab6123Sjeremylt "source": [ 34*edab6123Sjeremylt "! python -m pip install libceed" 35*edab6123Sjeremylt ] 36*edab6123Sjeremylt }, 37*edab6123Sjeremylt { 38*edab6123Sjeremylt "cell_type": "markdown", 39*edab6123Sjeremylt "metadata": {}, 40*edab6123Sjeremylt "source": [ 41*edab6123Sjeremylt "## Ceed\n", 42*edab6123Sjeremylt "\n", 43*edab6123Sjeremylt "Here we show some basic examples to illustrate the `Ceed` class. In libCEED, Ceeds represent library context representing control of logical hardware resources.\n", 44*edab6123Sjeremylt "\n", 45*edab6123Sjeremylt "Here we illustrate the simple declaration of a `Ceed`, with default resource (which is `/cpu/self`)" 46*edab6123Sjeremylt ] 47*edab6123Sjeremylt }, 48*edab6123Sjeremylt { 49*edab6123Sjeremylt "cell_type": "code", 50*edab6123Sjeremylt "execution_count": null, 51*edab6123Sjeremylt "metadata": {}, 52*edab6123Sjeremylt "outputs": [], 53*edab6123Sjeremylt "source": [ 54*edab6123Sjeremylt "import libceed\n", 55*edab6123Sjeremylt "\n", 56*edab6123Sjeremylt "ceed = libceed.Ceed()" 57*edab6123Sjeremylt ] 58*edab6123Sjeremylt }, 59*edab6123Sjeremylt { 60*edab6123Sjeremylt "cell_type": "markdown", 61*edab6123Sjeremylt "metadata": {}, 62*edab6123Sjeremylt "source": [ 63*edab6123Sjeremylt "You can visualize the memory address of the object instantiated by typing" 64*edab6123Sjeremylt ] 65*edab6123Sjeremylt }, 66*edab6123Sjeremylt { 67*edab6123Sjeremylt "cell_type": "code", 68*edab6123Sjeremylt "execution_count": null, 69*edab6123Sjeremylt "metadata": {}, 70*edab6123Sjeremylt "outputs": [], 71*edab6123Sjeremylt "source": [ 72*edab6123Sjeremylt "print(ceed)" 73*edab6123Sjeremylt ] 74*edab6123Sjeremylt }, 75*edab6123Sjeremylt { 76*edab6123Sjeremylt "cell_type": "markdown", 77*edab6123Sjeremylt "metadata": {}, 78*edab6123Sjeremylt "source": [ 79*edab6123Sjeremylt "To use a particular backend, for instance `/cpu/self/opt/blocked` you can specify" 80*edab6123Sjeremylt ] 81*edab6123Sjeremylt }, 82*edab6123Sjeremylt { 83*edab6123Sjeremylt "cell_type": "code", 84*edab6123Sjeremylt "execution_count": null, 85*edab6123Sjeremylt "metadata": {}, 86*edab6123Sjeremylt "outputs": [], 87*edab6123Sjeremylt "source": [ 88*edab6123Sjeremylt "ceed = libceed.Ceed('/cpu/self/opt/blocked')" 89*edab6123Sjeremylt ] 90*edab6123Sjeremylt }, 91*edab6123Sjeremylt { 92*edab6123Sjeremylt "cell_type": "markdown", 93*edab6123Sjeremylt "metadata": {}, 94*edab6123Sjeremylt "source": [ 95*edab6123Sjeremylt "Similarly, if libCEED is built with GPU support, you can specify a GPU backend, e.g., `/gpu/occa` or `/gpu/cuda/gen`." 96*edab6123Sjeremylt ] 97*edab6123Sjeremylt } 98*edab6123Sjeremylt ], 99*edab6123Sjeremylt "metadata": { 100*edab6123Sjeremylt "kernelspec": { 101*edab6123Sjeremylt "display_name": "Python 3", 102*edab6123Sjeremylt "language": "python", 103*edab6123Sjeremylt "name": "python3" 104*edab6123Sjeremylt }, 105*edab6123Sjeremylt "language_info": { 106*edab6123Sjeremylt "codemirror_mode": { 107*edab6123Sjeremylt "name": "ipython", 108*edab6123Sjeremylt "version": 3 109*edab6123Sjeremylt }, 110*edab6123Sjeremylt "file_extension": ".py", 111*edab6123Sjeremylt "mimetype": "text/x-python", 112*edab6123Sjeremylt "name": "python", 113*edab6123Sjeremylt "nbconvert_exporter": "python", 114*edab6123Sjeremylt "pygments_lexer": "ipython3", 115*edab6123Sjeremylt "version": "3.8.5" 116*edab6123Sjeremylt } 117*edab6123Sjeremylt }, 118*edab6123Sjeremylt "nbformat": 4, 119*edab6123Sjeremylt "nbformat_minor": 4 120*edab6123Sjeremylt} 121