cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

twintip31
Adept I

APP SDK first steps to start working on AMD FX 8350 8 cores + GPU ?

Hi,

I just ordered my new PC configuration below and I would like to get some advice for starting working doing OpenCL on both GPU and CPU on this config.

The CPU side config is composed by :

Noctua NH-U12P SE2 (CPU cooling)

Kingston 8Go DDR3 1600MHz CL9 HyperX (memory ...)

AMD FX 8350 Black Edition 4.0GHz (8 cores CPU)

Gigabyte 990FXA-UD5 (mainboard)

The GPU card is not present here but I will order it later, I will start first with a med end HDxxxx card.

Here are my questions if I use APP SDK:

- Is it possible to support the 8 cores independently (address kernel execution on different cores) ?

- Is it possible to mix AMD FX kernel execution + Nvidia GPU kernel execution or do I need to use ATI HD technology ??

Regards


0 Likes
7 Replies
himanshu_gautam
Grandmaster

Hi,

Congratulation for getting the awesome system.

Well running OpenCL on CPU is very simple.

1. Just install AMD APP SDK 2.8 (latest as of now) from http://developer.amd.com/tools-and-sdks/heterogeneous-computing/amd-accelerated-parallel-processing-...

2. You can see a huge list of AMD APP Samples showcasing various OpenCL features in "/opt/AMDAPP/Samples" in linux and "...\Document\AMDAPP\" in Windows. You can also try typing "clinfo" in the cmd line window, to know the various OpenCL platforms available on your system.

Here are my questions if I use APP SDK:

- Is it possible to support the 8 cores independently (address kernel execution on different cores) ?

- Is it possible to mix AMD FX kernel execution + Nvidia GPU kernel execution or do I need to use ATI HD technology ??

The answer to your first question is Device Fission sample. You can divide your CPU device into subdevices using device_fission extension, and then can launch kernels on them at your wish. Unfortunately this is only supported for CPUs, and will not work for the GPU you plan to buy.

It is certainly possible to mix AMD + NV GPU. But then you will need to take more headache as they will be two separate platforms. You cannot share any data between those platforms unless specifically copying it in your host code.

AMD CPU + AMD GPU will work much more easily, and will also help in getting better performance with less effort. For buying medium range AMD GPU, i would recommend to go the 7xxx series, as that is the latest one. You need to install latest Catalyst Graphics driver, in order to use the GPU as OpenCL device. It can be downloaded from http://support.amd.com/us/gpudownload/Pages/index.aspx

You wrote you can share data between AMD's Piledriver CPU and series 7 GPU without copying. Is that really the case and do you have any example?

0 Likes

What i meant above was that a single cl_buffer object can be used to handle your data for all devices in a single platform. A buffer object is associated with a context, and you will have to handle 2 separate contexts if you try to mix-match AMD and NVIDIA. In case of AMD CPU + AMD GPU, the copies can be handled by runtime.

sarobi wrote:

You wrote you can share data between AMD's Piledriver CPU and series 7 GPU without copying. Is that really the case and do you have any example?

From avoiding extra copies perspective, you can look into zero-copy buffer described in OpenCL Programming Guide. It is possible to share data among a CPU and GPU without copying.

Hi,

I found a topic in which the zero copy method is explained.

http://stackoverflow.com/questions/12766578/access-path-in-zero-copy-in-opencl

However memory bandwidth seems to be a problem when sharing data between GPU and CPU, however GPU shall be able to access data on its side faster than the CPU will, I guess it depends on applications ....

Please advice if I missed something

0 Likes

Hi,

I finished setting up my new build on last week and I finally got a Radeon HD 7950 (VaporX Boost 3Gbytes version).

Now starting dealing with OpenCL programming on the system ....

I will have a try on Device Fission ....

Just a remark on executing clGetDeviceInfo() on HD 7950 device ... => I get 28 compute units whereas specs shows we have 1792 scalar units

=> Does that means OpenCL is grouping 64 scalar units in 28 different computing units ?? (28x64 = 1792)

=> What is the meaning ?

If I execute the function on my FX processor, i have 8 units reported.

Regards

David

0 Likes

OK ... just found my answer there : http://www.anandtech.com/show/4455/amds-graphics-core-next-preview-amd-architects-for-compute/4

GCN architecture reason. 1 CU on GCN consists in a group of 64 scalar units ALU...so here we retrieve 28 CUs for GPU ressource ...

0 Likes

Note:

Device Fission works only on the CPU. Not on the GPU yet.

0 Likes