翻译  https://www.microway.com/hpc-tech-tips/nvidia-smi_control-your-gpus/

大多数用户知道如何检查其CPU的状态,查看多少系统内存可用或找出多少磁盘空间可用。相反,从历史上看,保持GPU的运行状况和状态更加困难。如果您不知道在哪里看,甚至可能很难确定系统中GPU的类型和功能。值得庆幸的是,NVIDIA最新的硬件和软件工具在这方面取得了不错的改进。

该工具是NVIDIA的系统管理界面(nvidia-smi)。根据卡的生成方式,可以收集各种级别的信息。此外,可以启用和禁用GPU配置选项(例如ECC内存功能)。

顺便说一句,如果您发现在使NVIDIA GPU运行GPGPU代码方面遇到困难,这nvidia-smi会很方便。例如,在某些系统上/dev,启动时未创建正确的NVIDIA设备。nvidia-smi以root身份运行简单查询将初始化所有卡,并在中创建合适的设备/dev。在其他时候,确保所有GPU卡可见并正确通信非常有用。这是带有四个Tesla V100 GPU卡的最新版本的默认输出:

nvidia-smi

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 410.48 Driver Version: 410.48 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| Tesla V100-PCIE... Off | ::00.0 Off | |
| N/A 40C P0 55W / 250W | 31194MiB / 32480MiB | % Default |
+-------------------------------+----------------------+----------------------+
| Tesla V100-PCIE... Off | :3B:00.0 Off | |
| N/A 40C P0 36W / 250W | 30884MiB / 32480MiB | % Default |
+-------------------------------+----------------------+----------------------+
| Tesla V100-PCIE... Off | ::00.0 Off | |
| N/A 41C P0 39W / 250W | 30884MiB / 32480MiB | % Default |
+-------------------------------+----------------------+----------------------+
| Tesla V100-PCIE... Off | :AF:00.0 Off | |
| N/A 39C P0 37W / 250W | 30884MiB / 32480MiB | % Default |
+-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| C /usr/bin/python 31181MiB |
+-----------------------------------------------------------------------------+

持续模式

在Linux上,您可以将GPU设置为持久模式,以使NVIDIA驱动程序加载,即使没有应用程序在访问这些卡也是如此。 当您要运行一系列短期作业时,此功能特别有用。 持久模式每个闲置的GPU使用更多的功率,但是可以防止每次启动GPU应用程序时出现相当长的延迟。 如果您已为GPU分配了特定的时钟速度或功率限制,则也很有必要(因为在卸载NVIDIA驱动程序时这些更改会丢失)。 通过运行以下命令在所有GPU上启用持久性模式:

nvidia-smi -pm 

在Windows上,nvidia-smi无法设置持久性模式。 相反,您需要将计算GPU设置为TCC模式。 这应该通过NVIDIA的图形GPU设备管理面板来完成。

nvidia-smi支持的GPU

NVIDIA的SMI工具基本上支持自2011年以来发布的所有NVIDIA GPU。这些工具包括Fermi和更高架构家族(Kepler,Maxwell,Pascal,Volta等)的Tesla,Quadro和GeForce设备。

支持的产品包括:
Tesla:S1070,S2050,C1060,C2050 / 70,M2050 / 70/90,X2070 / 90,K10,K20,K20X,K40,K80,M40,P40,P100,V100
Quadro:4000、5000、6000、7000,M2070-Q,K系列,M系列,P系列,RTX系列
GeForce:支持级别不同,可用指标少于特斯拉和Quadro产品

查询GPU状态

我们为客户提供基准测试服务的Microway的GPU Test Drive集群包含一组NVIDIA最新的Tesla GPU。 这些是NVIDIA的高性能计算GPU,可提供大量的运行状况和状态信息。 以下示例摘自该内部群集。

要列出所有可用的NVIDIA设备,请运行:

nvidia-smi -L

GPU : Tesla K40m (UUID: GPU-d0e093a0-c3b3-f458-5a55-6eb69fxxxxxx)
GPU : Tesla K40m (UUID: GPU-d105b085---43ef-975ecaxxxxxx)

要列出有关每个GPU的某些详细信息,请尝试:

