官术网_书友最值得收藏!

  • Mastering TensorFlow 1.x
  • Armando Fandango
  • 240字
  • 2021-06-25 22:50:57

GPU memory handling

When you start running the TensorFlow session, by default it grabs all of the GPU memory, even if you place the operations and variables only on one GPU in a multi-GPU system.  If you try to run another session at the same time,  you will get out of memory error. This can be solved in multiple ways:

  • For multi-GPU systems, set the environment variable CUDA_VISIBLE_DEVICES=<list of device idx>
os.environ['CUDA_VISIBLE_DEVICES']='0'

The code executed after this setting will be able to grab all of the memory of only the visible GPU.

  • When you do not want the session to grab all of the memory of the GPU, then you can use the config option per_process_gpu_memory_fraction to allocate a percentage of memory:
config.gpu_options.per_process_gpu_memory_fraction = 0.5

This will allocate 50% of the memory of all the GPU devices.

  • You can also combine both of the above strategies, i.e. make only a percentage along with making only some of the GPU visible to the process.
  • You can also limit the TensorFlow process to grab only the minimum required memory at the start of the process. As the process executes further, you can set a config option to allow the growth of this memory.
config.gpu_options.allow_growth = True

This option only allows for the allocated memory to grow, but the memory is never released back.

You will learn techniques for distributing computation across multiple compute devices and multiple nodes in later chapters.

主站蜘蛛池模板: 旌德县| 张家界市| 延安市| 陵川县| 合阳县| 利辛县| 民乐县| 夏津县| 玉门市| 巨鹿县| 青阳县| 马山县| 昂仁县| 浪卡子县| 张北县| 泰和县| 四会市| 察雅县| 库车县| 大埔区| 娱乐| 荃湾区| 白沙| 贡觉县| 永川市| 漯河市| 微山县| 上高县| 密山市| 安陆市| 罗江县| 镇平县| 贵阳市| 闽清县| 南阳市| 通海县| 婺源县| 郧西县| 宣城市| SHOW| 灵山县|