{ "info": { "author": "Fergal Cotter", "author_email": "fbc23@cam.ac.uk", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: BSD License", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: System :: Hardware", "Topic :: System :: Systems Administration" ], "description": "py3nvml\n=======\nDocumentation also available at `readthedocs`__.\n\nPython 3 compatible bindings to the NVIDIA Management Library. Can be used to\nquery the state of the GPUs on your system. This was ported from the NVIDIA\nprovided python bindings `nvidia-ml-py`__, which only \nsupported python 2. I have forked from version 7.352.0. The old library was \nitself a wrapper around the `NVIDIA Management Library`__.\n\n__ https://py3nvml.readthedocs.io/en/latest/\n__ https://pypi.python.org/pypi/nvidia-ml-py/7.352.0\n__ http://developer.nvidia.com/nvidia-management-library-nvml\n\nIn addition to these NVIDIA functions to query the state of the GPU, I have written\na couple functions/tools to help in using gpus (particularly for a shared\ngpu server). These are:\n\n- A function to 'restrict' the available GPUs by setting the `CUDA_VISIBLE_DEVICES` \n environment variable. \n- A script for displaying a differently formatted nvidia-smi.\n\nSee the Utils section below for more info.\n\nUpdates in Version 0.2.3\n------------------------\nTo try and keep py3nvml somewhat up-to-date with the constantly evolving nvidia\ndrivers, I have done some work to the `py3nvml.py3nvml` module. In particular,\nI have updated all the constants that were missing in py3nvml and existing in the\n`NVIDIA source`__ as of version 418.43. In addition, I have wrapped all of these \nconstants in Enums so it is easier to see what constants go together. Finally,\nfor all the functions in `py3nvml.py3nvml` I have copied in the\nC docstring. While this will result in some strange looking docstrings which\nwill be slightly incorrect, they should give good guidance on the scope of the\nfunction, something which was ill-defined before.\n\nFinally, I will remove the `py3nvml.nvidia_smi` module in a future version, as\nI believe it was only ever meant as an example of how to use the nvml functions\nto query the gpus, and is now quite out of date. To get the same functionality,\nyou can call `nvidia-smi -q -x` from python with subprocess.\n\n__ https://github.com/NVIDIA/nvidia-settings/blob/master/src/nvml.h\n\nRequires\n--------\nPython 3.5+.\n\nInstallation \n------------\nFrom PyPi::\n\n $ pip install py3nvml\n\nFrom GitHub::\n\n $ pip install -e git+https://github.com/fbcotter/py3nvml#egg=py3nvml\n\nOr, download and pip install:: \n\n $ git clone https://github.com/fbcotter/py3nvml\n $ cd py3nvml\n $ pip install .\n\n.. _utils-label:\n\nUtils \n-----\n(Added by me - not ported from NVIDIA library)\n\ngrab_gpus\n~~~~~~~~~\n\nYou can call the :code:`grab_gpus(num_gpus, gpu_select, gpu_fraction=.95)` function to check the available gpus and set\nthe `CUDA_VISIBLE_DEVICES` environment variable as need be. It determines if a GPU is available by checking if the\namount of free memory is below memory-usage is above/equal to the gpu_fraction value. The default of .95 allows for some\nsmall amount of memory to be taken before it deems the gpu as being 'used'. \n\nI have found this useful as I have a shared gpu server and like to use tensorflow which is very greedy and calls to\n:code:`tf.Session()` grabs all available gpus.\n\nE.g.\n\n.. code:: python\n\n import py3nvml\n import tensorflow as tf\n py3nvml.grab_gpus(3)\n sess = tf.Session() # now we only grab 3 gpus!\n\nOr the following will grab 2 gpus from the first 4 (and leave any higher gpus untouched)\n\n.. code:: python\n\n py3nvml.grab_gpus(num_gpus=2, gpu_select=[0,1,2,3])\n sess = tf.Session() \n\nThis will look for 3 available gpus in the range of gpus from 0 to 3. The range option is not necessary, and it only\nserves to restrict the search space for the grab_gpus. \n\nYou can adjust the memory threshold for determining if a GPU is free/used with the :code:`gpu_fraction` parameter\n(default is 1):\n\n.. code:: python\n\n # Will allocate a GPU if less than 20% of its memory is being used\n py3nvml.grab_gpus(num_gpus=2, gpu_fraction=0.8)\n sess = tf.Session() \n\nThis function has no return codes but may raise some warnings/exceptions:\n\n- If the method could not connect to any NVIDIA gpus, it will raise\n a RuntimeWarning. \n- If it could connect to the GPUs, but there were none available, it will \n raise a ValueError. \n- If it could connect to the GPUs but not enough were available (i.e. more than\n 1 was requested), it will take everything it can and raise a RuntimeWarning.\n\nget_free_gpus\n~~~~~~~~~~~~~\nThis tool can query the gpu status. Unlike the default for `grab_gpus`, which checks the memory usage of a gpu, this\nfunction checks if a process is running on a gpu. For a system with N gpus, returns a list of N booleans, where the nth\nvalue is True if no process was found running on gpu n. An example use is:\n\n.. code:: python\n\n import py3nvml\n free_gpus = py3nvml.get_free_gpus()\n if True not in free_gpus:\n print('No free gpus found')\n\nget_num_procs\n~~~~~~~~~~~~~\nThis function is called by `get_free_gpus`. It simply returns a list of integers\nwith the number of processes running on each gpu. E.g. if you had 1 process\nrunning on gpu 5 in an 8 gpu system, you would expect to get the following:\n\n.. code:: python\n\n import py3nvml\n num_procs = py3nvml.get_num_procs()\n print(num_proces)\n >>> [0, 0, 0, 0, 0, 1, 0, 0]\n\npy3smi\n~~~~~~\nI found the default `nvidia-smi` output was missing some useful info, so made use of the\n`py3nvml/nvidia_smi.py` module to query the device and get info on the\nGPUs, and then defined my own printout. I have included this as a script in\n`scripts/py3smi`. The print code is horribly messy but the query code is very\nsimple and should be understandable. \n\nRunning pip install will now put this script in your python's\nbin, and you'll be able to run it from the command line. Here is a comparison of\nthe two outputs:\n\n.. image:: https://i.imgur.com/TvdfkFE.png\n\n.. image:: https://i.imgur.com/UPSHr8k.png\n\nFor py3smi, you can specify an update period so it will refresh the feed every\nfew seconds. I.e., similar to :code:`watch -n5 nvidia-smi`, you can run\n:code:`py3smi -l 5`.\n\nYou can also get the full output (very similar to nvidia-smi) by running `py3smi\n-f` (this shows a slightly modified process info pane below).\n\nRegular Usage \n-------------\nVisit `NVML reference`__ for a list of the\nfunctions available and their help. Also the script py3smi is a bit hacky but\nshows examples of me querying the GPUs for info. \n\n__ https://docs.nvidia.com/deploy/nvml-api/index.html\n\n(below here is everything ported from pynvml)\n\n.. code:: python\n\n from py3nvml.py3nvml import *\n nvmlInit()\n print(\"Driver Version: {}\".format(nvmlSystemGetDriverVersion()))\n # e.g. will print:\n # Driver Version: 352.00\n deviceCount = nvmlDeviceGetCount()\n for i in range(deviceCount):\n handle = nvmlDeviceGetHandleByIndex(i)\n print(\"Device {}: {}\".format(i, nvmlDeviceGetName(handle)))\n # e.g. will print:\n # Device 0 : Tesla K40c\n # Device 1 : Tesla K40c\n\n nvmlShutdown()\n\nAdditionally, see `py3nvml.nvidia_smi.py`. This does the equivalent of the\n`nvidia-smi` command:: \n\n nvidia-smi -q -x\n\nWith\n\n.. code:: python\n\n import py3nvml.nvidia_smi as smi\n print(smi.XmlDeviceQuery())\n\nDifferences from NVML\n~~~~~~~~~~~~~~~~~~~~~\nThe py3nvml library consists of python methods which wrap \nseveral NVML functions, implemented in a C shared library.\nEach function's use is the same with the following exceptions:\n\n1. Instead of returning error codes, failing error codes are raised as Python exceptions. I.e. They should be wrapped with exception handlers.\n\n .. code:: python\n\n try:\n nvmlDeviceGetCount()\n except NVMLError as error:\n print(error)\n\n\n2. C function output parameters are returned from the corresponding Python function as tuples, rather than requiring pointers. Eg the C function:\n\n .. code:: c\n\n nvmlReturn_t nvmlDeviceGetEccMode(nvmlDevice_t device,\n nvmlEnableState_t *current,\n nvmlEnableState_t *pending);\n\n Becomes\n\n .. code:: python\n\n nvmlInit()\n handle = nvmlDeviceGetHandleByIndex(0)\n (current, pending) = nvmlDeviceGetEccMode(handle)\n\n3. C structs are converted into Python classes. E.g. the C struct:\n\n .. code:: c\n\n nvmlReturn_t DECLDIR nvmlDeviceGetMemoryInfo(nvmlDevice_t device,\n nvmlMemory_t *memory);\n typedef struct nvmlMemory_st {\n unsigned long long total;\n unsigned long long free;\n unsigned long long used;\n } nvmlMemory_t;\n\n Becomes:\n\n .. code:: python\n\n info = nvmlDeviceGetMemoryInfo(handle)\n print(\"Total memory: {}MiB\".format(info.total >> 20))\n # will print:\n # Total memory: 5375MiB\n print(\"Free memory: {}\".format(info.free >> 20))\n # will print:\n # Free memory: 5319MiB\n print(\"Used memory: \".format(info.used >> 20))\n # will print:\n # Used memory: 55MiB\n\n4. Python handles string buffer creation. E.g. the C function:\n\n .. code:: c\n\n nvmlReturn_t nvmlSystemGetDriverVersion(char* version,\n unsigned int length);\n\n Can be called like so:\n\n .. code:: python\n\n version = nvmlSystemGetDriverVersion()\n nvmlShutdown()\n\n\n5. All meaningful NVML constants and enums are exposed in Python. E.g. the constant `NVML_TEMPERATURE_GPU` is available under\n`py3nvml.NVML_TEMPERATURE_GPU` \n\nThe `NVML_VALUE_NOT_AVAILABLE` constant is not used. Instead None is mapped to the field.\n\nRelease Notes (for pynvml)\n--------------------------\nVersion 2.285.0\n\n- Added new functions for NVML 2.285. See NVML documentation for more information.\n- Ported to support Python 3.0 and Python 2.0 syntax.\n- Added nvidia_smi.py tool as a sample app.\n\nVersion 3.295.0\n\n- Added new functions for NVML 3.295. See NVML documentation for more information.\n- Updated nvidia_smi.py tool\n - Includes additional error handling\n\nVersion 4.304.0\n\n- Added new functions for NVML 4.304. See NVML documentation for more information.\n- Updated nvidia_smi.py tool\n\nVersion 4.304.3\n\n- Fixing nvmlUnitGetDeviceCount bug\n\nVersion 5.319.0\n\n- Added new functions for NVML 5.319. See NVML documentation for more information.\n\nVersion 6.340.0\n\n- Added new functions for NVML 6.340. See NVML documentation for more information.\n\nVersion 7.346.0\n\n- Added new functions for NVML 7.346. See NVML documentation for more information.\n\nVersion 7.352.0\n\n- Added new functions for NVML 7.352. See NVML documentation for more information.\n\nCOPYRIGHT\n---------\nCopyright (c) 2011-2015, NVIDIA Corporation. All rights reserved.\n\nLICENSE\n-------\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n- Redistributions of source code must retain the above copyright notice, this\n list of conditions and the following disclaimer.\n\n- Redistributions in binary form must reproduce the above copyright notice,\n this list of conditions and the following disclaimer in the documentation\n and/or other materials provided with the distribution.\n\n- Neither the name of the NVIDIA Corporation nor the names of its contributors\n may be used to endorse or promote products derived from this software without\n specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND\nANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\nWARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "https://github.com/fbcotter/py3nvml/archive/0.2.5.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/fbcotter/py3nvml.git", "keywords": "", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "py3nvml", "package_url": "https://pypi.org/project/py3nvml/", "platform": "", "project_url": "https://pypi.org/project/py3nvml/", "project_urls": { "Download": "https://github.com/fbcotter/py3nvml/archive/0.2.5.tar.gz", "Homepage": "https://github.com/fbcotter/py3nvml.git" }, "release_url": "https://pypi.org/project/py3nvml/0.2.5/", "requires_dist": [ "xmltodict" ], "requires_python": "", "summary": "Python 3 Bindings for the NVIDIA Management Library", "version": "0.2.5" }, "last_serial": 5960462, "releases": { "0.1.0rc1": [ { "comment_text": "", "digests": { "md5": "472a4d7b7888cd4474f7894fdb800ecc", "sha256": "e77477cba4efd6f85515aea509ad0f303d50318adc436b8da8eeeb0594ff4f16" }, "downloads": -1, "filename": "py3nvml-0.1.0rc1-py3-none-any.whl", "has_sig": false, "md5_digest": "472a4d7b7888cd4474f7894fdb800ecc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31030, "upload_time": "2017-08-21T12:28:57", "url": "https://files.pythonhosted.org/packages/08/2a/f0869f9e026e40103b8fa3be7ce65e2c897594f37059c5d5898fe3e2947c/py3nvml-0.1.0rc1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "37bf9306385e818a2824f3e786e0ae64", "sha256": "cefbfd9b391a0c30d3d12fbaa749874f6ab5bf3d9deaed3e639d53970d13faf4" }, "downloads": -1, "filename": "py3nvml-0.1.0rc1.tar.gz", "has_sig": false, "md5_digest": "37bf9306385e818a2824f3e786e0ae64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26425, "upload_time": "2017-08-21T12:26:20", "url": "https://files.pythonhosted.org/packages/3f/03/e4a852507287566f06f8b58f374939586c7cf79150fd79a29556a4b9e0d5/py3nvml-0.1.0rc1.tar.gz" } ], "0.1.0rc2": [ { "comment_text": "", "digests": { "md5": "69241195b95b1f30e33289bbf517022c", "sha256": "68401c6ef0b450824739292444a3559e6a28266a2a57b9f2d59510280b7cdb12" }, "downloads": -1, "filename": "py3nvml-0.1.0rc2.tar.gz", "has_sig": false, "md5_digest": "69241195b95b1f30e33289bbf517022c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26508, "upload_time": "2017-08-21T12:32:38", "url": "https://files.pythonhosted.org/packages/95/97/122dcd8e8d3dad22acab73b729384ce2e0147208d9ca6661cfcb7d77a8ea/py3nvml-0.1.0rc2.tar.gz" } ], "0.1.0rc3": [ { "comment_text": "", "digests": { "md5": "f637d6bfa7da469c52118426a302347e", "sha256": "60b9d927263f2cfc7c7df6c1ecd23020e04c375f36de7514e123466dc02927db" }, "downloads": -1, "filename": "py3nvml-0.1.0rc3-py3-none-any.whl", "has_sig": false, "md5_digest": "f637d6bfa7da469c52118426a302347e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31029, "upload_time": "2017-08-21T12:40:12", "url": "https://files.pythonhosted.org/packages/cd/10/d9852d56f2b199c0131dbb595dcd6906a48d5596c92a4f6bcf11568302cb/py3nvml-0.1.0rc3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "728fc0daeac85f79d54155dd484d25d2", "sha256": "58e37338a2bee0355047034d8b1263696ad1293338e75a84c02945bb6a8d7d86" }, "downloads": -1, "filename": "py3nvml-0.1.0rc3.tar.gz", "has_sig": false, "md5_digest": "728fc0daeac85f79d54155dd484d25d2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26681, "upload_time": "2017-08-21T12:39:23", "url": "https://files.pythonhosted.org/packages/57/b5/c0a75d6c0097cb20aed814349d21c8f0ffd057c39611af1bf7de627e966e/py3nvml-0.1.0rc3.tar.gz" } ], "0.1.0rc4": [ { "comment_text": "", "digests": { "md5": "7c17c3ade4798e3575de3fa78ce790fe", "sha256": "e86c3987179305cbc40e29efe72c5724df728531566245bec98dde25a6b990aa" }, "downloads": -1, "filename": "py3nvml-0.1.0rc4-py3-none-any.whl", "has_sig": false, "md5_digest": "7c17c3ade4798e3575de3fa78ce790fe", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31474, "upload_time": "2017-08-21T13:36:29", "url": "https://files.pythonhosted.org/packages/76/a5/9421d7f79f5c0e69ade63d2fc45bd75d1277cfc805c8e5866aa6ce13bc3a/py3nvml-0.1.0rc4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "99b244f62bb5e33f101e339c8cab4c20", "sha256": "a5e313d6cf7c863ddaf78b48797fdcf1c1604677c82da39d1cd9ded528252142" }, "downloads": -1, "filename": "py3nvml-0.1.0rc4.tar.gz", "has_sig": false, "md5_digest": "99b244f62bb5e33f101e339c8cab4c20", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27132, "upload_time": "2017-08-21T13:36:44", "url": "https://files.pythonhosted.org/packages/c3/a7/d8dda5b605c8ceb587d2dfed38930454362b5b1bd194d67dae3a0bee35ea/py3nvml-0.1.0rc4.tar.gz" } ], "0.1.0rc5": [ { "comment_text": "", "digests": { "md5": "ac1a5b4da7f73bf7437b9da16bab6b42", "sha256": "7a63c0be222d6e1b1256aa2d4c7d9835d829119d6d0a92b31adefc36cd0178c6" }, "downloads": -1, "filename": "py3nvml-0.1.0rc5-py3-none-any.whl", "has_sig": false, "md5_digest": "ac1a5b4da7f73bf7437b9da16bab6b42", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31453, "upload_time": "2017-09-19T15:29:34", "url": "https://files.pythonhosted.org/packages/d8/7b/8ebf9bef28eac0d0a8ed0a8d37780c1c15913abda18374883c79a7931e7c/py3nvml-0.1.0rc5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ce78105404750d571dabd868713a54d8", "sha256": "4e08b4080f7dbc5dc1127caad962378b8e5dfbd35bdbcd7fbb17a0a02c1a3b05" }, "downloads": -1, "filename": "py3nvml-0.1.0rc5.tar.gz", "has_sig": false, "md5_digest": "ce78105404750d571dabd868713a54d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27074, "upload_time": "2017-09-19T15:29:52", "url": "https://files.pythonhosted.org/packages/dc/1d/d9f906506b1f67339b8b7e66c3e8399b846269c26e71d1c59882562c7d3a/py3nvml-0.1.0rc5.tar.gz" } ], "0.1.0rc6": [ { "comment_text": "", "digests": { "md5": "3dca66d697d7e28244b8d2eae1d2eb95", "sha256": "dea3c790e15da493ac3c40fac524ab050dad7399a42d0abb7ee937a2fbf5f282" }, "downloads": -1, "filename": "py3nvml-0.1.0rc6-py3-none-any.whl", "has_sig": false, "md5_digest": "3dca66d697d7e28244b8d2eae1d2eb95", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31460, "upload_time": "2017-09-19T15:41:58", "url": "https://files.pythonhosted.org/packages/4e/aa/0cbcdc8c0cbc63a832ff4b9486c4dd593e46c7830a4776268875c5bf8ca5/py3nvml-0.1.0rc6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b7b94c77572220b85f9527af95e32113", "sha256": "ffb1c9e28899e4266330b8d742698071aa03e5e17d53c26c88816793ad26df36" }, "downloads": -1, "filename": "py3nvml-0.1.0rc6.tar.gz", "has_sig": false, "md5_digest": "b7b94c77572220b85f9527af95e32113", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27090, "upload_time": "2017-09-19T15:41:46", "url": "https://files.pythonhosted.org/packages/5d/b9/56405bfb1e37fb8c7705d34d082b91c7e27684218f3b306b8d19550fb6b0/py3nvml-0.1.0rc6.tar.gz" } ], "0.1.0rc7": [ { "comment_text": "", "digests": { "md5": "5ab19513e726a3d7e40b6459966d4462", "sha256": "8dba53734efdbfb75a0691aa4c73d6760c3d51c4b42f3a8721add1bb34604c88" }, "downloads": -1, "filename": "py3nvml-0.1.0rc7-py3-none-any.whl", "has_sig": false, "md5_digest": "5ab19513e726a3d7e40b6459966d4462", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 31491, "upload_time": "2017-11-16T01:38:44", "url": "https://files.pythonhosted.org/packages/cc/85/64d6b1eb07a8ccd98644f382c2b52000d804b99c9f9c8e7c88e100082dfa/py3nvml-0.1.0rc7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5d05c5a0e3429701cf9f633f5ce6c531", "sha256": "b1d2334ca6b581454fa340e87a51578360f335966244a9b8e04bcfe454186207" }, "downloads": -1, "filename": "py3nvml-0.1.0rc7.tar.gz", "has_sig": false, "md5_digest": "5d05c5a0e3429701cf9f633f5ce6c531", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27120, "upload_time": "2017-11-16T01:39:00", "url": "https://files.pythonhosted.org/packages/bf/4d/e2e581bc98f7ebe4c0f5be2f7c211d884abd1f8f373df68d53d45a176a3d/py3nvml-0.1.0rc7.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "a23970da690631217c969e2bac135516", "sha256": "4e378a5a896898745c736c1598ee764cc4f7aef4ebc15b1b5a5baa117b1b1ebf" }, "downloads": -1, "filename": "py3nvml-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a23970da690631217c969e2bac135516", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 32890, "upload_time": "2018-05-17T12:44:45", "url": "https://files.pythonhosted.org/packages/62/60/2c534623fceea4fd41e4b33f254bc84b5cf8bb91cad9e8ae54f89af52445/py3nvml-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "344f1eb17d6d26a2658d28ed16c8185d", "sha256": "94174e04d016149b2e0afd1e8fad5783551dfb6948d10f2db486efb079ae9939" }, "downloads": -1, "filename": "py3nvml-0.2.0.tar.gz", "has_sig": false, "md5_digest": "344f1eb17d6d26a2658d28ed16c8185d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30586, "upload_time": "2018-05-17T12:44:47", "url": "https://files.pythonhosted.org/packages/25/0a/4b824ec76e50652b9d3a43245103bdfc679b8e910085f223400b28e97f8c/py3nvml-0.2.0.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "c6f6704960a077f0e1d9bbc35cd060b7", "sha256": "7205a393d6b848b9e4cb117a9b15a019d889dafa7bee0b6b1d9dab1e47b3d6a5" }, "downloads": -1, "filename": "py3nvml-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c6f6704960a077f0e1d9bbc35cd060b7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 30032, "upload_time": "2018-10-23T11:51:08", "url": "https://files.pythonhosted.org/packages/f1/9f/2bd9bb548ca2e1c125a3de38a15b9c6870ef42f3003679c367562e275626/py3nvml-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "144e97bdb72cfe7813e4f0cfc6abab2d", "sha256": "647c0131368d0bdb1d1796d3e10651240bae2c0cc89d193d19a6dccc1a81781d" }, "downloads": -1, "filename": "py3nvml-0.2.2.tar.gz", "has_sig": false, "md5_digest": "144e97bdb72cfe7813e4f0cfc6abab2d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32718, "upload_time": "2018-10-23T11:51:09", "url": "https://files.pythonhosted.org/packages/ee/51/76e7710e84aef9f4c134bdca0d400c93e01c328c76f4eb1b11f71ea846bd/py3nvml-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "ed098b06af9ba3874bba83a142790732", "sha256": "ef106a134a1f8a2b172410741901c94c7e6c81a85066e24898e64e7ec7b354e2" }, "downloads": -1, "filename": "py3nvml-0.2.3-py3-none-any.whl", "has_sig": false, "md5_digest": "ed098b06af9ba3874bba83a142790732", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 54184, "upload_time": "2019-03-04T18:18:04", "url": "https://files.pythonhosted.org/packages/19/4c/55e27f30541f7b32791764d21811d40fc28145cacf39cd9fd4c1b2452ecd/py3nvml-0.2.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "944a36cf5ef4b3ef73379b90f930d04e", "sha256": "0a7b32e01c4d94142e9d44d826cd3b9637f86aa4d4e0c18e26464aa1cb9949bf" }, "downloads": -1, "filename": "py3nvml-0.2.3.tar.gz", "has_sig": false, "md5_digest": "944a36cf5ef4b3ef73379b90f930d04e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56553, "upload_time": "2019-03-04T18:18:06", "url": "https://files.pythonhosted.org/packages/ee/63/59bf7e15b81c038b30931057cec2f3ce1d038a43be7b5b36809daa77229b/py3nvml-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "b7eb781defc31678f4464d69be7ca6b3", "sha256": "a12d3fe930f34195cee39f19bd977a469ef76ada2ed02ce58fbd74f0e591b0f3" }, "downloads": -1, "filename": "py3nvml-0.2.4-py3-none-any.whl", "has_sig": false, "md5_digest": "b7eb781defc31678f4464d69be7ca6b3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 60879, "upload_time": "2019-10-11T13:35:10", "url": "https://files.pythonhosted.org/packages/f5/1f/24754e89147fe0c039634634f2514db5fa4a0bb62c58ef9b7f94cba647fa/py3nvml-0.2.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d297107d425d61c60c0c140bad227b92", "sha256": "3f28e9f7cd6db511b4f80e88fd66b051a7e4fbf33a4daa4e1ec7c121d762b2f8" }, "downloads": -1, "filename": "py3nvml-0.2.4.tar.gz", "has_sig": false, "md5_digest": "d297107d425d61c60c0c140bad227b92", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58200, "upload_time": "2019-10-11T13:35:12", "url": "https://files.pythonhosted.org/packages/67/82/c71c42d8b163dcfb8582b66b9b1c443f263b8e69df6894598176f6292bcf/py3nvml-0.2.4.tar.gz" } ], "0.2.5": [ { "comment_text": "", "digests": { "md5": "d033eeddbdde6354cdae59fd6b9b49f8", "sha256": "acd00728a9c0bc394e3d227213cd05e1f22023778c7dd39077843f71d5e03c55" }, "downloads": -1, "filename": "py3nvml-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d033eeddbdde6354cdae59fd6b9b49f8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 61004, "upload_time": "2019-10-11T14:02:49", "url": "https://files.pythonhosted.org/packages/e0/5e/9ae2fabc0004eb0187062c886a6ab8fd027fa9ff08d5ab153480a53e5e89/py3nvml-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "159191d9c906794a37814f10b9427be2", "sha256": "e263690a909857d1797b65e0ed4e13c57cb8ec73602025352fad4d462c83c67d" }, "downloads": -1, "filename": "py3nvml-0.2.5.tar.gz", "has_sig": false, "md5_digest": "159191d9c906794a37814f10b9427be2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58319, "upload_time": "2019-10-11T14:02:51", "url": "https://files.pythonhosted.org/packages/05/68/5f7a8c63762490508b3aa07a134f77108801bab759d2162b64039bab6f27/py3nvml-0.2.5.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d033eeddbdde6354cdae59fd6b9b49f8", "sha256": "acd00728a9c0bc394e3d227213cd05e1f22023778c7dd39077843f71d5e03c55" }, "downloads": -1, "filename": "py3nvml-0.2.5-py3-none-any.whl", "has_sig": false, "md5_digest": "d033eeddbdde6354cdae59fd6b9b49f8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 61004, "upload_time": "2019-10-11T14:02:49", "url": "https://files.pythonhosted.org/packages/e0/5e/9ae2fabc0004eb0187062c886a6ab8fd027fa9ff08d5ab153480a53e5e89/py3nvml-0.2.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "159191d9c906794a37814f10b9427be2", "sha256": "e263690a909857d1797b65e0ed4e13c57cb8ec73602025352fad4d462c83c67d" }, "downloads": -1, "filename": "py3nvml-0.2.5.tar.gz", "has_sig": false, "md5_digest": "159191d9c906794a37814f10b9427be2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58319, "upload_time": "2019-10-11T14:02:51", "url": "https://files.pythonhosted.org/packages/05/68/5f7a8c63762490508b3aa07a134f77108801bab759d2162b64039bab6f27/py3nvml-0.2.5.tar.gz" } ] }