anchor.diff:              ScalarOps.ApplyNoaryOp (scalarOp, trgt, isIndexed=false, useThreads=useThreads)
   
           member this.FillIndexed (fn, trgt, useThreads) = 
  -            let trgt = TensorHostBackend<_>.ElemwiseDataAndLayout (trgt)
  +            let trgt = TensorHostBackend<_>.GetDataAndLayout (trgt)
               ScalarOps.ApplyNoaryOp (fn, trgt, isIndexed=true, useThreads=useThreads)
   
           member this.Map (fn, trgt, a, useThreads) = 
  
positive.code:             ScalarOps.ApplyUnaryOp (scalarOp, trgt, a, isIndexed=false, useThreads=useThreads)
  
          member this.MapIndexed (fn, trgt, a, useThreads) = 
              let trgt, a = TensorHostBackend<_>.ElemwiseDataAndLayout (trgt, a)
              ScalarOps.ApplyUnaryOp (fn, trgt, a, isIndexed=true, useThreads=useThreads)
  
          member this.Map2 (fn, trgt, a, b, useThreads) = 
  
negative.code:         {Data=this.Data; FastLayout=this.FastLayout}
                
      /// gets DataAndLayout for specified tensors
      static member internal GetDataAndLayout (t: Tensor<'T>) =
          (t.Backend :?> TensorHostBackend<'T>).DataAndLayout
  
      /// gets DataAndLayout for specified tensors
      static member internal GetDataAndLayout (t: Tensor<'T>, a: Tensor<'TA>) =
          (t.Backend :?> TensorHostBackend<'T>).DataAndLayout, 
          (a.Backend :?> TensorHostBackend<'TA>).DataAndLayout 
  
      /// gets DataAndLayout for specified tensors
      static member internal GetDataAndLayout (t: Tensor<'T>, a: Tensor<'TA>, b: Tensor<'TB>) =
          (t.Backend :?> TensorHostBackend<'T>).DataAndLayout, 
          (a.Backend :?> TensorHostBackend<'TA>).DataAndLayout,
          (b.Backend :?> TensorHostBackend<'TB>).DataAndLayout 
  
      /// gets layouts for specified targets and sources, optimized for an element-wise operation
      static member internal ElemwiseLayouts (trgt: TensorLayout, srcs: TensorLayout list) =
  