es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Forma eficiente de copiar entre un vector std::complex y una matriz compleja Intel IPP.

Estoy usando Intel IPP para procesamiento de señales. Las funciones de nivel superior están usando tipos de datos std::vector mientras que el equivalente en Intel IPP es Ipp32fc[]. El tipo de dato Ipp32fc está definido como:

typedef struct {
Ipp32f re;
Ipp32f im;
} Ipp32fc;

Por lo que sé, el tipo de dato Ipp32f es simplemente un float en C/C++. Hasta ahora, he estado usando un for loop para la copia, y esto está cargando el procesador mucho, considerando la tasa de símbolos que estoy procesando. He intentado usar memcpy estándar sin mucho éxito.

Todas las sugerencias son bienvenidas.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en procesamiento de señales y en Intel IPP, puedes mejorar el rendimiento de tu código utilizando las funciones de Intel IPP que operan en tipos de datos Ipp32fc[] en lugar de vectores normales. Sin embargo, estás experimentando dificultades para copiar los datos al tipo de datos Ipp32fc[] de manera eficiente.

    Una sugerencia para mejorar el rendimiento de memcpy es intentar utilizar las funciones de Intel IPP que operan en Ipp32fc[]. Por ejemplo, la función ippsCopy_32fc() se puede utilizar para copiar datos de un array Ipp32fc[] a otro. Esta función debería ser mucho más rápida que un loop for o que memcpy normal.

    Otra sugerencia es intentar utilizar las funciones de Intel IPP que operan en vectores de tipos de datos flotantes, como ippsCopy_32f(). Esto puede proporcionar un mejor rendimiento que memcpy normal.

    Además, puedes intentar optimizar el código utilizando técnicas de multiprocesamiento, almacenamiento en caché u otras técnicas para mejorar el rendimiento.

    En general, puede haber varias formas de optimizar el código para mejorar el rendimiento. Puede ser útil experimentar con diferentes implementaciones para determinar el enfoque más eficiente para tu caso de uso específico.

Comments are closed.