xref: /libCEED/examples/python/tutorial-0-ceed.ipynb (revision edab612303ce5c583510db4ec9520fcda426d3c1)
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