1 Reply Latest reply on Oct 11, 2009 1:12 PM by gaurav.garg

    Some new failure at kernel launch

      Error is:

      Kernel Execution : Failed to create Program

      All I changed from previous run is commented out any scatter stream writes in kernel.

      Kernel with uncommented scatter array writes didn't give this error.

      What is this ?...


      kernel void GPU_fetch_array_kernel10(int sizes[],float src[],int offsets[][],float freq[],int thresholds[][],out float4 dest<>,out int was_pulse[]){ int j=instance().y; int threadID=instance().x; float threshold=(float)thresholds[0][threadID];//R: fetch always starts with zero coadd level int k=0; int l=0; float4 acc=float4(0.f,0.f,0.f,0.f); float f=freq[threadID]; //double period=periods[threadID];//(double)sub_buffer_size/(double)f; int n_per=(int)f; for(k=0;k<n_per;k++){ l=offsets[k][threadID]; l+=(4*j);//R: index to data array computed acc.x+=src[l]; acc.y+=src[l+1]; acc.z+=src[l+2]; acc.w+=src[l+3]; } if (4*j<sizes[threadID]){ if(acc.x>=threshold){ //was_pulse[0]=4; }} if(4*j+1<sizes[threadID]){ if(acc.y>=threshold){ //was_pulse[0]=thresholds[0][threadID]; }} if(4*j+2<sizes[threadID]){ if(acc.z>=threshold){ //was_pulse[0]=thresholds[0][threadID]; }} if(4*j+3<sizes[threadID]) if(acc.w>=threshold){ //was_pulse[0]=thresholds[0][threadID]; } dest=acc; }

        • Some new failure at kernel launch

          I think it is a bug with Brook+ that declaring a kernel with scatter stream and not using it causes this failure.

          The reason is that brcc generated metadata contains information that IL kernel uses global memory but, compiler doesn’t generate any global memory instruction. When runtime tries to get symbol “g[]” from IL kernel, it fails.