Jump to content

[Blog] Crossfire testing


angerthosenear

Recommended Posts

  • Moderator

This is to keep pre-testing for Crossfire out of the main DIY eGPU thread. Keep it consolidated for those interesting a Crossfire link @ 1x in desktop or laptop.

My original testing in a desktop (link below), proved useless since the 2nd PCIe slot didn't allow for a 1x link for some reason or another. I don't have any 1x to 16x extender cables so couldn't use any other ports.

http://forum.techinferno.com/diy-e-gpu-projects/2109-diy-egpu-experiences-%5Bversion-2-0%5D-50.html#post78257

@sskillz is doing Crossfire testing on his desktop with a 1x to 16x riser (when he gets it in the mail). This will help to prove if it works at all in a 1x link.

He got 1x working in his 16x port so just needs the extender to utilize his other 1x port to attempt Crossfire:

http://forum.techinferno.com/diy-e-gpu-projects/2109-diy-egpu-experiences-%5Bversion-2-0%5D-51.html#post78558

@jacobsson is donating (to be returned of course) a mPCIe PE4L adapter to me for testing Crossfire @ 1x on a laptop. Going from Sweden -> US so this will take some time to arrive. Hopefully sskillz's testing will be done by then to determine if Crossfire works at all with a 1x link.

Read the final report here!! (or scroll through and read how it evolved)

http://forum.techinferno.com/diy-e-gpu-projects/5622-%5Bblog%5D-crossfire-testing.html#post82280

Link to comment
Share on other sites

Don't wish to rain on the parade but tunico5 wrote here:

Okay I found the answer for the SLI:

"Both SLI and Crossfire need more than x4 bandwith to be enabled in both control panels. Tested also on a desk rig (p55) and and I couldn't enable Crossfire under x4-x4 (if I use lower than that I cannot enable crossfire). SLI was tested on techpowerup forum with Hypersli (chipset p67 without SLI certification very similar to my hm65). There on speeds x16-x1 people couldn't enable SLI while when they change their configuration to x16-x4 or x4-x4 the sli tab was enabled. There is a possibility that it is possible to do an x1-x1 with older drivers (192.xx) but I haven't try it yet since I need 9xxx or older cards)"

Therefore only possible when TH05 has x4 and connecting to both ports

You guys' testing results will confirm this. The comment seems mostly directed to NVidia's SLI so fingers crossed AMD's Crossfire does enable on two x1 links.

Link to comment
Share on other sites

  • Moderator
Don't wish to rain on the parade but tunico5 wrote here:

You guys' testing results will confirm this. The comment seems mostly directed to NVidia's SLI so fingers crossed AMD's Crossfire does enable on two x1 links.

Yeah, the vagueness everywhere else with Crossfire is the only hope for this working. That is the only mention I have seen about Crossfire needing 4x+. Is there a way to spoof the #x link? So it'll still be running on 1x but report software wise as 4x/8x/16x? Or would that just cause instability or something.

Link to comment
Share on other sites

Yeah, the vagueness everywhere else with Crossfire is the only hope for this working. That is the only mention I have seen about Crossfire needing 4x+. Is there a way to spoof the #x link? So it'll still be running on 1x but report software wise as 4x/8x/16x? Or would that just cause instability or something.

There's a read-only link status pci config register on the video card that reports link width. That's the one that GPU-Z reads and reports on which presumably the drivers do too. No way of spoofing it that I'm aware of.

Yeah.. I too hope the vagueness in the previously posted quote works in your favor of getting a successful x1 AMD crossfire arrangement working.

  • Thumbs Up 1
Link to comment
Share on other sites

There's a read-only link status pci config register on the video card that reports link width. That's the one that GPU-Z reads and reports on which presumably the drivers do too. No way of spoofing it that I'm aware of.

Yeah.. I too hope the vagueness in the previously posted quote works in your favor of getting a successful x1 AMD crossfire arrangement working.

What's the Kernel API (Win, AMD's) used to read it? Maybe it can be hooked/intercepted?

Do you think these two are read from that register using the same API?

post-19480-14494996828502_thumb.png

