cancel
Showing results for 
Search instead for 
Did you mean: 

Archives Discussions

jski
Journeyman III

Gather/scatter compile-time error messages?

I inserted the code below into the simple_matmult sample code.  It appears to work as I expect it to but I get these error messages when compiling (what's up?):

WARNING: ASSERT(GetResultSymbol().IsValid() + mDataTypeValue.IsValid() >= 1) failed
While processing <buffer>:66
In compiler at ResolveSymbols()[astdelayedlookup.cpp:139]
  *mName = c
Message: unknown symbol

ERROR: ASSERT(errorCount==0) failed
While processing <buffer>:115
In compiler at CompileShaderToStream()[astroot.cpp:157]
  errorCount = 1
Message: Unknown Symbols exist
Aborting...

kernel void scatter(float4 a[][], float4 b<>, float width, out float4 c[])
{
   // Get the position in the stream of the current thread
   float idx = (indexof(c)).x;
   float2 apos = {idx % width, floor(idx / width) };

   // Write out to the scatter buffer
   c[idx] = a[apos] + b;
}

int main(int argc, char** argv)
{

    ...
    float4 *input_a;
    float4 *input_b;
    float4 *output_c;

    unsigned int W = 4;
    unsigned int H = 4;
    unsigned int WxH = W * H;

    unsigned int i, j;

    input_a = (float4 *)malloc( WxH * sizeof( float4 ) );
    input_b = (float4 *)malloc( WxH * sizeof( float4 ) );
    output_c = (float4 *)malloc( WxH * sizeof( float4 ) );
   
    for ( j = 0; j < H; j++ )
       for ( i = 0; i < W; i++ )
          *((float4 *)(input_a + (j * W) + i )) = float4( (float)( (j * W) + i ), 0.0f, 0.0f, 0.0f );
      
    for ( i = 0; i < WxH; i++ )    *( (float4 *)(input_b + i) ) = float4( 1.0f, 0.0f, 0.0f, 0.0f );

    {

          ...
          float4 in_A<H, W>;
          float4 in_B<WxH>;
          float4 out_C<WxH>;

          ...
          streamRead(in_A, input_a);
          streamRead(in_B, input_b);
          scatter( in_A, in_B, (float)W, out_C );
          streamWrite(out_C, output_c);
          for ( i = 0; i < WxH; i++ ) fprintf( stderr, "%f\n", output_c[ i ].x );

         ...

    }

...

}

BTW, if I compile just the code above (minus the ellipses), I get NO such error messages.

---jski

0 Likes
1 Reply
jonathan81
Journeyman III

I have already report this bug

If you mix kernel scatter and non scatter you find a compile error

In the same register,

If you add in the Scatter project , another scatter kernel with an Exit where the name is different of "c" for example out float4 d[], you have also a compile error

0 Likes