cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

Raistmer
Adept II

How to bind same physical device between CAL and OpenCL ?

There are some AMD GPUs that supports CAL only. And some that supports both OpenCL and CAL. There can be some new devices that supports OpenCL only.

So, if mix of such devices presents in PC one should know what physical device can accept only work for CAL-based app and what for OpenCL-based app.

I'm working in distributed computation project that attempts to load all available computational resourses with most relevant work for them.

So, if device supports both OpenCL and CAL we should send only work for OpenCL (or CAL in another subprojects) based app. And don;t send work for app with another supported API. Hence, we should know how to identify same physical device in CAL enueration API and OpenCL enumeration API.

Perhaps this question arose before. Than please point me to relevant info.

Once again. I need a way to say that this particular device in CAL is the same physical device as some particular device in OpenCL in case if device supports both APIs.

0 Likes
7 Replies
himanshu_gautam
Grandmaster

I really dont know what you mean by CAL

But anyway,

Let us say You enumerate through CAL and OpenCL and have 2 sets.

CALSET, OpenCLSET

Take an intersection of them and remove it from CALSET --- then you have pure CAL device set.

So, the question now boils down to finding a common property.

I think "devce name" in OpenCL has a "unique Id" associated with it....

May be, if that unique ID can be obtained in both CAL and OpenCL enumeration -- you can solve this.

Just my few cents. Feel free to Ignore..

0 Likes

One another proprty that you can look at is "PCI Enumeration" -- Bus / Slot/ Function

This can identify only 1 device.

If we can get this information through OpenCL an CAL -- we can do this very easily.

I am not sure, if I can get these details through OpenCL though...It would be good to have though.

0 Likes

Did you get to solve your problem?

0 Likes

I just noticed this in the "clinfo" output. It is able to specify PCIe topology.

Not sure where it gets this info from. This can come handy used to segregate your devices

  Platform Name:                                 AMD Accelerated Parallel Proces

sing

Number of devices:                               2

  Device Type:                                   CL_DEVICE_TYPE_GPU

  Device ID:                                     4098

  Board name:                                    AMD Radeon HD 7900 Series

  Device Topology:                               PCI[ B#1, D#0, F#0 ]

0 Likes

Looks like "'CL_DEVICE_TOPOLOGY_AMD'" is the property that you need to query for in clGetDeviceInfo() API to get the PCI topology.

This is currently supported only under Linux.

You can find more information in the AMD APP OpenCL Programming Guide - Appendix A

HTH

0 Likes

Hi,

I think the problem is on the CAL side. As I know, from CAL you can't get any info that you can use for the identification of an OCL device neither an ADL (Amd Display Lib) device.

(ADL and OCL devices could be 'matched' though, because ADL can report pci topology stuff too.)

0 Likes

One another forum user (6bolt) is also going through a similar problem....

He is going to try a new experiment.... I thought it is probably worth sharing it here...

He is going to populate some memory area through DirectX (which allows PCIe enumeration) and find out OpenCL device which is able to see the memory changes (or something on those lines).

Check out http://devgurus.amd.com/message/1288881#1288881

I have asked 6bolt to report any success with his experiments... May be, it might be useful to Raistmer.

0 Likes