Resultados da pesquisa a pedido "sse"

2 a resposta

Como converter com eficiência um bitmap de 8 bits em uma matriz de números inteiros 0/1 com x86 SIMD

Eu quero converter inteiro de 8 bits em uma matriz de tamanho 8 com cada valor contendo o valor de bit de um inteiro. Por exemplo: eu tenhoint8_t x = 8; Eu quero converter isso paraint8_t array_x = {0,0,0,0,1,0,0,0}; Isso deve ser feito com ...

1 a resposta

Intrínsecas Constexpr e SSE

A maioria dos compiladores C ++ oferece suporte a instruções SIMD (SSE / AVX) com recursos como _mm_cmpeq_epi32Meu problema com isso é que essa função não está marcada comoconstexpr, embora "semanticamente" não haja motivo para essa função ...

2 a resposta

Usando registros ymm como um local de armazenamento "semelhante à memória"

Considere o seguinte loop em 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É simples: algo calcula um ...

1 a resposta

Carregando um xmm dos registros do GP

Digamos que você tenha valores emrax erdx você deseja carregar em umxmm registo. Uma maneira seria: movq xmm0, rax pinsrq xmm0, rdx, 1É bem lento! Existe uma maneira melhor?

1 a resposta

Como usar corretamente as instruções de pré-busca?

Estou tentando vetorizar um loop, computando o produto escalar de um grande vetor de flutuador. Estou computando em paralelo, utilizando o fato de que a CPU possui uma grande quantidade de registros XMM, assim: __m128* A, B; __m128 dot0, dot1, ...

1 a resposta

Quão mais rápidas são as instruções de sequência do SSE4.2 que o SSE2 para o memcmp?

Aqui está o assembler do meu código Você pode incorporá-lo em c ++ e verificar o SSE4? A velocidade Eu gostaria muito de ver como entrou no desenvolvimento do SSE4. Ou não está preocupado com ele? Vamos verificar (não tenho suporte acima do ...

0 a resposta

Atomicidade por elemento da carga / armazenamento do vetor e coleta / dispersão?

Considere uma matriz comoatomic<int32_t> shared_array[]. E se você quiser SIMD vetorizarfor(...) sum += shared_array[i].load(memory_order_relaxed)? Ou para pesquisar em uma matriz o primeiro elemento diferente de zero ou zerar um intervalo dele? ...

1 a resposta

Multiplicação de matriz grande (0,1) usando AND bit a bit e popcount em vez de reais int ou float multiplica-se?

Para multiplicar matrizes binárias grandes (10Kx20K), o que costumo fazer é converter as matrizes em unidades flutuantes e executar a multiplicação da matriz flutuante, pois a multiplicação da matriz inteira é bem lenta (dê uma olhada ...

2 a resposta

Tornar os armazenamentos de memória anteriores visíveis para as cargas de memória subsequentes

Quero armazenar dados em uma grande variedade com_mm256_stream_si256() chamado em um loop. Pelo que entendi, é necessária uma cerca de memória para tornar essas alterações visíveis para outros threads. A descrição de_mm_sfence() diz Execute uma ...

1 a resposta

diferença entre o registro MMX e XMM?

Atualmente, estou aprendendo programação de montagem no processador Intel x86. Alguém poderia me explicar, qual é a diferença entre o registro MMX e XMM? Estou muito confuso em termos de quais funções eles servem e a diferença e ...