{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# libCEED for Python examples\n", "\n", "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", "\n", "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.org/)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setting up libCEED for Python" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Install libCEED for Python by running" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "! python -m pip install libceed" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Ceed\n", "\n", "Here we show some basic examples to illustrate the `Ceed` class. In libCEED, Ceeds represent library context representing control of logical hardware resources.\n", "\n", "Here we illustrate the simple declaration of a `Ceed`, with default resource (which is `/cpu/self`)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import libceed\n", "\n", "ceed = libceed.Ceed()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can visualize the memory address of the object instantiated by typing" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(ceed)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To use a particular backend, for instance `/cpu/self/opt/blocked` you can specify" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "ceed = libceed.Ceed('/cpu/self/opt/blocked')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Similarly, if libCEED is built with GPU support, you can specify a GPU backend, e.g., `/gpu/occa` or `/gpu/cuda/gen`." ] } ], "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.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }