You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

483 lines
10 KiB

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 4.6 GPU计算"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:15.123349Z",
"start_time": "2019-03-17T08:12:14.979997Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sun Mar 17 16:12:15 2019 \r\n",
"+-----------------------------------------------------------------------------+\r\n",
"| NVIDIA-SMI 390.48 Driver Version: 390.48 |\r\n",
"|-------------------------------+----------------------+----------------------+\r\n",
"| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |\r\n",
"| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |\r\n",
"|===============================+======================+======================|\r\n",
"| 0 GeForce GTX 1050 Off | 00000000:01:00.0 Off | N/A |\r\n",
"| 20% 40C P5 N/A / 75W | 1213MiB / 2000MiB | 23% Default |\r\n",
"+-------------------------------+----------------------+----------------------+\r\n",
" \r\n",
"+-----------------------------------------------------------------------------+\r\n",
"| Processes: GPU Memory |\r\n",
"| GPU PID Type Process name Usage |\r\n",
"|=============================================================================|\r\n",
"| 0 1235 G /usr/lib/xorg/Xorg 434MiB |\r\n",
"| 0 2095 G compiz 171MiB |\r\n",
"| 0 2660 G /opt/teamviewer/tv_bin/TeamViewer 5MiB |\r\n",
"| 0 4166 G /proc/self/exe 397MiB |\r\n",
"| 0 13274 C /home/tss/anaconda3/bin/python 191MiB |\r\n",
"+-----------------------------------------------------------------------------+\r\n"
]
}
],
"source": [
"!nvidia-smi # 对Linux/macOS用户有效"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:15.512222Z",
"start_time": "2019-03-17T08:12:15.124792Z"
}
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.4.1\n"
]
}
],
"source": [
"import torch\n",
"from torch import nn\n",
"\n",
"print(torch.__version__)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4.6.1 计算设备"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:15.539276Z",
"start_time": "2019-03-17T08:12:15.513205Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"torch.cuda.is_available() # cuda是否可用"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:15.543795Z",
"start_time": "2019-03-17T08:12:15.540338Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"1"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"torch.cuda.device_count() # gpu数量"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:15.551451Z",
"start_time": "2019-03-17T08:12:15.544964Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"0"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"torch.cuda.current_device() # 当前设备索引, 从0开始"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:15.555020Z",
"start_time": "2019-03-17T08:12:15.552387Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"'GeForce GTX 1050'"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"torch.cuda.get_device_name(0) # 返回gpu名字"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4.6.2 `Tensor`的GPU计算"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:15.562186Z",
"start_time": "2019-03-17T08:12:15.556621Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"tensor([1, 2, 3])"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = torch.tensor([1, 2, 3])\n",
"x"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:17.441336Z",
"start_time": "2019-03-17T08:12:15.563813Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"tensor([1, 2, 3], device='cuda:0')"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = x.cuda(0)\n",
"x"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:17.449383Z",
"start_time": "2019-03-17T08:12:17.445193Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"device(type='cuda', index=0)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x.device"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:17.454548Z",
"start_time": "2019-03-17T08:12:17.450268Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"tensor([1, 2, 3], device='cuda:0')"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n",
"\n",
"x = torch.tensor([1, 2, 3], device=device)\n",
"# or\n",
"x = torch.tensor([1, 2, 3]).to(device)\n",
"x"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:17.467441Z",
"start_time": "2019-03-17T08:12:17.455495Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"tensor([1, 4, 9], device='cuda:0')"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y = x**2\n",
"y"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:17.470297Z",
"start_time": "2019-03-17T08:12:17.468866Z"
}
},
"outputs": [],
"source": [
"# z = y + x.cpu()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 4.6.3 模型的GPU计算"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:17.474763Z",
"start_time": "2019-03-17T08:12:17.471348Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"device(type='cpu')"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"net = nn.Linear(3, 1)\n",
"list(net.parameters())[0].device"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:17.478553Z",
"start_time": "2019-03-17T08:12:17.475677Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"device(type='cuda', index=0)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"net.cuda()\n",
"list(net.parameters())[0].device"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"ExecuteTime": {
"end_time": "2019-03-17T08:12:17.957448Z",
"start_time": "2019-03-17T08:12:17.479843Z"
}
},
"outputs": [
{
"data": {
"text/plain": [
"tensor([[-0.5574],\n",
" [-0.3792]], device='cuda:0', grad_fn=<ThAddmmBackward>)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x = torch.rand(2,3).cuda()\n",
"net(x)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python [default]",
"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.4"
},
"varInspector": {
"cols": {
"lenName": 16,
"lenType": 16,
"lenVar": 40
},
"kernels_config": {
"python": {
"delete_cmd_postfix": "",
"delete_cmd_prefix": "del ",
"library": "var_list.py",
"varRefreshCmd": "print(var_dic_list())"
},
"r": {
"delete_cmd_postfix": ") ",
"delete_cmd_prefix": "rm(",
"library": "var_list.r",
"varRefreshCmd": "cat(var_dic_list()) "
}
},
"types_to_exclude": [
"module",
"function",
"builtin_function_or_method",
"instance",
"_Feature"
],
"window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 2
}