Edit5: GPU-Z uses a kernel mode driver to read the register:

post-19480-14494996829129_thumb.png

But this program nor windows are able to see the actual .sys file in that temp folder, so I can't try to disassemble it and see how it works.

Do you know specifically how do I access the said registers from windows? Even if its from kernel mode? Are you sure it read only?

And lastly, Anyone tried ATI Tray tools to enable crossfire?

  • Thumbs Up 1
Link to comment
Share on other sites

I've managed to modify some parts of catalyst as seen here (GPU-Z's reading is the real current speed):

post-19480-1449499687226_thumb.png

This isn't just changing a label, at least I hope not. I tried to reach where the Catalyst got the info in the first place, and got to some AdapterInfo structure.

It might not be "deep" enough, and there multiple places that store this info. I'm not sure which one might fool Catalyst to allow crossfire(if it blocks it), if even possible.

A different way might be to just do what the Enable Crossfire button...

I still don't have a 1x-16x to connect a second GPU to test this.

  • Thumbs Up 2
Link to comment
Share on other sites

  • Moderator
I've managed to modify some parts of catalyst as seen here (GPU-Z's reading is the real current speed):

[ATTACH=CONFIG]10153[/ATTACH]

This isn't just changing a label, at least I hope not. I tried to reach where the Catalyst got the info in the first place, and got to some AdapterInfo structure.

It might not be "deep" enough, and there multiple places that store this info. I'm not sure which one might fool Catalyst to allow crossfire(if it blocks it), if even possible.

A different way might be to just do what the Enable Crossfire button...

I still don't have a 1x-16x to connect a second GPU to test this.

Hmm that's interesting. Hopefully you can figure out everything that is going on under the hood. I don't have any AMD GPUs with me to help you look around. Hopefully either Catalyst or some other utility can forcibly enable Crossfire (if blocked).

Hopefully your 1x to 16x entender cable arrives next week!

Link to comment
Share on other sites

Riser is here, it didn't work for me at first with the monitor plug on the on in the regular 16x slot, only when I moved it to the one on the 1x-16x riser did it work (with and without a CF bridge):

post-19480-14494996905415_thumb.png

But crossfire options isn't available, at least for now :| I think I'm patching the bus lanes only when you open the hardware tab, so it might be too late and the crossfire tab isn't dynamic.

Damn riser got here so late that I don't have much time now because we started the semester's exams, I'll update when I'll have some time :/

  • Thumbs Up 2
Link to comment
Share on other sites

anyone wanna try Ubuntu aticonfig tool?

Something like the following:


Add Multiple GPU chain: <code>aticonfig --cfa --adapter=0,1</code>
Switch CF on: <code>aticonfig --cf on --adapter=0,1</code> or <code>aticonfig --adapter=0,1 --crossfire=on</code>. Reboot to take effect.
Check if CF is enabled: <code>aticonfig --lscs</code>
See the load on the GPUs: <code>watch -n10 aticonfig --adapter=all --odgt --odgc</code>
See GPU chain info for each GPU: <code>aticonfig --lsch</code>


If anyone wants to try, you can use a Ubuntu LiveCD or USB bootable drive with persistent storage on the same bootable USB drive so

