gpt4 book ai didi

python - 如何在独立显卡 AMD GPU 上运行 Python 脚本?

转载 作者:行者123 更新时间:2023-12-03 20:23:50 32 4
gpt4 key购买 nike

WHAT I WANT TO DO:


我有一个脚本,用于在给定范围内分解素数:
# Python program to display all the prime numbers within an interval

lower = 900
upper = 1000

print("Prime numbers between", lower, "and", upper, "are:")

for num in range(lower, upper + 1):
# all prime numbers are greater than 1
if num > 1:
for i in range(2, num):
if (num % i) == 0:
break
else:
print(num)
我想使用 GPU 而不是 CPU 来运行这样的脚本,所以它会更快

THE PROBLEM:


我的 Intel NUC NUC8i7HVK 上没有 NVIDIA GPU但是一个 "Discrete GPU"
enter image description here
如果我运行此代码来检查我的 GPU 是什么:
import pyopencl as cl
import numpy as np

a = np.arange(32).astype(np.float32)
res = np.empty_like(a)

ctx = cl.create_some_context()
queue = cl.CommandQueue(ctx)

mf = cl.mem_flags
a_buf = cl.Buffer(ctx, mf.READ_ONLY | mf.COPY_HOST_PTR, hostbuf=a)
dest_buf = cl.Buffer(ctx, mf.WRITE_ONLY, res.nbytes)

prg = cl.Program(ctx, """
__kernel void sq(__global const float *a,
__global float *c)
{
int gid = get_global_id(0);
c[gid] = a[gid] * a[gid];
}
""").build()

prg.sq(queue, a.shape, None, a_buf, dest_buf)

cl.enqueue_copy(queue, res, dest_buf)

print (a, res)
我收到:
  • [0] <pyopencl.Platform 'AMD Accelerated Parallel Processing' at 0x7ffb3d492fd0>
  • [1] <pyopencl.Platform 'Intel(R) OpenCL HD Graphics' at 0x187b648ed80>

  • THE POSSIBLE APPROACH TO THE PROBLEM:


    我找到了一个 guide这将带您一步步地解释如何在您的 GPU 上运行它。但是所有通过 GPU 管理 Python 的 Pyhton 库,如 PyOpenGL , PyOpenCL 、Tensorflow ( Force python script on GPU )、PyTorch 等...是为 NVIDIA 量身定制的。
    如果您有 AMD,所有库都要求提供 ROCm但据我所知,此类软件仍然不支持集成 GPU 或离散 GPU(请参阅下面我自己的回复)。
    我只找到了一个 guide谈论这种方法,但我无法使其发挥作用。
    有希望还是我只是想去做一些不可能的事情?

    EDIT: Reply to @chapelo


    如果我选择 0答复是:
    Set the environment variable PYOPENCL_CTX='0' to avoid being asked again.
    [ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
    18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.] [ 0. 1. 4. 9. 16. 25. 36. 49. 64. 81. 100. 121. 144. 169.
    196. 225. 256. 289. 324. 361. 400. 441. 484. 529. 576. 625. 676. 729.
    784. 841. 900. 961.]
    如果我选择 1答复是:
    Set the environment variable PYOPENCL_CTX='1' to avoid being asked again.
    [ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
    18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31.] [ 0. 1. 4. 9. 16. 25. 36. 49. 64. 81. 100. 121. 144. 169.
    196. 225. 256. 289. 324. 361. 400. 441. 484. 529. 576. 625. 676. 729.
    784. 841. 900. 961.]

    最佳答案

    经过广泛的研究和多次尝试,我得出了结论:

  • PyOpenGL:主要与 NVIDIA 合作。如果您有 AMD GPU,则需要安装 ROCm
  • PyOpenCL:主要与 NVIDIA 合作。如果您有 AMD GPU,则需要安装 ROCm
  • TensorFlow:主要与 NVIDIA 合作。如果您有 AMD GPU,则需要安装 ROCm
  • PyTorch:主要与 NVIDIA 合作。如果您有 AMD GPU,则需要安装 ROCm

  • 我安装了 ROCm 但如果我运行 rocminfo它返回:
    ROCk module is NOT loaded, possibly no GPU devices
    Unable to open /dev/kfd read-write: No such file or directory
    Failed to get user name to check for video group membership
    hsa api call failure at: /src/rocminfo/rocminfo.cc:1142
    Call returned HSA_STATUS_ERROR_OUT_OF_RESOURCES: The runtime failed to allocate the necessary resources. This error may also occur when the core runtime library needs to spawn threads or create internal OS-specific events.
    clinfo返回:
    Number of platforms                               1
    Platform Name AMD Accelerated Parallel Processing
    Platform Vendor Advanced Micro Devices, Inc.
    Platform Version OpenCL 2.0 AMD-APP (3212.0)
    Platform Profile FULL_PROFILE
    Platform Extensions cl_khr_icd cl_amd_event_callback
    Platform Extensions function suffix AMD

    Platform Name AMD Accelerated Parallel Processing
    Number of devices 0

    NULL platform behavior
    clGetPlatformInfo(NULL, CL_PLATFORM_NAME, ...) No platform
    clGetDeviceIDs(NULL, CL_DEVICE_TYPE_ALL, ...) No platform
    clCreateContext(NULL, ...) [default] No platform
    clCreateContext(NULL, ...) [other] No platform
    clCreateContextFromType(NULL, CL_DEVICE_TYPE_DEFAULT) No devices found in platform
    clCreateContextFromType(NULL, CL_DEVICE_TYPE_CPU) No devices found in platform
    clCreateContextFromType(NULL, CL_DEVICE_TYPE_GPU) No devices found in platform
    clCreateContextFromType(NULL, CL_DEVICE_TYPE_ACCELERATOR) No devices found in platform
    clCreateContextFromType(NULL, CL_DEVICE_TYPE_CUSTOM) No devices found in platform
    clCreateContextFromType(NULL, CL_DEVICE_TYPE_ALL) No devices found in platform
    rocm-smi返回:
    Segmentation fault
    这是因为在 official guide它说“Ryzen 的集成 GPU 不是 ROCm 官方支持的目标。”并且因为我的是一个集成 GPU,所以我超出了范围。
    我将不再浪费时间,可能会购买 NVIDIA 或 AMD eGPU(外置 GPU)

    关于python - 如何在独立显卡 AMD GPU 上运行 Python 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65703605/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com