nvidia-smi --query-gpu=index,name,uuid,serial --format=csv

, Tesla K40m, GPU-d0e093a0-c3b3-f458-5a55-6eb69fxxxxxx, 0323913xxxxxx
, Tesla K40m, GPU-d105b085---43ef-975ecaxxxxxx, 0324214xxxxxx

要以1秒的更新间隔监视总体GPU使用情况:

nvidia-smi dmon

# gpu   pwr gtemp mtemp    sm   mem   enc   dec  mclk  pclk
# Idx W C C % % % % MHz MHz
-
-
(in this example, one GPU is idle and one GPU has % of the CUDA sm "cores" in use)

要以1秒的更新间隔监视每个进程的GPU使用情况:

nvidia-smi pmon

# gpu        pid  type    sm   mem   enc   dec   command
# Idx # C/G % % % % name
C python
C python
(in this case, two different python processes are running; one on each GPU)

监控和管理GPU Boost

NVIDIA在较新的GPU中包含的GPU Boost功能允许GPU时钟根据负载而变化(只要有可用的功率和散热空间,就可以实现最佳性能)。 但是,可用空间的大小会因应用程序(甚至是输入文件!)而异,因此用户和管理员应密切注意GPU的状态。

可以显示每个GPU(在本例中为Tesla V100)的可用时钟速度列表:

nvidia-smi -q -d SUPPORTED_CLOCKS

GPU ::00.0
Supported Clocks
Memory : MHz
Graphics : MHz
Graphics : MHz
Graphics : MHz
Graphics : MHz
[... additional clock speeds omitted...]
Graphics : MHz
Graphics : MHz
Graphics : MHz
Graphics : MHz

如图所示,Tesla V100 GPU支持167种不同的时钟速度(从135 MHz到1380 MHz)。 但是,仅支持一种内存时钟速度(877 MHz)。 某些GPU支持两种不同的内存时钟速度(一种高速和一种省电速度)。 通常,当内存处于省电速度(空闲GPU状态)时,此类GPU仅支持单个GPU时钟速度。 在所有最新的Tesla和Quadro GPU上,GPU Boost会自动管理这些速度并尽可能快地运行时钟(在热量/功率限制以及管理员设置的任何限制范围内)。

要查看当前的GPU时钟速度,默认时钟速度和最大可能的时钟速度,请运行:

nvidia-smi -q -d CLOCK

GPU ::00.0
Clocks
Graphics : MHz
SM : MHz
Memory : MHz
Video : MHz
Applications Clocks
Graphics : MHz
Memory : MHz
Default Applications Clocks
Graphics : MHz
Memory : MHz
Max Clocks
Graphics : MHz
SM : MHz
Memory : MHz
Video : MHz
Max Customer Boost Clocks
Graphics : MHz
SM Clock Samples
Duration : 0.01 sec
Number of Samples :
Max : MHz
Min : MHz
Avg : MHz
Memory Clock Samples
Duration : 0.01 sec
Number of Samples :
Max : MHz
Min : MHz
Avg : MHz
Clock Policy
Auto Boost : N/A
Auto Boost Default : N/A

理想情况下,您希望所有时钟始终以最高速度运行。 但是,这并非对所有应用程序都可行。 要查看每个GPU的当前状态以及时钟变慢的任何原因,请使用PERFORMANCE标志:

nvidia-smi -q -d PERFORMANCE

GPU ::00.0
Performance State : P0
Clocks Throttle Reasons
Idle : Not Active
Applications Clocks Setting : Not Active
SW Power Cap : Not Active
HW Slowdown : Not Active
HW Thermal Slowdown : Not Active
HW Power Brake Slowdown : Not Active
Sync Boost : Not Active
SW Thermal Slowdown : Not Active
Display Clock Setting : Not Active

如果任何GPU时钟运行速度较慢,则上述“时钟节流原因”中的一个或多个将被标记为活动。 最令人担忧的情况是硬件减速是否处于活动状态,因为这很可能表明电源或散热问题。 其余条件通常表明该卡处于空闲状态或已由系统管理员手动设置为较慢的模式。

使用nvidia-smi查看系统/ GPU拓扑和NVLink

