如何使用c+更改tensorflow中每个进程的内存分数+;? 我在C++语言中开发了两种基于TF的应用程序,这些应用程序作为库。在调用方可执行程序中,先调用library1,然后调用library2。在library1初始化中,gpu内存分数设置为0.5,运行一些推断,并关闭会话。然后调用library2,gpu内存分数设置为0.8,但该设置无法工作,gpu内存分配没有更改。两个库的初始化代码相同,但分数值不同 int XXXLib::init(double per_process_gpu_memory_fraction) { SessionOptions options; ConfigProto* config = &options.config; GPUOptions* gpu_options = config->mutable_gpu_options(); // for library1, fraction = 0.5; for library2, fraction = 0.8 gpu_options->set_per_process_gpu_memory_fraction(per_process_gpu_memory_fraction); Status status = NewSession(options, &_session); }

如何使用c+更改tensorflow中每个进程的内存分数+;? 我在C++语言中开发了两种基于TF的应用程序,这些应用程序作为库。在调用方可执行程序中,先调用library1,然后调用library2。在library1初始化中,gpu内存分数设置为0.5,运行一些推断,并关闭会话。然后调用library2,gpu内存分数设置为0.8,但该设置无法工作,gpu内存分配没有更改。两个库的初始化代码相同,但分数值不同 int XXXLib::init(double per_process_gpu_memory_fraction) { SessionOptions options; ConfigProto* config = &options.config; GPUOptions* gpu_options = config->mutable_gpu_options(); // for library1, fraction = 0.5; for library2, fraction = 0.8 gpu_options->set_per_process_gpu_memory_fraction(per_process_gpu_memory_fraction); Status status = NewSession(options, &_session); },c++,tensorflow,memory-management,gpu,C++,Tensorflow,Memory Management,Gpu,似乎在调用set_per_process_gpu_memory_fraction()时,此进程中的gpu内存是固定的,甚至是新的另一个Newsession(),都会使用原始的分数值 不同的应用程序(库)应该使用不同的会话吗 gpu内存分数与会话或进程有关 如何在相同的过程中更改不同会话中的分数 一些环境信息: 我写过自定义代码吗?没有 操作系统平台和分发?Win10 Pro TensorFlow从何处安装?源代码 TensorFlow版本?1.9 CUDA/cuDNN版本?CUDA9.0,cu

似乎在调用set_per_process_gpu_memory_fraction()时,此进程中的gpu内存是固定的,甚至是新的另一个Newsession(),都会使用原始的分数值

  • 不同的应用程序(库)应该使用不同的会话吗
  • gpu内存分数与会话或进程有关
  • 如何在相同的过程中更改不同会话中的分数 一些环境信息:

    • 我写过自定义代码吗?没有
    • 操作系统平台和分发?Win10 Pro
    • TensorFlow从何处安装?源代码
    • TensorFlow版本?1.9
    • CUDA/cuDNN版本?CUDA9.0,cudnn 7.05
    • GPU型号和内存?带8GB内存的GTX1080

    这是不幸的,但在当前的TensorFlow(1.11)中,GPU内存分配器只创建一次(每个GPU设备)-这是在该过程中第一次创建会话。在以下会话中更改每个进程的gpu内存分数将不会产生任何影响


    关于您的库,我建议不要在其中创建会话。请用户向您提供一个他们根据自己的意愿配置的会话。或者,您可以只创建一个图形并返回要运行的操作。然后,用户可以根据自己的需要运行它们。

    如果要求用户配置并提供会话,第二次调用set_per_process_gpu_memory_fraction()时,它仍然不起作用,或者您想将两个库合并为一个库,它们只有一个接口来创建会话?是的,重构代码不会神奇地使每个会话的set\u per\u进程\u gpu\u内存\u分数。我只是建议会话配置是一个非常高级的概念,通常应由最终用户来处理,而不是深入到库中。。。分配不同数量GPU内存的唯一真正方法是启动一个新进程。