Resultados de la búsqueda a petición "sse"

2 la respuesta

Cómo convertir eficientemente un mapa de bits de 8 bits a una matriz de enteros 0/1 con x86 SIMD

Quiero convertir un entero de 8 bits en una matriz de tamaño 8 con cada valor que contenga el valor de bit de un entero. Por ejemplo: tengoint8_t x = 8; Quiero convertir esto aint8_t array_x = {0,0,0,0,1,0,0,0}; Esto tiene que hacerse de ...

1 la respuesta

Constexpr y SSE intrínsecos

os compiladores @Most C ++ admiten instrucciones SIMD (SSE / AVX) con elementos intrínsecos como _mm_cmpeq_epi32Mi problema con esto es que esta función no está marcada comoconstexpr, aunque "semánticamente" no hay razón para que esta función ...

2 la respuesta

Utilizando registros ymm como una ubicación de almacenamiento "similar a la memoria"

Considere el siguiente bucle en x86: ; on entry, rdi has the number of iterations .top: ; some magic happens here to calculate a result in rax mov [array + rdi * 8], rax ; store result in output array dec rdi jnz .top Es sencillo: algo calcula ...

1 la respuesta

Cargar un xmm desde GP regs

Digamos que tiene valores enrax yrdx desea cargar en unaxmm registrarse. Una forma sería: movq xmm0, rax pinsrq xmm0, rdx, 1 ¡Aunque es bastante lento! ¿Hay una mejor manera?

1 la respuesta

¿Cómo usar correctamente las instrucciones de captación previa?

Estoy tratando de vectorizar un bucle, calculando el producto de puntos de un gran flotante de vectores. Lo estoy calculando en paralelo, utilizando el hecho de que la CPU tiene una gran cantidad de registros XMM, como este: __m128* A, B; __m128 ...

1 la respuesta

¿Cuánto más rápido son las instrucciones de cadena SSE4.2 que SSE2 para memcmp?

Aquí está el ensamblador de mi código ¿Se puede incrustar en c ++ y verificar con SSE4? A velocidad Me gustaría mucho ver cómo entró en el desarrollo de SSE4. ¿O no está preocupado por él en absoluto? Vamos a comprobar (no tengo soporte por ...

0 la respuesta

¿Atomicidad por elemento de carga / almacenamiento de vector y recolección / dispersión?

Considere una matriz comoatomic<int32_t> shared_array[]. ¿Qué pasa si quieres SIMD vectorizar?for(...) sum += shared_array[i].load(memory_order_relaxed)?. ¿O buscar una matriz para el primer elemento que no sea cero, o poner a cero un rango de ...

1 la respuesta

¿Multiplicación de matriz grande (0,1) usando AND bit a bit y popcount en lugar de multiplicaciones int o float reales?

Para multiplicar matrices binarias grandes (10Kx20K), lo que suelo hacer es convertir las matrices en flotantes y realizar una multiplicación de matriz flotante ya que la multiplicación de matriz entera es bastante lenta (mira ...

2 la respuesta

Hacer visibles las tiendas de memoria anteriores para las cargas de memoria posteriores

Quiero almacenar datos en una gran matriz con_mm256_stream_si256() llamado en un bucle. Como entendí, se necesita una cerca de memoria para hacer que estos cambios sean visibles para otros hilos. La descripción de_mm_sfence() dice Realice una ...

1 la respuesta

diferencia entre MMX y XMM registrarse?

Actualmente estoy aprendiendo programación de ensamblaje en el procesador Intel x86. ¿Podría alguien explicarme cuál es la diferencia entre el registro MMX y XMM? Estoy muy confundido en términos de qué funciones cumplen y la diferencia ...