you can install drivers (AMD's).

http://www.howtogeek.com/howto/14912/create-a-persistent-bootable-ubuntu-usb-flash-drive/

Link to comment
Share on other sites

  • Moderator
anyone wanna try Ubuntu aticonfig tool?

Something like the following:


Add Multiple GPU chain: <code>aticonfig --cfa --adapter=0,1</code>
Switch CF on: <code>aticonfig --cf on --adapter=0,1</code> or <code>aticonfig --adapter=0,1 --crossfire=on</code>. Reboot to take effect.
Check if CF is enabled: <code>aticonfig --lscs</code>
See the load on the GPUs: <code>watch -n10 aticonfig --adapter=all --odgt --odgc</code>
See GPU chain info for each GPU: <code>aticonfig --lsch</code>


If anyone wants to try, you can use a Ubuntu LiveCD or USB bootable drive with persistent storage on the same bootable USB drive so

you can install drivers (AMD's).

Create a Persistent Bootable Ubuntu USB Flash Drive

I wouldn't mind trying this. Although, do I need to run Setup 1.x for PCI compaction or a DSDT override? Seeing I have to use both to get it to work in Win7/8.1 would be hard in a Live USB operation. Leaning that I probably won't need to do so. I can try Live USB tonight to see if it works with a single card (R9 280X).

Which Ubuntu distro would you recommend I try? Going with 13.10 for now.

--

Just waiting till I get home, got drivers installed.

Link to comment
Share on other sites

I'm not familiar with Ubuntu, but my guess is that any common distribution will work just fine.

Although I don't know how to run setup 1.x and boot from there to a linux disk/usb but there is some mention of it in setup 1.x thread.

Maybe @Tech Inferno Fan can help.

I'm curious if it will work on linux, it won't give us much real gain other then knowing for sure that it is the driver that's limiting it.

Link to comment
Share on other sites

  • Moderator
I'm not familiar with Ubuntu, but my guess is that any common distribution will work just fine.

Although I don't know how to run setup 1.x and boot from there to a linux disk/usb but there is some mention of it in setup 1.x thread.

Maybe @Tech Inferno Fan can help.

I'm curious if it will work on linux, it won't give us much real gain other then knowing for sure that it is the driver that's limiting it.

I still have to wait for the the snails working at the post office / customs for the adapter to arrive. I haven't tried Ubuntu with the single card yet. Might not need the DSDT override. I'll test and report back.

Hopefully I got the persistent USB thinger working. I've never been able to get it to work <_<

Couldn't get Ubuntu to work live at all..

---

What about something like this:

https://www.xgamingstudio.com/forum/showthread.php?10-RELEASE-ATI-CrossFire-Xtension-A-way-to-force-crossfire-w-profiles

Link to comment
Share on other sites

I still have to wait for the the snails working at the post office / customs for the adapter to arrive. I haven't tried Ubuntu with the single card yet. Might not need the DSDT override. I'll test and report back.

Hopefully I got the persistent USB thinger working. I've never been able to get it to work <_<

Couldn't get Ubuntu to work live at all..

---

What about something like this:

https://www.xgamingstudio.com/forum/showthread.php?10-RELEASE-ATI-CrossFire-Xtension-A-way-to-force-crossfire-w-profiles

That's a nice find, why do they never release source code for this types of programs :/ I can't seem to be able to even send

him a pm about it.

Here's some info on how to setup linux for mining, on a USB disk for example

step by step headless linux setup from scratch all the way to LAMP (apache2, mysql & php/perl/python) and ANUBIS cgminer front end : litecoinmining

(Of course you don't need the last mining related steps and I would disconnect my hard drive power if there is any chance

it will mess with windows boot loader).

Link to comment
Share on other sites

Crossfire seems to be working under linux!

I've used Universal-USB-Installer-1.9.5.2 to create a live ubuntu of ubuntu-13.10-desktop-amd64.iso with about 2GB persistent data.

Then after it boot up (try linux mode), I've opened terminal and used sudu -i and then passwd to set a new root password.

I've reopened the terminal and ran the following commands:

sudo apt-get install build-essential cdbs dh-make dkms

sudo apt-get install execstack dh-modaliases fakeroot libqtgui4

sudo apt-get install ia32-libs ia32-libs-multiarch:i386

sudo apt-get install lib32gcc1 libc6-i386

to install amd driver dependencies (I think the second to last didn't work, but it didn't matter).

Then I went to Settings -> software updates -> other -> and installed amd propriety driver (fglrx, not the updates one, not sure if matters).

Once it finishes I tried:<code>

sudo aticonfig --list-adapters</code>and it showed both cards, Then to remake x config:

sudo aticonfig --adapter=all --initial -f

and reboot.

now my cards were listed as id 0, id 1 so to enable crossfire I've used:

<code>sudo aticonfig --adapter=0,1 --cfa </code>

to add adapters 0 and 1 to a crossfire chain.

now: <code>sudo aticonfig --lsch</code>

should say crossfire is disabled on the chain, so to enable it:

<code><code>sudo aticonfig --adapter=0,1 --crossfire=on</code></code>

reboot.

now to verify that its on use:

<code>sudo aticonfig --lscs

</code><code></code><code>or</code><code></code><code></code><code>sudo aticonfig --lsch</code>

I've haven't tried just enabling it in catalyst control panel before setting up the chain and all (It does enable and disable it after I already had a chain).

Heres screeshots:

post-19480-1449499695914_thumb.jpg

post-19480-14494996959322_thumb.jpg

benchmarks:

* Crossfire Off, Basic preset on fullscreen (that's why it says custom, windowed mode is crashing after 2-3 secs):

post-19480-1449499695952_thumb.jpg

* Crossfire Off, Extreme preset on fullscreen (that's why it says custom, windowed mode is crashing after 2-3 secs):

post-19480-14494996959702_thumb.jpg

* Crossfire On, Basic preset on fullscreen (that's why it says custom, windowed mode is crashing after 2-3 secs):

post-19480-14494996959915_thumb.jpg

* Crossfire On, Extreme preset on fullscreen (that's why it says custom, windowed mode is crashing after 2-3 secs):

post-19480-14494996960112_thumb.jpg

I was running at full screen so I couldn't see gpu usages, also there aren't many benchmarks that I could find for linux. and I was running of a USB stick.

Before it crashes on windowed mode, I've seen about 30% GPU usage on the second adapter, but it crushes so fast that I don't know if it might get higher.

heaven GPU model field says x1 GPU adapters... but there is performance gain, weird.

I might make it output to a file so I could see it, but I think its more important that it does work, just windows version of catalyst doesn't allow you to enable it!

My config is 2x HD6950 (shaders unlocked), one is on a 1x-16x riser, the other has its lanes taped to work on 1x in a 16x slots.

Here's windows single card (opengl, fullscreen) for comparison:

post-19480-14494996960299_thumb.png

  • Thumbs Up 6
Link to comment
Share on other sites

  • Moderator
Crossfire seems to be working under linux!

SWEET!!!!!!!!!

I'll attempt to meetup with my friend so I can borrow his card so I can attempt Cfire externally. I'll have a spare drive so I'll use an installed version of Ubuntu for testing.

I guess if I can get that working properly, we just gotta figure out how to force enable Cfire in Windows. There doesn't so happen to be a commandline based setup similar to aticonfig in Windows is there?

  • Thumbs Up 1
Link to comment
Share on other sites

I'm not sure what to try next, I can view the IL (.NET) assembly of some of win Catalyst CCC implementation using Reflector, and edit them using Reflexil. This isn't the driver, but it might have control over what we want. This is how I modified the reading but I've only patched them at the hardware info button click.

Looking at the assemblies code I haven't found any obvious place to patch it, there are a number of references to crossfire (add all the assemblies and do a search) [ATTACH=CONFIG]10670[/ATTACH] But I'm not so good with .NET (and AMD naming) to really understand whats going on, so I'm calling anyone who knows this stuff to help us understand (with Reflector for example) what CCC is doing, where does it disables the option? and on what terms?, where does the kernel module (driver) comes into play? and with what interface?

Just a dump of what I've gathered so far:

ATI.ACE.CLI.Aspect.CrossFireX.Graphics.Dashboard.DB_CrossFireXForm is the CCC Dashboard crossfire tab,



ATI.ACE.CLI.Caste.Graphics.Shared.SGraphicsAdapter is a interface to the graphics adapter, it has bus speed, features and so on.. ATI.ACE.CLI.Foundation.SCaste is a type of SCAA which has a VisibilityToATI member which seems to be one of the factors if a feature is supported or isn't, it also has a Feature array, which has a ".CF" feature to determine whether DB_CrossFireXForm will be visible to the adapter. ATI.ACE.CLI.Aspect.PowerXpress.Graphics.Shared.SPowerXpress is a type of SCAA, and is referenced a lot with relating to different features, including crossfire.

the enable crossfire button (probably same reciever for both the disable and enable button), some of this doesn't make sense (intergrated ?)

private void btn_Click(object sender, EventArgs e) { if (this.Disposed_) { throw new ObjectDisposedException(FORM_NAME); } if (!this.isUpdateUI && (this.SCrossFireX_ != null)) { Button button = (Button) sender; GpuAssignment discrete = GpuAssignment.Discrete; string name = button.Name; if (name != null) { if (!(name == "btnEnableCFX")) { if (name == "btnConfigureHK") { string groupName = (this.IDBAspect_ != null) ? this.IDBAspect_.Adapter.InstanceName : string.Empty; if (this.IDBForm_ != null) { this.IDBForm_.LaunchHotkeyManager(groupName, CrossFireX.lbStrMenuText); } } } else { GpuAssignment current = this.SCrossFireX_.GPUAssignmentFeature.GpuStatus.Current; if (GpuAssignment.Integrated == current) { discrete = GpuAssignment.Discrete; } if (GpuAssignment.Discrete == current) { discrete = GpuAssignment.Integrated; } else { LogMessages.LogError("Show wrong mode currently, thus can't change mode!"); } IPowerXpressAspect iAspect = this.SCrossFireX_.IAspect as IPowerXpressAspect; if (iAspect != null) { iAspect.TransitGPU(discrete); } } } this.SCrossFireX_.IAspect.Put(this.SCrossFireX_); } }


        internal DB_CrossFireX(HAdapter adapter, SPowerXpress sPowerXpress) : base(SPowerXpress.AspectName, adapter, SGraphicsCaste.CasteName)
        {
            if (sPowerXpress == null)
            {
                LogMessages.ReportNullArgumentAndThrowException("sPowerXpress");
            }
            this.SAspect = sPowerXpress;
            SGraphicsAdapter sAdapter = adapter.SAdapter as SGraphicsAdapter;
            if (sAdapter != null)
            {
                this.IsWorkStation_ = sAdapter.IsWorkstation;
            }
            string casteName = SGraphicsCaste.CasteName;
            string str = string.Concat(SPowerXpress.AspectName, ".CF");
            if (DB_CrossFireX.CrossFireXKey_ == null)
            {
                string[] strArrays = new string[] { casteName, str };
                DB_CrossFireX.CrossFireXKey_ = Localisations.NewILocalisationKey(strArrays);
            }
            if (DB_CrossFireX.ToggleCrossFireXHKKey_ == null)
            {
                string[] strArrays1 = new string[] { casteName, str, "Toggle between High and Low Power ASIC" };
                DB_CrossFireX.ToggleCrossFireXHKKey_ = Localisations.NewILocalisationKey(strArrays1);
            }
            if (DB_CrossFireX.EnableCrossFireXHKKey_ == null)
            {
                string[] strArrays2 = new string[] { casteName, str, "Tranist to Highter Power ASIC" };
                DB_CrossFireX.EnableCrossFireXHKKey_ = Localisations.NewILocalisationKey(strArrays2);
            }
            if (DB_CrossFireX.DisableCrossFireXHKKey_ == null)
            {
                string[] strArrays3 = new string[] { casteName, str, "Tranist to Lower Power ASIC" };
                DB_CrossFireX.DisableCrossFireXHKKey_ = Localisations.NewILocalisationKey(strArrays3);
            }
        }

EnableCrossFireX relating to "Tranist to Highter Power ASIC" makes no sense...


     
private void btn_Click(object sender, EventArgs e) { if (this.Disposed_) { throw new ObjectDisposedException(FORM_NAME); } if (!this.isUpdateUI && (this.SCrossFireX_ != null)) { Button button = (Button) sender; GpuAssignment discrete = GpuAssignment.Discrete; string name = button.Name; if (name != null) { if (!(name == "btnEnableCFX")) { if (name == "btnConfigureHK") { string groupName = (this.IDBAspect_ != null) ? this.IDBAspect_.Adapter.InstanceName : string.Empty; if (this.IDBForm_ != null) { this.IDBForm_.LaunchHotkeyManager(groupName, CrossFireX.lbStrMenuText); } } } else { GpuAssignment current = this.SCrossFireX_.GPUAssignmentFeature.GpuStatus.Current; if (GpuAssignment.Integrated == current) { discrete = GpuAssignment.Discrete; } if (GpuAssignment.Discrete == current) { discrete = GpuAssignment.Integrated; } else { LogMessages.LogError("Show wrong mode currently, thus can't change mode!"); } IPowerXpressAspect iAspect = this.SCrossFireX_.IAspect as IPowerXpressAspect; if (iAspect != null) { iAspect.TransitGPU(discrete); } } } this.SCrossFireX_.IAspect.Put(this.SCrossFireX_); } }




 
public static void Check(HAdapter adapter) { SPowerXpress sAspect = adapter.SAdapter.IAdapter.GetSAspect(SPowerXpress.AspectName + FLAVOR) as SPowerXpress; if ((sAspect != null) && sAspect.VisibleToATI) { DB_CrossFireX item = new DB_CrossFireX(adapter, sAspect); if (adapter.AspectList != null) { adapter.AspectList.Add(item); } } }


FLAVOR = ".CF";


I'll try and patch this function and report back, Edit: didn't work. I should test if any of this code even gets called and with what parameters, but reflexil isn't too flexible.

Maybe there is a better way, higher level way (kernel interception).

Source code for AMD tools (e.g ati tray tools) which are related to or can enable crossfire will also help.

Hacking forums where we can ask for help too :)
  • Thumbs Up 2
Link to comment
Share on other sites

  • 2 weeks later...
  • Moderator

LAPTOP eGPU CROSSFIRE SUCCESS!!!!!!!!!!!!!!!!!!!!!!!!

Pictures and full writeup coming soon (few hours from now).

Note, the performance gain,,,, well, isn't really worth all the extra money for the setup. Got a 35% increase (Unigine Heaven Basic preset) from a single card setup -> Crossfire. Might as well just get a nicer card. Almost no increase for Unigine Heaven Extreme preset.

I followed the same steps as @sskillz used on his desktop setup here:

http://forum.techinferno.com/diy-e-gpu-projects/5622-%5Bblog%5D-crossfire-testing.html#post80974

Not sure about Windows Crossfire external. But the setup steps would be the same if @sskillz can figure it out. I sadly have to return all the hardware, so I cannot do any future tests.

Link to comment
Share on other sites

Yeah multi-card setups add PCI-E strain. I remember someone with tri-sli 680s posting big gains in some games when moving from pci-e 2.0 to pci-e 3.0, and that was on x16 links.

Have you looked into setting up x2 links on your laptop? If you have the right port config and can dump and flash the firmware, I can write you the firmware mod for it.

Link to comment
Share on other sites

  • Moderator
Yeah multi-card setups add PCI-E strain. I remember someone with tri-sli 680s posting big gains in some games when moving from pci-e 2.0 to pci-e 3.0, and that was on x16 links.

Have you looked into setting up x2 links on your laptop?

Can't with my laptop, could with my boss's laptop, but not enough for dual x2 link (got 3 PCI-E slots, 4th slot I think is USB based).

Would be neat to see however.

Link to comment
Share on other sites

Can't with my laptop, could with my boss's laptop, but not enough for dual x2 link (got 3 PCI-E slots, 4th slot I think is USB based).

Would be neat to see however.

Setting the master card to x2 should give a boost. If you can figure out your read/write access then the rest is easy.

  • Thumbs Up 1
Link to comment
Share on other sites

  • Moderator
Setting the master card to x2 should give a boost. If you can figure out your read/write access then the rest is easy.

I also was only able to run the cards at PCIe 1.0. I can't get Setup 1.x to chainload to Ubuntu. Ubuntu isn't using UEFI that I know of, it just refuses to chainload. Not sure what that's about.

I'm sure PCIe 2.0 would've had a much more significant boost to performance.

Link to comment
Share on other sites

I also was only able to run the cards at PCIe 1.0. I can't get Setup 1.x to chainload to Ubuntu. Ubuntu isn't using UEFI that I know of, it just refuses to chainload. Not sure what that's about.

I'm sure PCIe 2.0 would've had a much more significant boost to performance.

Oh wow that was 1.1? Yeah 2.0 would help tremendously.

Link to comment
Share on other sites

  • Moderator

For this experiment, I'm using my boss's Dell Latitude E6420 that he has let me borrow in the past here:

http://forum.techinferno.com/diy-e-gpu-projects/2109-diy-egpu-experiences-%5Bversion-2-0%5D-52.html#post80638

i7-2620M

8GB RAM

I have Ubuntu 13.10 installed on my Samsung 840 Evo 120GB drive for this experiment (the mega-fast booting was great for the countless number of reboots I had ;D )

As you saw (if you checked it out), the mPCIe slot has a slight edge on performance for whatever reason, this also might be an indication of an lower # PCIe slot (or w/e you want to call it - earlier in PCIe chain). Only the card plugged into the mPCIe slot (vs ExpressCard) was able to be the primary card.

I have my friend's R9 280X and another's 7970 for testing. The 7970 is hooked up via mPCIe to @jacobsson 's PE4L-PM060A (thanks for letting me borrow your adapter!), and the R9 280X hooked up via my PE4L-EC060A.

NOTE: The ports are operating at a Gen1 link (PCIe 1.0), this certainly hurts performance. But since we are concerned about the performance change / if there is one, this isn't an overly pressing matter.

Hardware pics here:

Initial single card setup:

GZdCVCo.jpg

Closeup of both cards hooked up:

YXdnYvr.jpg

Both cards running Unigine:

dcNR0vg.jpg

Software

As I stated just a moment ago, I'm using Ubuntu 13.10 for testing since this is the only way (for now hopefully) that it is possible to forcibly enable Crossfire on unsupported systems with something under the minimum 4x link per card. Laptops (that are concerned about eGPUs) don't have Crossfire support and certainly don't have 8x worth of spare PCIe lanes to give 4x link per card.

After nearly pulling my hair out fiddling with driver installs (Ubuntu + me + driver installs = bad day), I got the correct fglrx drivers installed and actually working.

I then followed the steps @sskillz used here:

http://forum.techinferno.com/diy-e-gpu-projects/5622-%5Bblog%5D-crossfire-testing.html#post80974

NOTE: you must use 'aticonfig' using 'amdconfig' might get the Crossfire option to show up in Catalyst Control Center (CCC), but it will drop Cfire upon reboot. Using 'aticonfig' will (after much fiddling) persist between reboots.

I had the same issue as @sskillz with Unigine Heaven crashing when running in windowed mode. So tests are run by selecting 'Basic' (to change to those presets), the selecting 'Custom' and then 'Full Screen' option so it runs fullscreen. Same for the 'Extreme' preset.

Single card (R9 280X) performance:

Basic:

JLzythj.jpg

Extreme:

ZjIFjfO.jpg

Here are some random terminal pictures and whatnot. This will also show that some commands will show Crossfire enabled while others do not. Also that CCC shows no Cfire while it may be enabled. Honestly, no idea what is exactly going on here - much hair pulling probably.

ZgRw6YI.jpg

bSb3tEp.jpg

Dp3B7vY.jpg

efMjK0b.jpg

UEUSpCl.jpg

YTB7vvl.jpg

E5UiFTl.jpg

Crossfire results (what you are actually curious about ;D ):

Basic:

9SGXZLM.jpg

Extreme:

sNt4KZU.jpg

As you can see, there is a significant enough gain in the basic preset to show that the Crossfire is working. The performance gain in the extreme preset is pretty lackluster. This might be due to the PCIe 1.0 based link on the cards (2.5GB/s instead of 5GB/s a Gen2 port would provide).

I cannot get the ports to run at a Gen2 port since I cannot chainload without blackscreening and many issues from going to Setup 1.x -> Ubuntu. Ubuntu seemed to have installed itself in an odd fashion (becomes a boot device separate from the drive).

----

Crossfire, it can work via eGPU (in Ubuntu for now), but as for my opinion on the matter. You might as well instead of buying two cards+adapters, buy one very nice card and a single adapter. They performance (and setup) would be much better.

So, all-in-all, it is doable. Certainly not worth it.

--

If you are hardware manufacturer for eGPU components, contact me if you attempt to make a SLI/Crossfire unit. I would be very interested and glad to test (if possible).

  • Thumbs Up 2
Link to comment
Share on other sites

  • 2 weeks later...

CROSSFIRE IS WORKING ON WINDOWS!

What a night. my first psu (old 400W) has blown/burned in the past weak and I replaced it with a 730W one, and this last one when I was just a hour ago while I was testing my new 290x with the laptop.

Since I planned on buying a second PSU to replace the 400W that has just blown, I've said I'll put the two 6950 in the desktop PC with this new PSU I bought two days ago

to replace the first and I said I'll try mining a little. Booted windows and so the second GPU can't be used to mine as its locked to low clocks and shows disabled in

catalyst. Found some thread with the same problem and they said it's because I don't have dummy plug on one of the cards and op saying catalyst 13.4 legacy works

anyways (without the dummy plug). I've installed it and it asked me about crossfire! I answered yes/next and it said a crossfire bridge isn't connected, connected it

and voilla! crossfire!

TL ,DR: crossfire HD6950 on two 1x links works on catalyst 13.4 legacy (64bit)

AMD Radeon HD 6950 video card benchmark result - AMD Phenom II X4 20,Gigabyte Technology Co., Ltd. GA-MA770T-UD3P

Now there is something to compare to, for example to see what have changed in catalyst code to see if it can be enabled!

BF4 dx11 ultra, test range:

two x1 PCI-E 2.0 HD6950 crossfire disabled: 24fps

two x1 PCI-E 2.0 HD6950 crossfire enabled: 37fps

one x1 PCI-E 2.0 290x: 90fps

BF3 ultra, empty caspian border server,

(this one seems to be much more affected by pci bandwidth, for example with x1.2 290x I get 45-70fps where it should be much higher):

two x1 PCI-E 2.0 HD6950 crossfire disabled: 25-27fps

two x1 PCI-E 2.0 HD6950 crossfire enabled: 45-60fps feels there is some microshuttering (I'm not sure, never had crossfire, 45 feels like 30-40, I think)

one x1 PCI-E 2.0 290x: 45-70fps (lots of trees, or particle effects, like in caspian border makes it drop to 45, felt a bit smoother than 45 with crossfire)

Crysis 3 high textures, high detail, welcome to the jungle mission, jungle entrance (staircase):

(People say its PCI bandwidth limited, haven't confirmed it myself yet)

two x1 PCI-E 2.0 HD6950 crossfire disabled: 13-14fps

two x1 PCI-E 2.0 HD6950 crossfire enabled: 25-26fps

one x1 PCI-E 2.0 290x: N/A, Didn't test yet

Keep in mind this(not the 290x) is a legacy driver (which is even for 5000 or older series) but scaling is definitely there!

  • Thumbs Up 4
Link to comment
Share on other sites

  • Moderator
CROSSFIRE IS WORKING ON WINDOWS!

What a night. my first psu (old 400W) has blown/burned in the past weak and I replaced it with a 730W one, and this last one when I was just a hour ago while I was testing my new 290x with the laptop.

Since I planned on buying a second PSU to replace the 400W that has just blown, I've said I'll put the two 6950 in the desktop PC with this new PSU I bought two days ago

to replace the first and I said I'll try mining a little. Booted windows and so the second GPU can't be used to mine as its locked to low clocks and shows disabled in

catalyst. Found some thread with the same problem and they said it's because I don't have dummy plug on one of the cards and op saying catalyst 13.4 legacy works

anyways (without the dummy plug). I've installed it and it asked me about crossfire! I answered yes/next and it said a crossfire bridge isn't connected, connected it

and voilla! crossfire!

TL ,DR: crossfire HD6950 on two 1x links works on catalyst 13.4 legacy (64bit)

AMD Radeon HD 6950 video card benchmark result - AMD Phenom II X4 20,Gigabyte Technology Co., Ltd. GA-MA770T-UD3P

Now there is something to compare to, for example to see what have changed in catalyst code to see if it can be enabled!

WOOO

If we can get it working with more modern drivers, I might be able to scrounge together my friend's parts and boss's laptop again to test once more.

Good job @sskillz !

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.