2017-05-25 2 views
0

Je veux exécuter un script écrit en Python et en utilisant Tensorflow. Puisque le serveur est partagé avec d'autres collègues, je voudrais limiter mon script à utiliser au plus 1/3 de la mémoire GPU du serveur.Tensorflow alloue tous les GPU malgré le contraire

Pour accomplir cela, je fais ce qui suit:

with tf.Graph().as_default(): gpu_options = tf.GPUOptions(allow_growth=True, per_process_gpu_memory_fraction=0.3) session_conf = tf.ConfigProto( allow_soft_placement=True, log_device-placement=False, gpu_options=gpu_options) with tf.Session(conf=session_conf) as sess: # some stuff

Mais quand je vérifie l'utilisation de la mémoire GPU via nvidia-smi commande, il dit que tout cela est alloué. Il y a 2 GPU sur le serveur et il semble que mon script les alloue tous les deux. Qu'est-ce que je fais mal ? Ce que j'ai écrit ci-dessus ne sont pas les premières lignes de code du script. Je fais d'abord un peu de traitement de données. Mais si je le dis au tout début, ça ne change pas non plus.

Répondre

0

Une réponse partielle consiste à définir une variable d'environnement avant d'appeler le script appelé $CUDA_VISIBLE_DEVICES=0. Avec cela, vous pouvez limiter l'utilisation au GPU-ID que vous spécifiez (GPU 0 dans cet exemple)

pour plus sur ce voir CUDA visible devices