我的电脑只有1个GPU。
下面是我输入某人的代码得到的结果
[name: "/device:CPU:0" device_type: "CPU" memory_limit: 268435456
locality {} incarnation: 16894043898758027805, name: "/device:GPU:0"
device_type: "GPU" memory_limit: 10088284160
locality {bus_id: 1 links {}}
incarnation: 17925533084010082620
physical_device_desc: "device: 0, name: GeForce RTX 3060, pci bus id: 0000:17:00.0, compute
capability: 8.6"]
我使用jupyter笔记本,我现在运行2个内核。(TensorFlow 2.6.0,还安装了CUDA和cuDNN作为TensorFlow指南)
第一个内核从Keras运行顺序模型是没有问题的。
但是当我在第二个内核中学习相同的代码时,我得到了如下的错误:
尝试使用StreamExecutor执行BLAS操作而不支持BLAS[[node sequential_3/dense_21/MatMul (defined at AppDataLocalTemp/ipykernel_14764/369236332 .py:1)]] [Op:__inference_train_function_7682]
函数调用栈:train_function
我如何能够毫无问题地学习多个内核,并仅与1个GPU共享它们?
我不熟悉TensorFlow 1.x。
我只是解决了这个问题如下。这个问题是因为当keras运行gpu。它几乎使用了所有的内存。所以我需要为每个笔记本设置memory_limit。这是我的代码,我如何解决它。您可以直接更改memory_limit的值。
gpus = tf.config.experimental.list_physical_devices('GPU')
if gpus:
try:
tf.config.experimental.set_virtual_device_configuration(
gpus[0],[tf.config.experimental.VirtualDeviceConfiguration(memory_limit=5120)])
except RuntimeError as e:
print(e)
为了社区的利益,在这里提供解决方案
这个问题是因为当keras与gpu一起运行,它几乎使用了所有的
vram
。所以我们需要给予每个笔记本的memory_limit
如下所示gpus = tf.config.experimental.list_physical_devices('GPU') if gpus: try: tf.config.experimental.set_virtual_device_configuration( gpus[0],[tf.config.experimental.VirtualDeviceConfiguration(memory_limit=5120)]) except RuntimeError as e: print(e)
(转述自MCPMH)
当打开Jupyter笔记本试图运行python脚本时,我遇到了这个错误。在运行脚本之前杀死笔记本内核是有效的。似乎只有一个程序可以在同一时间使用GPU。