为了正确利用更高级的NVIDIA GPU功能(例如GPU Direct),正确配置系统拓扑至关重要。 拓扑结构是指各种系统设备(GPU,InfiniBand HCA,存储控制器等)如何相互连接以及如何与系统的CPU连接。 某些拓扑类型将降低性能,甚至导致某些功能不可用。 为了帮助解决此类问题,nvidia-smi支持系统拓扑和连接性查询:

nvidia-smi topo --matrix

        GPU0    GPU1    GPU2    GPU3    mlx4_0  CPU Affinity
GPU0 X PIX PHB PHB PHB -
GPU1 PIX X PHB PHB PHB -
GPU2 PHB PHB X PIX PHB -
GPU3 PHB PHB PIX X PHB -
mlx4_0 PHB PHB PHB PHB X Legend: X = Self
SOC = Path traverses a socket-level link (e.g. QPI)
PHB = Path traverses a PCIe host bridge
PXB = Path traverses multiple PCIe internal switches
PIX = Path traverses a PCIe internal switch

复习本节将需要一些时间来适应,但可能非常有价值。 上面的配置显示了两个Tesla K80 GPU和一个Mellanox FDR InfiniBand HCA(mlx4_0),它们都连接到服务器的第一个CPU。 由于CPU是12核Xeon,因此拓扑工具建议将作业分配给前12个CPU核(尽管具体情况因应用程序而异)。

更高复杂性的系统在检查其配置和功能时需要格外小心。 以下是NVIDIA DGX-1系统的nvidia-smi拓扑的输出,其中包括两个20核CPU,八个连接NVLink的GPU和四个Mellanox InfiniBand适配器:

    GPU0    GPU1    GPU2    GPU3    GPU4    GPU5    GPU6    GPU7    mlx5_0    mlx5_2    mlx5_1    mlx5_3    CPU Affinity
GPU0 X NV1 NV1 NV2 NV2 SYS SYS SYS PIX SYS PHB SYS -,-
GPU1 NV1 X NV2 NV1 SYS NV2 SYS SYS PIX SYS PHB SYS -,-
GPU2 NV1 NV2 X NV2 SYS SYS NV1 SYS PHB SYS PIX SYS -,-
GPU3 NV2 NV1 NV2 X SYS SYS SYS NV1 PHB SYS PIX SYS -,-
GPU4 NV2 SYS SYS SYS X NV1 NV1 NV2 SYS PIX SYS PHB -,-
GPU5 SYS NV2 SYS SYS NV1 X NV2 NV1 SYS PIX SYS PHB -,-
GPU6 SYS SYS NV1 SYS NV1 NV2 X NV2 SYS PHB SYS PIX -,-
GPU7 SYS SYS SYS NV1 NV2 NV1 NV2 X SYS PHB SYS PIX -,-
mlx5_0 PIX PIX PHB PHB SYS SYS SYS SYS X SYS PHB SYS
mlx5_2 SYS SYS SYS SYS PIX PIX PHB PHB SYS X SYS PHB
mlx5_1 PHB PHB PIX PIX SYS SYS SYS SYS PHB SYS X SYS
mlx5_3 SYS SYS SYS SYS PHB PHB PIX PIX SYS PHB SYS X Legend: X = Self
SYS = Connection traversing PCIe as well as the SMP interconnect between NUMA nodes (e.g., QPI/UPI)
NODE = Connection traversing PCIe as well as the interconnect between PCIe Host Bridges within a NUMA node
PHB = Connection traversing PCIe as well as a PCIe Host Bridge (typically the CPU)
PXB = Connection traversing multiple PCIe switches (without traversing the PCIe Host Bridge)
PIX = Connection traversing a single PCIe switch
NV# = Connection traversing a bonded set of # NVLinks

还可以查询NVLink连接本身,以确保状态,功能和运行状况。 鼓励读者查阅NVIDIA文档,以更好地了解细节。 DGX-1上nvidia-smi的简短摘要如下所示。

nvidia-smi nvlink --status

