TensorFlow - XLA_GPU не хватает памяти, а GPU_BFC содержит много свободных байтов - PullRequest
0 голосов
/ 05 декабря 2018

Я использую распределенную программу TensorFlow, и каждая машина оснащена графическим процессором Maxwell Titan X.Я получил ошибку OOM (сообщение об ошибке ниже) в начале программы:

tensorflow.python.framework.errors_impl.ResourceExhaustedError: Failed to allocate request for 48.00MiB (50331648B) on device ordinal 0
         [[{{node cluster_303_1/xla_run}} = _XlaRun[Targs=[DT_BFLOAT16, DT_BFLOAT16], Tresults=[DT_BFLOAT16], _device="/job:ps/replica:0/task:0/device:XLA_GPU:0"](transformer/decoder/att_3/att/einsum/parallel_0/einsum/transpose_2_G1444, transformer/decoder/att_3/att/einsum_3/parallel_0/einsum/transpose_1_G1446, cluster_303_1/xla_compile)]]

Это показывает, что устройству XLA_GPU не хватает памяти.В то же время, GPU_BFC содержит более 11 ГБ памяти графического процессора, и большая часть этой памяти свободна.Это происходит потому, что по умолчанию GPU_BFC выделяет и хранит почти всю память графического процессора и, таким образом, избегает вызова cuMemAlloc во время выполнения.Однако выделение памяти XLA_GPU не проходит через распределитель BFC для GPU и напрямую взаимодействует с драйвером CUDA.После GPU_BFC для использования XLA_GPU осталось всего несколько сотен МБ памяти графического процессора.Прежде всего, почему XLA_GPU нужен другой способ выделения памяти вместо того, чтобы использовать тот же распределитель BFC, что и GPU_BFC?

Я знаю, что могу позволить GPU_BFC выделять память только тогда, когда это необходимо, включивallow_growth в конфигурации сеанса .Поскольку динамическое распределение памяти может снизить производительность, существует ли лучший или более принципиальный способ совместного использования памяти GPU между XLA_GPU и GPU_BFC?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...