This bug is awaiting verification that the linux/6.14.0-32.32 kernel in
-proposed solves the problem. Please test the kernel and update this bug
with the results. If the problem is solved, change the tag
'verification-needed-plucky-linux' to 'verification-done-plucky-linux'.
If the problem still exists, change the tag 'verification-needed-plucky-
linux' to 'verification-failed-plucky-linux'.


If verification is not done by 5 working days from today, this fix will
be dropped from the source code, and this bug will be closed.


See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how
to enable and use -proposed. Thank you!


** Tags added: kernel-spammed-plucky-linux-v2 verification-needed-plucky-linux

-- 
You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.
https://bugs.launchpad.net/bugs/2120454

Title:
  Pytorch reports incorrect GPU memory causing "HIP Out of Memory"
  errors

Status in linux package in Ubuntu:
  Fix Released
Status in linux-oem-6.14 package in Ubuntu:
  Invalid
Status in linux source package in Noble:
  Invalid
Status in linux-oem-6.14 source package in Noble:
  In Progress
Status in linux source package in Plucky:
  Fix Committed
Status in linux-oem-6.14 source package in Plucky:
  Invalid
Status in linux source package in Questing:
  Fix Released
Status in linux-oem-6.14 source package in Questing:
  Invalid

Bug description:
  [SRU Justification]

  [ Impact ]

  PyTorch running on an APU may report out of memory if 1/2 system
  memory is reserved for VRAM.

  This can be identified with `rocminfo` output:

  1. for the default setup, 512MB for VRAM on a 64G RAM AMD Strix Halo
  development board:

  ```
  $ sudo  journalctl -b -1 | grep -B1 GTT
  Aug 15 18:47:46 test kernel: [drm] amdgpu: 512M of VRAM memory ready
  Aug 15 18:47:46 test kernel: [drm] amdgpu: 31822M of GTT memory ready.
  $ free -h
                total        used        free      shared  buff/cache   
available
  Mem:            62Gi       2.1Gi       3.5Gi        44Mi        57Gi        
60Gi
  Swap:             0B          0B          0B

  *******
  Agent 2
  *******
   Name:                    gfx1151
   Uuid:                    GPU-XX
   Marketing Name:          AMD Radeon Graphics
  ...
    Pool Info:
     Pool 1
       Segment:                 GLOBAL; FLAGS: COARSE GRAINED
       Size:                    32586284(0x1f13a2c) KB
       Allocatable:             TRUE
       Alloc Granule:           4KB
       Alloc Recommended Granule:2048KB
       Alloc Alignment:         4KB
       Accessible by all:       FALSE
  ```
  The pool 1 has 31822 MB = 32586284 KB.

  With dedicated VRAM set to 32GB:
  ```
  $ sudo dmesg | grep -B1 GTT
  [    3.640984] [drm] amdgpu: 32768M of VRAM memory ready
  [    3.640986] [drm] amdgpu: 15970M of GTT memory ready.
  $ free -h
                total        used        free      shared  buff/cache   
available
  Mem:            31Gi       1.6Gi        28Gi        44Mi       1.3Gi        
29Gi
  Swap:             0B          0B          0B

  *******
  Agent 2
  *******
   Name:                    gfx1151
   Uuid:                    GPU-XX
   Marketing Name:          AMD Radeon Graphics
  ...
    Pool Info:
     Pool 1
       Segment:                 GLOBAL; FLAGS: COARSE GRAINED
       Size:                    16353840(0xf98a30) KB
       Allocatable:             TRUE
       Alloc Granule:           4KB
       Alloc Recommended Granule:2048KB
       Alloc Alignment:         4KB
       Accessible by all:       FALSE
  ```
  In this case, while we have 32768 MB = 33554432 KB VRAM, but the pool 1 still 
allocates 15970 MB = 16353840 KB from GTT.

  [ Test Plan ]

  1. Follow https://rocm.docs.amd.com/projects/install-on-
  linux/en/latest/install/quick-start.html to install & setup necessary
  host environment for ROCm.

  2. Follow https://rocm.docs.amd.com/projects/install-on-
  linux/en/latest/install/3rd-party/pytorch-install.html#using-docker-
  with-pytorch-pre-installed to use prebuilt PyTorch image for easy
  verification. Or, while we need only `rocminfo` to identify the
  behavior, one may install rocminfo snap instead to minimize the
  effort.

  3. Assign more memory to VRAM. On AMD Strix Halo development board,
  it's in: Device Manager => AMD CBS => NBIO Common Options => GFX
  Configuration => Dedicated Graphics Memory. On the development board
  we have 64 GB RAM, and the options available are "High (32 GB)",
  "Medium (16 GB)", "Minimum (0.5 GB)".

  4. Use `rocminfo` to identify if the allocation is now switched to
  VRAM:

  ```
  *******
  Agent 2
  *******
   Name:                    gfx1151
   Uuid:                    GPU-XX
   Marketing Name:          AMD Radeon Graphics
  ...
    Pool Info:
     Pool 1
       Segment:                 GLOBAL; FLAGS: COARSE GRAINED
       Size:                    33554432(0x2000000) KB
       Allocatable:             TRUE
       Alloc Granule:           4KB
       Alloc Recommended Granule:2048KB
       Alloc Alignment:         4KB
       Accessible by all:       FALSE
  ```
  With kernel patched, the allocated memory size is now 33554432 KB = 32768 MB.

  [ Where problems could occur ]

  This corrects the allocation source as expected.

  [ Other Info ]

  Nominate for Plucky for 6.14, and Noble for oem-6.14.

  ========== original bug report ==========
  When running PyTorch on an APU it reports wrong amount of memory and models 
can't run.

  torch.OutOfMemoryError: HIP out of memory. Tried to allocate 18.00
  MiB. GPU 0 has a total capacity of 15.60 GiB of which 8.09 MiB is
  free. Of the allocated memory 15.10 GiB is allocated by PyTorch, and
  195.37 MiB is reserved by PyTorch but unallocated. If reserved but
  unallocated memory is large try setting
  PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid
  fragmentation.  See documentation for Memory Management
  (https://pytorch.org/docs/stable/notes/cuda.html#environment-
  variables)

  These two commits need to be backported into amdkfd to fix it.

  commit 8b0d068e7dd1 ("drm/amdkfd: add a new flag to manage where VRAM 
allocations go")
  commit 759e764f7d58 ("drm/amdkfd: use GTT for VRAM on APUs only if GTT is 
larger")

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/2120454/+subscriptions


-- 
Mailing list: https://launchpad.net/~kernel-packages
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~kernel-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to