2012-08-27 14 views
5

En las funciones vDSP de Accelerate Framework, todas las funciones requieren que ingrese un vector de resultados. ¿Es correcto pasar el vector de entrada (o uno de los vectores de entrada) como vector de resultado si ya no necesito lo que haya en el vector de entrada original?Es posible almacenar el resultado en uno de los vectores de entrada en el marco vDSP

ejemplo de lo que quiero decir:

vDSP_vsadd(input_vector,1,scalar_addition,input_vector,1,length); 

Esto llevaría el input_vector y añadir un scalar_addition a todos los elementos. El resultado se almacenaría en el input_vector.

Respuesta

4

Las operaciones vectoriales simples en VDSP todos funcionan correctamente en el lugar (siempre y cuando sean estrictamente en el lugar; por ejemplo, no se puede utilizar para la salida &input_vector[length/2] y esperar obtener resultados significativos). De hecho, usarlos en el lugar a menudo dará un mejor rendimiento, ya que puede reducir la presión de la memoria caché.

Algunas de las operaciones de vDSP más complicadas no son compatibles con el funcionamiento in situ con uno o más de sus argumentos; esto debe mencionarse en la guía de referencia vDSP.

+0

Supongo que 'in situ' significa exactamente lo que estaba describiendo: ¿el vector de entrada se ha cambiado para ser el vector de salida? Hice una búsqueda rápida de la Guía de referencia vDSP y encontré que las únicas veces 'in situ' aparecían en el documento en referencia a algoritmos de clasificación y fft, ¿esto significa que las funciones más simples no son compatibles con 'in situ'? vectores de resultado, o es que las funciones más simples obviamente apoyan 'en el lugar' que no necesita ser documentado? – user1357607

+2

Sí, "in situ" significa lo que está describiendo; debe documentarse explícitamente para las funciones simples, pero no lo es. –

Cuestiones relacionadas