GPU : Tesla V100-SXM2-32GB
Link : 25.781 GB/s
Link : 25.781 GB/s
Link : 25.781 GB/s
Link : 25.781 GB/s
Link : 25.781 GB/s
Link : 25.781 GB/s [snip] GPU : Tesla V100-SXM2-32GB
Link : 25.781 GB/s
Link : 25.781 GB/s
Link : 25.781 GB/s
Link : 25.781 GB/s
Link : 25.781 GB/s
Link : 25.781 GB/s

打印所有GPU详细信息

要列出特定GPU上的所有可用数据,请使用-i指定卡的ID。 这是旧版Tesla GPU卡的输出:

==============NVSMI LOG==============
Timestamp : Mon Nov ::
Driver Version : 410.48 Attached GPUs :
GPU ::00.0
Product Name : Tesla V100-PCIE-32GB
Product Brand : Tesla
Display Mode : Enabled
Display Active : Disabled
Persistence Mode : Disabled
Accounting Mode : Disabled
Accounting Mode Buffer Size :
Driver Model
Current : N/A
Pending : N/A
Serial Number : 032161808xxxx
GPU UUID : GPU-4965xxxx-79e3--12cb-1dfe9c53xxxx
Minor Number :
VBIOS Version : 88.00.48.00.
MultiGPU Board : No
Board ID : 0x1800
GPU Part Number : -2G500--
Inforom Version
Image Version : G500.0202.00.
OEM Object : 1.1
ECC Object : 5.0
Power Management Object : N/A
GPU Operation Mode
Current : N/A
Pending : N/A
GPU Virtualization Mode
Virtualization mode : None
IBMNPU
Relaxed Ordering Mode : N/A
PCI
Bus : 0x18
Device : 0x00
Domain : 0x0000
Device Id : 0x1DB610DE
Bus Id : ::00.0
Sub System Id : 0x124A10DE
GPU Link Info
PCIe Generation
Max :
Current :
Link Width
Max : 16x
Current : 16x
Bridge Chip
Type : N/A
Firmware : N/A
Replays since reset :
Tx Throughput : KB/s
Rx Throughput : KB/s
Fan Speed : N/A
Performance State : P0
Clocks Throttle Reasons
Idle : Not Active
Applications Clocks Setting : Not Active
SW Power Cap : Not Active
HW Slowdown : Not Active
HW Thermal Slowdown : Not Active
HW Power Brake Slowdown : Not Active
Sync Boost : Not Active
SW Thermal Slowdown : Not Active
Display Clock Setting : Not Active
FB Memory Usage
Total : MiB
Used : MiB
Free : MiB
BAR1 Memory Usage
Total : MiB
Used : MiB
Free : MiB
Compute Mode : Default
Utilization
Gpu : %
Memory : %
Encoder : %
Decoder : %
Encoder Stats
Active Sessions :
Average FPS :
Average Latency :
FBC Stats
Active Sessions :
Average FPS :
Average Latency :
Ecc Mode
Current : Enabled
Pending : Enabled
ECC Errors
Volatile
Single Bit
Device Memory :
Register File :
L1 Cache :
L2 Cache :
Texture Memory : N/A
Texture Shared : N/A
CBU : N/A
Total :
Double Bit
Device Memory :
Register File :
L1 Cache :
L2 Cache :
Texture Memory : N/A
Texture Shared : N/A
CBU :
Total :
Aggregate
Single Bit
Device Memory :
Register File :
L1 Cache :
L2 Cache :
Texture Memory : N/A
Texture Shared : N/A
CBU : N/A
Total :
Double Bit
Device Memory :
Register File :
L1 Cache :
L2 Cache :
Texture Memory : N/A
Texture Shared : N/A
CBU :
Total :
Retired Pages
Single Bit ECC :
Double Bit ECC :
Pending : No
Temperature
GPU Current Temp : C
GPU Shutdown Temp : C
GPU Slowdown Temp : C
GPU Max Operating Temp : C
Memory Current Temp : C
Memory Max Operating Temp : C
Power Readings
Power Management : Supported
Power Draw : 58.81 W
Power Limit : 250.00 W
Default Power Limit : 250.00 W
Enforced Power Limit : 250.00 W
Min Power Limit : 100.00 W
Max Power Limit : 250.00 W
Clocks
Graphics : MHz
SM : MHz
Memory : MHz
Video : MHz
Applications Clocks
Graphics : MHz
Memory : MHz
Default Applications Clocks
Graphics : MHz
Memory : MHz
Max Clocks
Graphics : MHz
SM : MHz
Memory : MHz
Video : MHz
Max Customer Boost Clocks
Graphics : MHz
Clock Policy
Auto Boost : N/A
Auto Boost Default : N/A
Processes
Process ID :
Type : C
Name : /usr/bin/python
Used GPU Memory : MiB

