Skip to content

Instantly share code, notes, and snippets.

@gravitino
Last active April 20, 2021 19:10
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gravitino/ebdc61601e56071b40ae0bb15fcf4b93 to your computer and use it in GitHub Desktop.
Save gravitino/ebdc61601e56071b40ae0bb15fcf4b93 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"elapsed time: 177 ms (align mdist fft)\n",
"elapsed time: 369 ms (align mdist naive)\n",
"elapsed time: 10 ms (align mdist fft)\n",
"elapsed time: 72 ms (align mdist naive)\n",
"elapsed time: 10 ms (align mdist fft)\n",
"elapsed time: 72 ms (align mdist naive)\n",
"elapsed time: 10 ms (align mdist fft)\n",
"elapsed time: 72 ms (align mdist naive)\n",
"elapsed time: 10 ms (align mdist fft)\n",
"elapsed time: 72 ms (align mdist naive)\n"
]
},
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x7f2fb09a5ca0>]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"for _ in range(num_repeats):\n",
" with ra.util.Timer(\"align mdist fft\"):\n",
" ying = ra.ED.mdist(query_gpu, subject_gpu, mode=\"fft\")\n",
" with ra.util.Timer(\"align mdist naive\"):\n",
" yang = ra.ED.mdist(query_gpu, subject_gpu, mode=\"naive\")\n",
"assert(cp.allclose(ying, yang))\n",
"\n",
"k = int(cp.argmin(yang))\n",
"mnorm = lambda x : x-np.mean(x)\n",
"pl.plot(mnorm(query))\n",
"pl.plot(mnorm(subject[k:k+len(query)]))"
]
}
],
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment