cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

ahu
Journeyman III

Is calDeviceGetCount() function reliable (dual 4870 X2 system)?

I've been trying to enable all the four GPU cores for GPGPU programs in my dual 4870 X2 system.

So far I've found it close to impossible to enable all the cores in Vista. calDeviceGetCount function maxes at 2 whatever I do.

With Windows Server 2003 I've been able to get all the GPU cores recognized with calDeviceGetCount, but performance has been less than stellar.

I've tested with Sisoft Sandra 2009 GPGPU benchmark and with GPU2 Folding@Home client. Both of which show performance less than a single 4870 X2 card should give, and they shouldn't be CPU bottlenecked. The programs appear to run flawlessly with all four R770 ASICs recognized though.

So I'm beginning to wonder if the GPU enumeration fails somehow and in fact only two R770 ASICs are being used.

Interestingly, I found that in Vista the calDeviceGetInfo function recognizes only the first two ASICs as reported by calDeviceGetCount, whereas in W2K3 even non-existent GPU cores (e.g. #10) get recognized as a "real" R770. CAL bug or driver issue?

 

0 Likes
5 Replies
ahu
Journeyman III

(sorry.. double post)

0 Likes
ahu
Journeyman III

What's really happening here? After system restart calDeviceGetCount reports only 3 devices although nothing has changed.

Thia is code modified from a SDK sample:

    fprintf(stdout, "Finding out number of devices :- \n");
    CALuint numDevices = 0;
    if(calDeviceGetCount(&numDevices) != CAL_RESULT_OK)
    {
        fprintf(stdout, "\tError : Unable to find number of devices.\n\n");
    }
    else
    {
        fprintf(stdout, "\tDevice Count = %d\n\n", numDevices);

  
  for (int gpu = 0; gpu <=8; gpu++)
  {
   CALdeviceinfo info;
   calDeviceGetInfo(&info, gpu);

   switch (info.target)
   {
   case CAL_TARGET_600:
    fprintf(stdout, "GPU %d Device type = GPU R600\n", gpu);
    break;
   case CAL_TARGET_670:
    fprintf(stdout, "GPU %d Device type = GPU R670\n", gpu);
    break;
   case CAL_TARGET_770:
    fprintf(stdout, "GPU %d Device type = GPU R770\n", gpu);
    break;
   default:
    fprintf(stdout, "GPU %d Device type = %d\n", gpu, info.target);
    break;
   }
  }
    }

This now outputs:

Finding out number of devices :-
        Device Count = 3

GPU 0 Device type = GPU R770
GPU 1 Device type = GPU R770
GPU 2 Device type = GPU R770
GPU 3 Device type = GPU R770
GPU 4 Device type = GPU R770
GPU 5 Device type = GPU R770
GPU 6 Device type = GPU R770
GPU 7 Device type = GPU R770
GPU 8 Device type = GPU R770
CAL shutdown successful.

Press enter to exit...





0 Likes

I am not sure if X2 will show two GPUs in Vista. See this link:

http://forums.amd.com/devforum/messageview.cfm?catid=328&threadid=101083&enterthread=y

Neither WinServer 2003 nor X2 is currently tested with the SDK.

0 Likes

Any info on future X2 support? Shouldn't this be a priority?

0 Likes

When will the calDeviceGetCount bug will be fixed ? After 3 months the bug is always here with the 4870x2. The only way is to use AtiMultiGPUAdapters function to detect correctly the number of gpu.

0 Likes