Resultados da pesquisa a pedido "avx"

2 a resposta

Por que esse código SSE é 6 vezes mais lento sem o VZEROUPPER no Skylake?

Eu tenho tentado descobrir um problema de desempenho em um aplicativo e finalmente o reduzi a um problema realmente estranho. O código a seguir é executado 6 vezes mais devagar em uma CPU Skylake (i5-6500) se oVZEROUPPER a instrução é comentada. ...

2 a resposta

Convenção para exibição de registros vetoriais

Existe uma convenção para exibir / gravar registros grandes, como os disponíveis no conjunto de instruções do Intel AVX? Por exemplo, se você tiver 1 no byte menos significativo e 20 no byte mais significativo e 0 em outro lugar de umxmm ...

1 a resposta

As operações escalares do AVX são muito mais rápidas

Eu testo a seguinte função simples void mul(double *a, double *b) { for (int i = 0; i<N; i++) a[i] *= b[i]; }com matrizes muito grandes para que ele seja vinculado à largura de banda da memória. O código de teste que eu uso está abaixo. Quando ...

3 a resposta

Desabilitar funções otimizadas para AVX no glibc (LD_HWCAP_MASK, /etc/ld.so.nohwcap) para registro valgrind e gdb

O linux x86_64 moderno com glibc detectará que a CPU suporta a extensão AVX e alternará muitas funções de string da implementação genérica para aOtimizado para ...

4 a resposta

NÃO está faltando no SSE, AVX?

É minha imaginação ou é umPNOT instrução ausente do SSE e AVX? Ou seja, uma instrução que vira cada bit no vetor. Se sim, existe uma maneira melhor de emular isso do quePXOR com um vetor de todos os 1s? Muito chato, pois preciso configurar um ...

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 ...

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

O zeramento de vxorps no AMD Jaguar / Bulldozer / Zen é mais rápido com registros xmm que ymm?

As CPUs AMD lidam com instruções AVX 256b decodificando em duas operações 128b. por exemplo.vaddps ymm0, ymm1,ymm1 no AMD Steamroller decodifica para 2 macro-ops, com metade da taxa de transferência devaddps xmm0, xmm1,xmm1. O zeramento de XOR é ...

3 a resposta

Implementação mais rápida da função exponencial usando o AVX

Estou procurando uma aproximação eficiente (rápida) da função exponencial que opera em elementos AVX (ponto flutuante de precisão única). Ou seja -__m256 _mm256_exp_ps( __m256 x ) sem SVML. Precisão relativa deve ser algo como ~ 1e-6 ou ~ 20 ...

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 ...