cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

cam_eecs
Adept I

How can i start opencl with my current hardware configuration ???

I am new in opencl.i have an Dell Xps 1645 laptop which has Ati Mobility Radeon HD 4670 graphics card and a intel cpu.i saw that amd's software does not support opencl stuffs for my graphics card but in Khronos website,my video card is seen as opencl supported.So now what do i have to do to start opencl programming in visual studio??? and Can i use amd's software which is for opencl??? and finally Which software tools do i need to start ???

0 Likes
5 Replies
himanshu_gautam
Grandmaster

HD 4670 is hardly a OpenCL device at any level. Many features are just emulated. It is no longer supported by APP SDK too. I would recommend you to buy a newer GPU if you are seriously into GPGPU.

For learning purpose even CPU is good enough. APP SDK works with any x86 CPU (even intel's )

Now i can not renew my laptop.What are steps or tools which i need to start???

0 Likes

With a 4xxx OpenCL is not a good choice. The OpenCL compiler for 4xxx is in a beta status and its development has been stopped years ago.

To utilize the 0.48 TFlops/s in your card, you have to code in AMD_IL language. (That's also unsupported, but it works)

It's harder, but if you don't want to buy at least an 5xxx then that is the only way (except machine code ).

Here are two examples for the same job, both of them still work on my HD4850 with winXP and Cat11.3.

//Here's small example in OpenCL:

__kernel __attribute__((reqd_work_group_size(256,1,1)))

void main(__global int* uav,__constant int* cb)

{

  uav[get_global_id(0)]+=cb[0];

}

//And here's how it looks like in AMD_IL (assuming an 1D kernel domain range)

il_cs_2_0

dcl_num_thread_per_group 256,1,1

dcl_raw_uav_id(0)   //uav translation if id=0 : 5xxx, 6xxx: -> 11, 7xxx -> 10

//dcl_arena_uav_id(8) //This is needed on XP, except on 4xxx

dcl_cb cb0[15] ; Constant buffer that holds ABI data, must declare on 4xxx

dcl_cb cb1[2]  //cb1[0].x : uav offset

dcl_cb cb2[20] //actual cb

//here comes the actual job: 

  ishl r65.x, vAbsTid.x0, 2

  iadd r65.x, cb1[0].x, r65.x  //address calculation: uav[GID]

  uav_raw_load_id(0)_cached r0.x, r65.x       //load  uav[GID]

  iadd r66.x,cb2[0].x,r0.x                             //add cb[0]

  uav_raw_store_id(0) mem.x___, r65.x, r66.x  //write uav[GID]

end

But be warned, in case if you start thinking of amd_il: IMO there's is no point using amd_il instead of OpenCL for the hardware which is supported by OpenCL (5,6,7xxx). I mean that there are no extra things in amd_il that you can't reach from OpenCL.

Thanks for your reply.My first purpose is to learn opencv.Then i will buy a vidock to use a better video card.Can i use opencl to run programs on my cpu??? and if yes do i need intel opencl sdk ???

0 Likes

intel opencl sdk need cpu with sse4 support. you can use amd sdk which need only sse3 cpu.

0 Likes