ORDINARE ARRAY AVX

di il
2 risposte

ORDINARE ARRAY AVX

Ragazzi qualcuno di voi si ritrova da qualche parte un algoritmo per ordinare internamente un array (ovviamente per array si intende registro) in avx, sfruttando efficientemente il parallelismo SIMD? Oppure suggerimenti?

Ad esempio avendo in memoria la sequenza

9 8 5 13 4 29 6 1

Alla fine vorrei ottenere

1 4 5 6 8 9 13 29

Gli elementi sono rappresentati in virgola mobile a precisione singola (occorre quindi utilizzare istruzioni del tipo vmovaps, vblendps, ecc..)

2 Risposte

  • Re: ORDINARE ARRAY AVX

    Gli algoritmi di ordinamento sono indipendenti dal linguaggio quindi non c'è bisogno di chiedere, basta sceglierne uno e scrivere il codice corrispondente. Cerca su google per un qualsiasi algoritmo ...

    Se il problema è il codice, allora è tutta un'altra storia ... prova a scrivere delle linee, ad esempio, secondo l'algoritmo "bubble sort" ...

    P.S. Non conosco il particolare sistema/assembly che stai utilizzando ...
  • Re: ORDINARE ARRAY AVX

    Tradurre il codice di un algoritmo noto sarebbe abbastanza agevole, ma in questo caso devo cercare di utilizzare efficientemente il parallelismo SIMD,riducendo così il tempo della computazione, attraverso il repertorio di istruzioni AVX (quindi con operazioni quali vblendps,vpermilps,ecc). In altre parole, devo

    1) caricare in 1 registro i primi 8 elementi salvati in memoria

    2)ordinarli

    3)rimetterli in memoria

    In fase di ordinamento non devo usare cicli,procedure o quant'altro, ma semplicemente mi devo avvalere del repertorio di istruzioni AVX.


    P.S. Sto lavorando su un normale assembly 8086. Per quanto riguarda AVX (Advanced Vector Extension), è un set di istruzioni SIMD in sviluppo presso i laboratori Intel. Queste istruzioni prevedono l'introduzione di vettori a 256 bit (contro quelli a 128 bit usati precedentemente) che consentono di ottenere un raddoppio dei calcoli in virgola mobile e migliorare l'organizzazione dei dati, rendendola più efficiente.
Devi accedere o registrarti per scrivere nel forum
2 risposte