Click here to Skip to main content
15,879,326 members
Please Sign up or sign in to vote.
4.00/5 (1 vote)
See more:
Hi All :)

I'm trying to utilize ATi's ADL in my hardware monitoring utility.
I'm loading correctly the DLL; I'm initializing the ADL with no problems; And I got to the point I actually read the number:

pfnADL_Adapter_NumberOfAdapters_Get(&uiNumAdapters)


And the problem is that it returns 4! But I don't have 4 adapters, I have ATi Radeon HD 4850 x2 and it has two internaly CrossFired GPUs, and that's the number I expect to see.

OK it obviously returns the number of actual monitor outputs (And this card has 4 DVIs). But tere is no ADL_Adapter_NumberOfGPUs_Get?!

I tried to use ADL_Adapter_Active_Get hoping that the additional ones are some virtuals and they would be inactive. But I was surprised again. Instead of two active adapters and two inactive there was only one active and three incative! I have one monitor attached to the graphics card so that must be it.

But all that means that they have completely different understanding for what "adapter" means.

So how do I get the actual number of GPUs? I really don't know!

Any help will be apreciated. :)
Thanks in advance!
Posted
Comments
E.F. Nijboer 29-Sep-10 18:24pm    
Each of these cards supports 2 monitors and had therefore two gpu's, since you got a crossfire configuration this is doubled and that's why you see 4 gpu's. Try a tool like this and it will also show 4 gpu's installed. http://openhardwaremonitor.org/openhardwaremonitor-v0.1.37.2-alpha.zip
GPUToaster™ 30-Sep-10 1:28am    
Hi Ivan, I remember you were trying open hardware monitor! What happened to that?
Ivan Ivanov 83 30-Sep-10 5:10am    
Yeah Hi :)
The Open Hardware Monitor was a good example. It answered a lot of my questions and showed me very important tips on how to do the job, but I didn't use directly its code, simply because it's managed code, it's written in C#. I write my program using C++/MFC. Also in OHM the actual functionality is encapsulated in a DLL which isn't part of the open code (and supposedly written in C# too). That's not a problem but I wanted more direct approach. After all (as I found out lated) that DLL uses the only possble technique to do the job, namely: to use ATi ADL (AMD Display Library) SDK for the ATI products and nVIDIA NVAPI SDK for nVIDIA products.

An app should incorporate both methods and has to be able to identify the installed card's vendor and dynamically switch to the respective one.

And this is what I'm doing now. I'm potting in use ATi ADL. :)
You've wanted me to write an archicle? OK I promise you this :) after I'm done with the task I'll post one and I'll notify you so you can see it ;)
Ivan Ivanov 83 30-Sep-10 5:23am    
Hi E.F. Nijboer

You are right the the alpha version of OHM shows 4 GPUs but I have beta version the shows only 2.
I can see you have knowledge on this and it is logical that for each one of the monitor outputs there should be a GPU. But since I have only one monitor are all the GPUs in use? Also GPU-Z shows 2 GPUs, how do they choose which two to actually show and which two not to show in the program? (that's related to OHM too).
I guess at least two of them will never be active untill a monitor is attached to them. How do you think? :)
also the Device Manager also shows 2 display adapters.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900