¿Es posible calcular una matriz que depende de los valores pasados (es decir, índices menores) en Repa? Parte (s) inicial (es) de la matriz (por ejemplo, a[0]
) se proporciona. (Tenga en cuenta que estoy usando una notación tipo C para indicar un elemento de matriz; no lo confunda)¿Cómo se calcula a [i] = f (a [i-1]) en Repa?
Leí el tutorial y comprobé rápidamente el hackage pero no pude encontrar una función para hacerlo.
(supongo que hacer este tipo de cálculo en serie 1D no tiene sence en Repa porque no se puede paralelizar él. Pero creo que se puede paralelizar que en el caso de 2 dimensiones o más.)
EDITAR: Probablemente debería ser más específico sobre qué tipo de f
quiero usar. Como no hay forma de paralelizar en el caso a[i]
es un escalar, centrémonos en el caso a[i]
es un vector N dim. No necesito que a[i]
sea más dimensional (como la matriz) porque puede "desenrollarlo" en un vector. Entonces, f
es una función que mapea R^N a R^N.
La mayor parte del caso, es de esta manera:
b = M a[i-1]
a[i][j] = g(b)[j]
donde b
es un N dim vector, M
es una matriz N por N (no suposición de poca densidad), y g
es alguna función no lineal. Y quiero calcularlo para i=1,..N-1
dado a[0]
, g
y M
. Mi esperanza es que haya alguna forma genérica para (1) paralelizar este tipo de cálculo y (2) hacer que la asignación de variables intermedias, como b
sea eficiente (en lenguaje C, puede reutilizarlo, sería bueno si Repa o una biblioteca similar puede hacerlo como una magia sin romper la pureza).
Para el 'f' asociativo, se puede paralelizar y se denomina" exploración ". http://en.wikipedia.org/wiki/Prefix_sum No pude encontrar el escaneo en la documentación de Repa. – Heatsink
Puede hacerlo con una plantilla de reparación, http://hackage.haskell.org/packages/archive/repa/2.0.2.1/doc/html/Data-Array-Repa-Stencil.html. Pero vea también http://stackoverflow.com/questions/6170008/how-to-take-an-array-slice-with-repa-over-a-range –
@Heatsink ¿No necesitaría un escáner una serie como entrada? Para mí, esto se parece más a un [despliegue] (http://en.wikipedia.org/wiki/Anamorphism). – phg