Skip to content

Instantly share code, notes, and snippets.

@mrocklin
Created December 27, 2018 03:42
Show Gist options
  • Star 6 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mrocklin/57be0ca4143974e6015732d0baacc1cb to your computer and use it in GitHub Desktop.
Save mrocklin/57be0ca4143974e6015732d0baacc1cb to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import cupy\n",
"from dask.diagnostics import ProgressBar\n",
"import dask.array as da"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"rs = da.random.RandomState(RandomState=cupy.random.RandomState)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"x = rs.normal(10, 1, size=(500000, 500000), chunks=(10000, 10000))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"2000.0"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x.nbytes / 1e9 # 2TB"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Single GPU"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[########################################] | 100% Completed | 1min 37.4s\n"
]
}
],
"source": [
"with ProgressBar():\n",
" (x + 1)[::2, ::2].sum().compute(scheduler='single-threaded')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Multiple GPUs"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"from dask.distributed import LocalCUDACluster, Client\n",
"cluster = LocalCUDACluster()\n",
"client = Client(cluster)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"CPU times: user 9.02 s, sys: 832 ms, total: 9.85 s\n",
"Wall time: 19.2 s\n"
]
},
{
"data": {
"text/plain": [
"array(6.87500349e+11)"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%time (x + 1)[::2, ::2].sum().compute()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Try on the CPU"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"rs = da.random.RandomState()\n",
"x = rs.normal(10, 1, size=(500000, 500000), chunks=(10000, 10000))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Single CPU"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[########################################] | 100% Completed | 2hr 39min 28.2s\n"
]
}
],
"source": [
"with ProgressBar():\n",
" (x + 1)[::2, ::2].sum().compute(scheduler='single-threaded')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 80 cores with multi-threading"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[########################################] | 100% Completed | 11min 31.3s\n"
]
}
],
"source": [
"from dask.diagnostics import ProgressBar\n",
"\n",
"with ProgressBar():\n",
" (x + 1)[::2, ::2].sum().compute(scheduler='threads')"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"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.6.7"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
@beberg
Copy link

beberg commented May 2, 2019

The multiple GPU section should begin

from dask_cuda import LocalCUDACluster
from dask.distributed import Client

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment