IPB

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> Problem with idle threads and barrier
stefanw
post Nov 6 2009, 10:17 AM
Post #1



*

Group: Members
Posts: 7
Joined: 17-March 08
Member No.: 96,553



I launch the following (simplified) kernel with local group dimensions of 16x16 and global dimensions of 128x128. Everything is fine, if width and height are equal to 128. However if I set width to 127 (or a smaller value), such that there are some idle threads, this kernel hangs. This is still true for the new 195.39 beta (I've got a GeForce 8800 Ultra and use the 32bit XP version).

CODE
#define BLOCK_WIDTH 16
#define BLOCK_HEIGHT 16

__kernel void hang(__global uchar *in, __global uchar *out,
unsigned int width, unsigned int height)
{
const int posx = get_global_id(0);
const int posy = get_global_id(1);
__local uchar local_block[BLOCK_WIDTH*BLOCK_HEIGHT];
const int linear = posy*width + posx;


if (posx < width && posy < height)
local_block[get_local_id(0)+get_local_id(1)*BLOCK_WIDTH] = 255;

barrier(CLK_LOCAL_MEM_FENCE);

if (posx < width && posy < height)
out[linear] = local_block[get_local_id(0)+get_local_id(1)*BLOCK_WIDTH];

return;
}
Go to the top of the page
 
+Quote Post

Fast ReplyReply to this topicStart new topic

 



Copyright 2008 NVIDIA Corporation.  Terms of Use | Legal Info | Privacy Policy Time is now: 24th November 2009 - 01:44 AM
Unites States Argentina Brazil Chile China Colombia France Germany India Italy Japan Korea Mexico Poland Russia Spain Taiwan United Kingdom Venezuela