"Attempting to perform BLAS operation using StreamExecutor without BLAS support" 发生错误

"Attempting to perform BLAS operation using StreamExecutor without BLAS support" error occurs

我的电脑只有 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 notebook 和 运行 2 个内核。 (TensorFlow 2.6.0 并且还安装了 CUDA 和 cuDNN 作为 TensorFlow 指南)

第一个内核对 运行 我的 Keras 顺序模型没有问题。

但是当我在第二个内核中学习相同的代码时,出现如下错误。

尝试在不支持 BLAS 的情况下使用 StreamExecutor 执行 BLAS 操作 [[节点 sequential_3/dense_21/MatMul(定义于 \AppData\Local\Temp/ipykernel_14764/3692363323.py:1)]] [Op:__inference_train_function_7682]

函数调用堆栈: train_function

我怎样才能毫无问题地学习多个内核并仅与 1 个 GPU 共享它们?

虽然我不熟悉 TensorFlow 1.x.x 版本。


我刚刚解决了这个问题,如下所示。这个问题是因为当keras 运行 with gpu.它几乎使用所有 vram。所以我需要为每个笔记本提供 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)

为了社区的利益,在此处提供解决方案

This problem is because when keras run with gpu, it uses almost all vram. So we needed to give memory_limit for each notebook as shown below

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)

(Paraphrased from MCPMH)

我在打开 Jupyter notebook 时尝试 运行 python 脚本时遇到此错误。在 运行 脚本之前杀死笔记本内核就可以了。好像只有一个程序可以同时使用GPU。