Results 1 to 2 of 2

Thread: Kernel improvement?

  1. #1
    Junior Member
    Join Date
    Dec 2012
    Posts
    11

    Kernel improvement?

    I'm passing 2 global arrays of 2D points into my kernel, and then in the kernel, i'm accessing the global arrays multiple times (and passing them into other functions).

    For example:

    Code :
     
    kernel FooBar(global float2 *array1, global float2 *array2)
    {
      int i = get_global_id(0);
      int j = get_global_id(1);
     
      float pt1x = array1[i].x;
      float pt1y = array1[i].y;
     
      float pt2x = array2[j].x;
      float pt2y = array2[j].y;
     
      // do some calcs 
     
      float ans1 = SomeFunction(array1);
      float ans2 = SomeFunction(array2);
     
      // and so on.........
    }

    Is it better to copy these arrays into local memory? How does one do this? Are there any limitations i need to know about (such as memory issues?).

    Thanks

  2. #2
    Senior Member
    Join Date
    Sep 2002
    Location
    Santa Clara
    Posts
    105

    Re: Kernel improvement?

    Local memory can be helpful if one or more work-items are reading from a location in global memory multiple times. In the specific example you posted it is not clear if it will help as the OpenCL compiler will most like replace the second call to array1[i].x and array2[j].y with the value already read by the first call to these array entries stored in a register.

Similar Threads

  1. Replies: 4
    Last Post: 08-06-2012, 01:18 AM
  2. Replies: 1
    Last Post: 03-14-2010, 07:34 AM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •