{ "cells": [ { "cell_type": "markdown", "id": "e6597bb3-15b6-4639-82ed-841386591567", "metadata": {}, "source": [ "# Quickstart\n", "\n", "**Acknowledgments:** This notebook adapts the content in [this NCAR tutorial](https://github.com/NCAR/GPU_workshop/blob/workshop/12_CuPyAndLegate/12_CuPyAndLegate.ipynb) to Xarray, and uses it to illustrate `cupy-xarray` and working with cupy arrays and Xarray objects in general." ] }, { "cell_type": "markdown", "id": "71235ea5-c0fb-4afb-a30e-72275ad0b7f0", "metadata": {}, "source": [ "## Setup" ] }, { "cell_type": "code", "execution_count": 1, "id": "860567c3-18b2-444c-93a9-96ce620ea08f", "metadata": {}, "outputs": [], "source": [ "import cupy as cp\n", "import cupy_xarray # Adds .cupy to Xarray objects\n", "import numpy as np\n", "import xarray as xr" ] }, { "cell_type": "markdown", "id": "be9ca22a-8e41-46b1-a43d-6cf93e4fd677", "metadata": {}, "source": [ "## Creating Arrays\n", "\n", "First we create arrays on the CPU and GPU" ] }, { "cell_type": "code", "execution_count": 2, "id": "8aba4551-3b83-4f2b-9fc6-541b0ae071e6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "On the CPU: [0. 0.5 1. 1.5 2. ]\n", "On the GPU: [2. 2.5 3. 3.5 4. ]\n" ] } ], "source": [ "# NumPy data (host / cpu)\n", "x_cpu = np.linspace(0, 2, 5)\n", "print(\"On the CPU: \", x_cpu)\n", "\n", "# CuPy data\n", "x_gpu = cp.linspace(2, 4, 5)\n", "print(\"On the GPU: \", x_gpu)" ] }, { "cell_type": "markdown", "id": "3976d9b8-d028-4d87-b5c7-70943d807e85", "metadata": {}, "source": [ "And now wrap those in a Xarray DataArray" ] }, { "cell_type": "code", "execution_count": 3, "id": "0bacb2e0-3367-4efe-98af-2176937f84ab", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
<xarray.DataArray (x: 5)>\n",
"array([2. , 2.5, 3. , 3.5, 4. ])\n",
"Dimensions without coordinates: x<xarray.DataArray (x: 5)>\n",
"array([2. , 2.5, 3. , 3.5, 4. ])\n",
"Dimensions without coordinates: x<xarray.DataArray (x: 5)>\n",
"array([2. , 2.5, 3. , 3.5, 4. ])\n",
"Dimensions without coordinates: x<xarray.DataArray (x: 5)>\n",
"array([2. , 2.5, 3. , 3.5, 4. ])\n",
"Dimensions without coordinates: x<xarray.DataArray (x: 5)>\n",
"array([3. , 3.5, 4. , 4.5, 5. ])\n",
"Dimensions without coordinates: x<xarray.DataArray (x: 5)>\n",
"array([2. , 2.5, 3. , 3.5, 4. ])\n",
"Dimensions without coordinates: x<xarray.DataArray (a: 2, b: 3)>\n",
"array([[ 0., 2., 4.],\n",
" [ 0., 4., 10.]], dtype=float32)\n",
"Dimensions without coordinates: a, b