额外的nvidia-smi选项

当然,我们还没有介绍nvidia-smi工具的所有可能用途。 要阅读选项的完整列表,请运行nvidia-smi -h(相当长)。 一些子命令具有自己的帮助部分。 如果您需要更改卡上的设置,则需要查看设备修改部分:

-pm,  --persistence-mode=   Set persistence mode: /DISABLED, /ENABLED
-e, --ecc-config= Toggle ECC support: /DISABLED, /ENABLED
-p, --reset-ecc-errors= Reset ECC error counts: /VOLATILE, /AGGREGATE
-c, --compute-mode= Set MODE for compute applications:
/DEFAULT, /EXCLUSIVE_PROCESS,
/PROHIBITED
--gom= Set GPU Operation Mode:
/ALL_ON, /COMPUTE, /LOW_DP
-r --gpu-reset Trigger reset of the GPU.
Can be used to reset the GPU HW state in situations
that would otherwise require a machine reboot.
Typically useful if a double bit ECC error has
occurred.
Reset operations are not guarenteed to work in
all cases and should be used with caution.
-vm --virt-mode= Switch GPU Virtualization Mode:
Sets GPU virtualization mode to /VGPU or /VSGA
Virtualization mode of a GPU can only be set when
it is running on a hypervisor.
-lgc --lock-gpu-clocks= Specifies clocks as a
pair (e.g. ,) that defines the range
of desired locked GPU clock speed in MHz.
Setting this will supercede application clocks
and take effect regardless if an app is running.
Input can also be a singular desired clock value
(e.g. ).
-rgc --reset-gpu-clocks
Resets the Gpu clocks to the default values.
-ac --applications-clocks= Specifies clocks as a
pair (e.g. ,) that defines GPU's
speed in MHz while running applications on a GPU.
-rac --reset-applications-clocks
Resets the applications clocks to the default values.
-acp --applications-clocks-permission=
Toggles permission requirements for -ac and -rac commands:
/UNRESTRICTED, /RESTRICTED
-pl --power-limit= Specifies maximum power management limit in watts.
-am --accounting-mode= Enable or disable Accounting Mode: /DISABLED, /ENABLED
-caa --clear-accounted-apps
Clears all the accounted PIDs in the buffer.
--auto-boost-default= Set the default auto boost policy to /DISABLED
or /ENABLED, enforcing the change only after the
last boost client has exited.
--auto-boost-permission=
Allow non-admin/root control over auto boost mode:
/UNRESTRICTED, /RESTRICTED

