My notebook has an APU and discrete GPU.
aticonfig --lsa
* 0. 00:01.0 AMD Radeon HD 6620G
1. 01:00.0 AMD Radeon 6600M and 6700M Series
aticonfig --pxl
PowerXpress: Discrete GPU is active (High-Performance mode).
aticonfig --lscc
Master adapter: 0. 00:01.0 AMD Radeon HD 6620G
Candidates: none
Master adapter: 1. 01:00.0 AMD Radeon 6600M and 6700M Series
Candidates: none
aticonfig --lscs
Candidate Combination:
Master: 0:0:0
Slave: 0:0:0
CrossFire is disabled on current device
CrossFire Diagnostics:
CrossFire can work with P2P mapping through GART
Candidate Combination:
Master: 0:0:0
Slave: 0:0:0
CrossFire is disabled on current device
CrossFire Diagnostics:
CrossFire can work with P2P mapping through GART
However, when I run clinfo I get only one two devices: one GPU (the discrete GPU) and one CPU.
I tried configuring the xorg.conf using aticonfig --initial --adapter=all, but still no luck.
Section "ServerLayout"
Identifier "aticonfig Layout"
Screen 0 "aticonfig-Screen[0]-0" 0 0
Screen "aticonfig-Screen[1]-0" RightOf "aticonfig-Screen[0]-0"
EndSection
Section "Monitor"
Identifier "aticonfig-Monitor[0]-0"
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"
EndSection
Section "Monitor"
Identifier "aticonfig-Monitor[1]-0"
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"
EndSection
Section "Device"
Identifier "aticonfig-Device[0]-0"
Driver "fglrx"
BusID "PCI:0:1:0"
EndSection
Section "Device"
Identifier "aticonfig-Device[1]-0"
Driver "fglrx"
BusID "PCI:1:0:0"
EndSection
Section "Screen"
Identifier "aticonfig-Screen[0]-0"
Device "aticonfig-Device[0]-0"
Monitor "aticonfig-Monitor[0]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Section "Screen"
Identifier "aticonfig-Screen[1]-0"
Device "aticonfig-Device[1]-0"
Monitor "aticonfig-Monitor[1]-0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
Could someone point me in the right direction?
I just tried to switch to the integrated GPU:
sudo aticonfig --px-igpu
PowerXpress: Integrated GPU is selected (Power-Saving mode), please restart Xserver(s) for changes to take effect!
aticonfig --pxl
PowerXpress: Integrated GPU is active (Power-Saving mode).
I rebooted, but it was still showing the discrete GPU:
aticonfig --pxl
PowerXpress: Discrete GPU is active (High-Performance mode).
I tried one more time to switch to the integrated GPU, and rebooted. This time it did indeed switch to the integrated GPU. However, now the integrated GPU shows up in clinfo, but not the discrete GPU.
EDIT: Before the second reboot I forgot that I also commented out the line containing "Screen ... RightOf ..." in my xorg.conf.
For Power Express to take affect you must specify only one screen in xorg.conf.
Call : sudo aticonfig --initial
And restart the X-sever, after this aticonfig --px-igpu/--px-dgpu should be fully functional.
Thanks for the tip, I can now switch between igpu and dgpu.
Is there anyway to use both the igpu and dgpu at the same time (not necessarily crossfire)? I would like to dedicate one to display and one to compute.
Yes, you can use both GPUs at the same time. Set back your initial configuration (aticonfig --initial --adapter=all).
For OCL processes set the environment varable COMPUTE with the name of the X-display associated with the GPU you wish to use. (usually COMPUTE=:0.1 or COMPUTE=:0.0) .
The OCL program will only be exposed to the GPU defined by the COMPUTE environement variable.
I couldn't get it work as I hoped. I made a bash script and put it in /etc/profile.d/amd-app.sh containing:
export DISPLAY=:0.0
export COMPUTE=:0.1
and then used the xorg.conf generated from aticonfig --initial --adapter=all. This booted but my screen was extended onto some ficticous screen (I only have my notebook's monitor) with all the menus on the other screen? I tried to modify the xorg.conf to use LeftOf instead of RightOf, but got the same problem, just different direction. I tried modifying the xorg.conf to
...
Screen 0 "aticonfig-Screen[0]-0" 0 0
Screen 1 "aticonfig-Screen[1]-0" 0 0
...
and to
...
Screen 0 "aticonfig-Screen[0]-0" 0 0
Screen 0 "aticonfig-Screen[1]-0" 0 0
...
and to
Screen 0 "aticonfig-Screen[0]-0" 0 0
Screen "aticonfig-Screen[1]-0" 0 0
but then the system wouldn't boot to login. I tried, in all three above cases, switching the DISPLAY and COMPUTE numbers, and then also using DISPLAY=:0 and COMPUTE=:0, but none of these combinations worked. Am I still doing something wrong?
I'm also wondering if say you have 3x GPUs in a desktop if you can dedicate one to display and two to compute using COMPUTE=...?
Also, what if you have 4x GPU in a desktop and want to dedicate two to display using crossfire and two to compute?
bump.
I still don't have a solution to getting both the igpu and dgpu working in OpenCL at the same time. I'd also like to selectively choose more than one device as the DISPLAY and COMPUTE in a quad-gpu system, say :1.0 and :2.0 for DISPLAY, and :3.0 and :4.0 for COMPUTE. Normally ':' is the delimiter for a list, but I doubt that would work in this case.
COMPUTE=:0
That uses all available devices for compute, but it still doesn't make both the igpu and dgpu show up in my notebook.
The second thing I want to know is how to use a subset (possibly more than one) of the devices for compute. I don't think these would work but imagine something like
export DISPLAY=:0.0,:1.0
export COMPUTE=:2.0,:3.0
or
export DISPLAY=:0.0,:2.0
export COMPUTE=:1.0,:3.0
or
export DISPLAY=:0.0
export COMPUTE=:1.0,:2.0,:3.0
Does someone know how to do this correctly?