id,summary,reporter,owner,description,type,status,priority,milestone,component,version,resolution,keywords,cc
21,Texture binding for IndexScalar does not work properly with the projection on tuple arrays.,seanl,seanl,"The execution of the code fragment

{{{
bar3 :: Vector (Word32, Int, Word32) -> Acc (Vector (Word32, Int, Word32))
bar3 xs
  = let
      xs' = use xs
      ys' = use (fromList 10 $ Prelude.zip3 [100..] [1000..] [10000..]) :: Acc (Vector (Word32, Int, Word32))
    in flip map xs' $ \x -> let (a  :: Exp Word32, b  :: Exp Int, c  :: Exp Word32) = untuple x
                                (a' :: Exp Word32, b' :: Exp Int, c' :: Exp Word32) = untuple (ys' Acc.! (b - 1))
                            in  tuple (a * a', b * b', c * c')

main :: IO ()
main = do
  let input3  = fromList 10 (Prelude.zip3 [0..9] [1..10] [2..11]) :: Vector (Word32, Int, Word32)
  r <- CUDA.run $ bar3 input3
  putStrLn $ show r
}}}

must produce

{{{
Array 10 [(0,1000,20000),(101,2002,30003),(204,3006,40008),(309,4012,50015),(416,5020,60024),(525,6030,70035),(636,7042,80048),(749,8056,90063),(864,9072,100080),(981,10090,110099)]
}}}

as the result.

As the {{{liftExp (Prj _ e)}}} in {{{Data/Array/Accelerate/CUDA/Execute.hs}}} simply returns an empty list and {{{bind}}} in the same module computes the texture number incorrectly, the CUDA backend failed to produce the correct result:

{{{
Array 10 [(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0),(0,0,0)]
}}}",defect,closed,major,,CUDA backend,0.7.1.0,fixed,,