nvidia-smi:控制您的GPU的更多相关文章

  1. 【转载】 NVIDIA Tesla/Quadro和GeForce GPU比较

    原文地址: https://blog.csdn.net/m0_37462765/article/details/74394932 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议 ...

  2. 10分钟内基于gpu的目标检测

    10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...

  3. 华为云linux服务器部署TensorFlow-gpu全攻略

    最近在玩谷歌新开源的自然语言模型bert,最开始是在google的免费GPU上面来弄的(这个部分其实也是可以写一个教程的,中间坑也挺多).但谷歌比较坑人,小数据集还行,大点的数据集训练耗费时间长,再加 ...

  4. 在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据

    在NVIDIA A100 GPU中使用DALI和新的硬件JPEG解码器快速加载数据 如今,最流行的拍照设备智能手机可以捕获高达4K UHD的图像(3840×2160图像),原始数据超过25 MB.即使 ...

  5. 安装GPU版本的tensorflow填过的那些坑!---CUDA说再见!

    那些坑,那些说不出的痛! --------回首安装的过程,真的是填了一个坑又出现了一坑的感觉.记录下了算是自己的笔记也能给需要的人提供一点帮助. 1 写在前面的话 其实在装GPU版本的tensorfl ...

  6. 向量体系结构(2)----SIMD指令集扩展和GPU

    进行SIMD多媒体扩展的设计,源于一个很容易观察到的事实: 许多多媒体应用程序操作的数据类型比对32位处理器进行针对性优化的数据类型更窄一些. 图像三基色,都是8位.音频采样也都是8位和16位来表示. ...

  7. 深入理解CPU和异构计算芯片GPU/FPGA/ASIC (下篇)

    3.2.1 CPU计算能力分析 这里CPU计算能力用Intel的Haswell架构进行分析,Haswell架构上计算单元有2个FMA(fused multiply-add),每个FMA可以对256bi ...

  8. GPU,CUDA,cuDNN的理解

    最近用到这方面的知识,感觉这篇文章写的很好,为了方便自己查阅,就搬运了过来,如果牵涉到侵权,请联系我,我会删除该博文!!! 我们知道做深度学习离不开GPU,不过一直以来对GPU和CPU的差别,CUDA ...

  9. 深入GPU硬件架构及运行机制

    目录 一.导言 1.1 为何要了解GPU? 1.2 内容要点 1.3 带着问题阅读 二.GPU概述 2.1 GPU是什么? 2.2 GPU历史 2.2.1 NV GPU发展史 2.2.2 NV GPU ...

随机推荐

  1. BERT模型图解

    转载于 腾讯Bugly 发表于 腾讯Bugly的专栏 原文链接:https://cloud.tencent.com/developer/article/1389555 本文首先介绍BERT模型要做什么 ...

  2. Dynamics CRM Performance Issue when CRM Forms Opening

    事情发生在Dynamics CRM 8.2.2版本,客户新升级到这个版本几个月的时间. 突然有一天,客户反映为什么我们打开CRM Form页面的时候loading的时间这么长呢?大概会需要5-15分钟 ...

  3. MATLAB GUI之ABC

    GUIDE 属性设置 name 更改名字 logo 在GUI的".m"文件中的OpeningFcn函数或者OutputFcn函数中添加以下代码: % 设置页面左上角的 LogoI ...

  4. bzoj3673可持久化并查集 by zky&&bzoj3674可持久化并查集加强版

    bzoj3673可持久化并查集 by zky 题意: 维护可以恢复到第k次操作后的并查集. 题解: 用可持久化线段树维护并查集的fa数组和秩(在并查集里的深度),不能路径压缩所以用按秩启发式合并,可以 ...

  5. Ethical Hacking - Web Penetration Testing(10)

    SQL INJECTION SQLMAP Tool designed to exploit SQL injections. Works with many DB types, MySQL, MSSQL ...

  6. react实战 : 用矩阵思想做一个自适应布局容器组件

    需求是这样的. 有一个需要显示若干方块型元素的小区域 数量比较少的时候显示一排 数量比较多的时候显示两排 用 grid 不好,因为当数量为奇数的时候需要两排里面的元素都乖乖的居中显示. 用 flex ...

  7. SQL 给某字段添加汉字却显示??

    错误展示: 解决方案: 1.在要修改的数据库上单击鼠标右键,并选择“属性”.   2.在弹出的数据库属性窗口中点击“选择页”中的“选项”.   3.将排序规则由默认的SQL_Latin1_Genera ...

  8. ISE第三方编辑器的使用

    刚开始使用ISE时候感觉ISE自带的编辑器并没有什么难用的,但是在看到了小梅哥的视频教学中那样行云流水般的操作让我心动不已,由此找到了相关的编辑器.为了以后看着方便直接摘取了前人的经验在我自己的博客中 ...

  9. 使用java实现希表的基础功能

    用java代码完成哈希表数据结构的简单实现, 以公司雇员的添加修改作为模拟实例 具体代码如下: package com.seizedays.hashtable; import java.util.Sc ...

  10. Python数据分析之股票数据

    最近股市比较火,我7月初上车了,现在已经下了.中间虽然吃了点肉,但下车的时候都亏进去了,最后连点汤都没喝着. 这篇文章我们就用python对股票数据做个简单的分析.数据集是从1999年到2016年上海 ...