anchor.diff:              )
   
           member x.TryCompileKernel (f : 'a -> 'b) =
  -            let shader = FShade.ComputeShader.ofFunction f
  +            let gl = getGLCompute x
  +            let shader = FShade.ComputeShader.ofFunction gl.WorkGroupSize f
               let glsl = shader |> FShade.ComputeShader.toModule |> ModuleCompiler.compileGLSL410
               let localSize = 
                   if shader.csLocalSize.AllGreater 0 then Some shader.csLocalSize
  
positive.code:         let rb : float32[] = ctx.Download(bb)
  
          let validator = Array.zeroCreate ra.Length
          let mutable sum = 0.0f
          for i in 0 .. ra.Length - 1 do
              sum <- sum + ra.[i]
              validator.[i] <- sum
  
          let isValid = Array.forall2 (=) rb validator
  
negative.code: 
      let private computeInstanceCache = System.Collections.Concurrent.ConcurrentDictionary<Context, GLCompute>()
  
      let private getGLCompute (ctx : Context) =
          computeInstanceCache.GetOrAdd(ctx, fun ctx -> GLCompute(ctx))
  
      type Kernel(prog : Program, localSize : Option<V3i>) =   
          let GLCompute = getGLCompute prog.Context
          
          
  
          let mutable isDisposed = 0
  
          let ctx = prog.Context
  