Almacene __m256i en un número entero

1 minuto de lectura

Almacene m256i en un numero entero
Jorge

¿Cómo puedo almacenar el tipo de datos __m256i en un número entero?

Sé que para flotadores hay:

_mm256_store_ps(float *a, __m256 b)

donde el primer argumento es la matriz de salida.

Para enteros solo encontré:

_mm256_store_si256(__m256i *a, __m256i b)

donde ambos argumentos son del tipo de datos __m256i.

¿Es suficiente hacer algo como esto:

int * X = (int*) _mm_malloc( N * sizeof (*X) ,32 );

(Estoy usando esto como argumento para una función y quiero obtener sus valores)

Función interior:

__m256i * Xmmtype = (__m256i*) X;

//fill output
_mm256_store_si256( &Xmmtype[ i ] , T ); //T is __m256i

¿Esta bien?

—–ACTUALIZADO ———————–

Ok, ¿y si tengo:

__m256i T;

for ( y = 0; y < h; y++ )
{ 
    for ( x = 0; x < w; x++ )
    {
        for ( int i = 0; i < N; i+=8 )
        {
            //calculate here the  T

        } 

        //write result
        _mm256_store_si256( &Xmmtype[ x + y * w ] , T );


    } 

} 

  • :Hola , me da falla de segmentación al aplicar el casting.

    – Jorge

    08/04/2015 a las 14:44

  • Probablemente sea un problema diferente: debe asegurarse de que X (o &X[i]) está alineado en 32 bytes, o usa _mm256_storeu_si256 en lugar de _mm256_store_si256 si no puede garantizar la alineación.

    – Pablo R.

    08/04/2015 a las 15:29

  • He usado _mm_malloc (N * tamaño de (*X), 32). Está alineado en 32, ¿verdad? Probaré también en la tienda y te lo haré saber. (Sin embargo, podré probarlo la próxima semana)

    – Jorge

    09/04/2015 a las 14:33

  • si estás usando X[i] luego i tendrá que ser un múltiplo de 8 para mantener la alineación.

    – Pablo R.

    09/04/2015 a las 14:34

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad