Заполнение двумерного ускоряющего массива по одной строке за раз
λ> import Data.Array.Accelerate
λ> import Data.Array.Accelerate.Interpreter (run)
Скажем, у вас есть 2D ускорение массива:
λ> :t arr
arr :: Acc (Array DIM2 Int)
λ> run $ unit $ shape arr
Scalar Z [Z :. 4 :. 3]
и одномерный вектор ускорения длины 4 (такой же, как число столбцов arr
):
λ> :t vec
vec :: Acc (Array DIM1 Int)
λ> run $ unit $ shape vec
Scalar Z [Z :. 4]
и функция от скаляра до вектора длины 3:
expand :: Exp Int -> Acc (Array DIM1 Int)
Как вы можете заселить arr
путем картирования expand
на vec
?
Регулярный map
от Prelude
не работает на ускорении массивов. map
от Data.Array.Accelerate
только карты от элемента к элементу.