0

Fourni matériel contemporain, je voudrais savoir quelle est la taille maximale de tableaux de bits sur lequel je peux efficacement (par exemple dans un cycle de processeur) perfrom opérations binaires. Par exemple pour le processeur 64 bits, je suppose que la réponse est simplement 64. Est-ce vrai? Combien plus je peux obtenir sur un GPU ou peut-être un matériel exotique? Si je voudrais construire un ASIC en faisant simplement bitwise, ou jusqu'où pourrais-je aller?Sur combien de bits puis-je effectuer au mieux des opérations au niveau du bit?

Répondre

1

Le RX550 à 1325 MHz peut effectuer des opérations de bits sur des entiers à un débit de 893 giga entiers par seconde. Cela signifie 28,5 tera bits par seconde. En divisant cela par la fréquence d'horloge,

21581 bits par cycle (il y a seulement 512 cœurs dans ce GPU, chacun faisant 32 bits de calcul en nombre entier 32 * 512 = 16384 bits par cycle mais il y a aussi des unités en virgule flottante qui doivent avoir a été utilisé pour émuler des opérations entières pour atteindre 21.6 kbit par cycle, peut-être y a-t-il d'autres unités inconnues qui fonctionnent (par exemple des cœurs 64 bits pour toutes les opérations bit à bit). Si les données doivent être prises via le pont pci-e, cela devrait passer à 4 Go/s, ce qui signifie 32 Go bits par seconde. C'est plus lent que 1 processeur central. C'est important combien de calcul est fait par bit. Si c'est juste une opération, alors l'envoi au GPU n'aiderait pas beaucoup. Si ses 50+ opérations par bit, vous devriez l'envoyer à GPU ou FPGA.

noyau d'essai (OpenCL):

__kernel void bitwise(__global int16 * data) 
{ 
    int16 pData=data[get_global_id(0)]; 
    int16 pData2=pData&&1234123; 
    for(int i=0;i<25;i++) 
    {  
     pData|=(pData^55 && pData^120); 
     pData2|=(pData2^55 && pData2^120); 
    } 
    data[get_global_id(0)]=pData&pData2; 
} 

tampon de test est un tableau de nombres entiers 128M.