{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "8414ba1c-c56d-46e3-a099-d00044905eda", "metadata": {}, "source": [ "# Parallelized Cubic Spline Interpolation" ] }, { "cell_type": "markdown", "id": "8f1b4641", "metadata": {}, "source": [ "We recommend first working through Trajectory_tutorial.ipynb and Amplitude_tutorial.ipynb before reading this tutorial." ] }, { "attachments": {}, "cell_type": "markdown", "id": "1cf56b82-e6a1-405c-ba54-9a31decb1f64", "metadata": {}, "source": [ "A part of the Fast EMRI waveforms package is parallelized cubic spline interpolation. This generally means fitting and evaluating many splines in parallel with the same input x array. This is available for GPUs and CPUs (not parallelized for CPU). The user can perform this operation entirely in Python while leveraging [CuPy](https://cupy.dev/) for GPUs. However, the evaluation will not be as efficient as when it is implemented properly in a customized kernel. The spline class ([CubicSplineInterpolant](https://bhptoolkit.org/FastEMRIWaveforms/user/sum.html#few.summation.interpolatedmodesum.CubicSplineInterpolant)) can provide an 1D flattened array of all spline coefficients for use in a custom CUDA kernel. " ] }, { "cell_type": "code", "execution_count": 1, "id": "3c526d1a", "metadata": { "execution": { "iopub.execute_input": "2026-07-11T10:47:15.446536Z", "iopub.status.busy": "2026-07-11T10:47:15.446350Z", "iopub.status.idle": "2026-07-11T10:47:17.470358Z", "shell.execute_reply": "2026-07-11T10:47:17.469892Z" } }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "import few\n", "\n", "# tune few configuration\n", "cfg_set = few.get_config_setter(reset=True)\n", "\n", "# Uncomment if you want to force CPU or GPU usage\n", "# Leave commented to let FEW automatically select the best available hardware\n", "# - To force CPU usage:\n", "# cfg_set.enable_backends(\"cpu\")\n", "# - To force GPU usage with CUDA 12.x\n", "# cfg_set.enable_backends(\"cuda12x\", \"cpu\")\n", "\n", "cfg_set.set_log_level(\"info\");" ] }, { "cell_type": "code", "execution_count": 2, "id": "19ba8ad4", "metadata": { "execution": { "iopub.execute_input": "2026-07-11T10:47:17.471661Z", "iopub.status.busy": "2026-07-11T10:47:17.471540Z", "iopub.status.idle": "2026-07-11T10:47:19.754722Z", "shell.execute_reply": "2026-07-11T10:47:19.754160Z" } }, "outputs": [], "source": [ "from few.trajectory.inspiral import EMRIInspiral\n", "from few.trajectory.ode import SchwarzEccFlux\n", "from few.amplitude.romannet import RomanAmplitude\n", "\n", "traj = EMRIInspiral(func=SchwarzEccFlux)\n", "amp = RomanAmplitude()\n", "\n", "# parameters\n", "m1 = 1e5\n", "m2 = 1e1\n", "a = 0.0 # Schwarzschild as we are using SchwarzEccFlux here\n", "p0 = 10.0\n", "e0 = 0.7\n", "xI = 1.0 # +1 for prograde, -1 for retrograde inspirals\n", "\n", "# get trajectory\n", "t, p, e, x, Phi_phi, Phi_theta, Phi_r = traj(m1, m2, a, p0, e0, xI)\n", "\n", "# The shape is (nb of data points in parameter space, mode values)\n", "teuk_modes = amp(a, p, e, x)" ] }, { "cell_type": "code", "execution_count": 3, "id": "18b9882f-3e6d-4ca2-8730-c034ae96e649", "metadata": { "execution": { "iopub.execute_input": "2026-07-11T10:47:19.755905Z", "iopub.status.busy": "2026-07-11T10:47:19.755841Z", "iopub.status.idle": "2026-07-11T10:47:19.764570Z", "shell.execute_reply": "2026-07-11T10:47:19.764136Z" } }, "outputs": [], "source": [ "from few.summation.interpolatedmodesum import CubicSplineInterpolant\n", "\n", "# Let's take the amplitudes from the last step and spline those.\n", "# For the argument of CubicSplineInterpolant, the shape of the input has to be switched.\n", "# We will split real and imaginary components\n", "\n", "# First argument will be the real, then imaginary mode values, and second argument the data points.\n", "interp_in = np.zeros((teuk_modes.shape[1] * 2, teuk_modes.shape[0]))\n", "\n", "interp_in[: teuk_modes.shape[1], :] = teuk_modes.T.real\n", "interp_in[teuk_modes.shape[1] :, :] = teuk_modes.T.imag\n", "\n", "spline_of_interp_in = CubicSplineInterpolant(t, interp_in)" ] }, { "cell_type": "code", "execution_count": 4, "id": "04ebee73-84eb-4e73-945a-8d59eef9795e", "metadata": { "execution": { "iopub.execute_input": "2026-07-11T10:47:19.765708Z", "iopub.status.busy": "2026-07-11T10:47:19.765655Z", "iopub.status.idle": "2026-07-11T10:47:20.115472Z", "shell.execute_reply": "2026-07-11T10:47:20.115084Z" } }, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Get new values\n", "t_new = np.linspace(t[0], t[-1], 1000)\n", "\n", "# Notice the output has the same shape as the inital input to the spline.\n", "new_teuk_modes = spline_of_interp_in(t_new)\n", "\n", "# To get back the original shape (with now data points at t_new), add the real and imaginary values back together and transpose\n", "new_teuk_modes = new_teuk_modes[:teuk_modes.shape[1],:] + 1j * new_teuk_modes[teuk_modes.shape[1]:,:]; new_teuk_modes = new_teuk_modes.T\n", "\n", "# Check the original and interpolated values for the (2,2,0) mode\n", "ind = amp.special_index_map[(2, 2, 0)]\n", "\n", "plt.plot(t_new, new_teuk_modes[:,ind].real, label=\"interpolated\")\n", "plt.plot(t, teuk_modes[:, ind].real, \"--\", label=\"original\")\n", "plt.legend()\n", "plt.show()\n", "\n", "plt.plot(t_new, new_teuk_modes[:,ind].imag, label=\"interpolated\")\n", "plt.plot(t, teuk_modes[:, ind].imag, \"--\", label=\"original\")\n", "plt.legend()\n", "plt.show()" ] }, { "attachments": {}, "cell_type": "markdown", "id": "88352b10-edac-456c-a390-111716f38fee", "metadata": {}, "source": [ "To get the array of interp coefficients for CUDA implementations, do the following. The underlying shape of the array is (4, length, ninterps). It is flattened though for entry into GPU kernel. " ] }, { "cell_type": "code", "execution_count": 5, "id": "cc04fd9e-60ee-4d0f-b90b-e45d08b2cb26", "metadata": { "execution": { "iopub.execute_input": "2026-07-11T10:47:20.116525Z", "iopub.status.busy": "2026-07-11T10:47:20.116466Z", "iopub.status.idle": "2026-07-11T10:47:20.118459Z", "shell.execute_reply": "2026-07-11T10:47:20.118145Z" } }, "outputs": [ { "data": { "text/plain": [ "array([ 6.23856751e-06, 3.56609646e-06, -1.26237401e-06, ...,\n", " 1.24433368e-11, 1.36363437e-11, 7.04123294e-12],\n", " shape=(1352736,))" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "spline_of_interp_in.interp_array" ] }, { "cell_type": "markdown", "id": "2f1b29b9", "metadata": {}, "source": [ "For convenience, the coefficients array can be returned to its original form via the `reshape_shape` attribute:\n" ] }, { "cell_type": "code", "execution_count": 6, "id": "20c13975", "metadata": { "execution": { "iopub.execute_input": "2026-07-11T10:47:20.119392Z", "iopub.status.busy": "2026-07-11T10:47:20.119343Z", "iopub.status.idle": "2026-07-11T10:47:20.121046Z", "shell.execute_reply": "2026-07-11T10:47:20.120722Z" } }, "outputs": [ { "data": { "text/plain": [ "(7686, 44)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "spline_of_interp_in.interp_array.reshape(spline_of_interp_in.reshape_shape)[0].T.shape" ] }, { "cell_type": "code", "execution_count": 7, "id": "2a6c7f0c", "metadata": { "execution": { "iopub.execute_input": "2026-07-11T10:47:20.121847Z", "iopub.status.busy": "2026-07-11T10:47:20.121790Z", "iopub.status.idle": "2026-07-11T10:47:20.124751Z", "shell.execute_reply": "2026-07-11T10:47:20.124348Z" } }, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Check\n", "interp_in_recovered = spline_of_interp_in.interp_array.reshape(spline_of_interp_in.reshape_shape)[0].T\n", "np.allclose(\n", " interp_in_recovered, \n", " interp_in\n", " )" ] } ], "metadata": { "kernelspec": { "display_name": "few2.0rc1", "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.12.13" } }, "nbformat": 4, "nbformat_minor": 5 }