5 Replies Latest reply on Mar 1, 2013 5:02 PM by nou

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

    cam_eecs

      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 ???

        • Re: How can i start opencl with my current hardware configuration ???
          himanshu.gautam

          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 )

          1 of 1 people found this helpful
            • Re: How can i start opencl with my current hardware configuration ???
              cam_eecs

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

                • Re: How can i start opencl with my current hardware configuration ???
                  realhet

                  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.