Salta al contenuto
  • Categorie
  • Recenti
  • Tag
  • Popolare
  • Utenti
  • Gruppi
Collassa
Logo del marchio
  1. Home
  2. Hardware
  3. CPU & Overclock
  4. Prime Cores V1.0 Freeware

Prime Cores V1.0 Freeware

Pianificato Fissato Bloccato Spostato CPU & Overclock
438 Post 0 Autori 40.9k Visualizzazioni
  • Da Vecchi a Nuovi
  • Da Nuovi a Vecchi
  • Più Voti
Rispondi
  • Risposta alla discussione
Effettua l'accesso per rispondere
Questa discussione è stata eliminata. Solo gli utenti con diritti di gestione possono vederla.
  • T Non in linea
    T Non in linea
    Totocellux
    scritto su ultima modifica di
    #375

    ho seguito con molta attenzione ciò che asserisce riguardo la sua decisione di utilizzare i calcoli in DP anziché in FP, in quanto se il denominatore tende a zero, l'algoritmo tende a fallire.

    spiegami però più dettagliatamente:

    o2= sqrt(o)

    1 Risposta Ultima Risposta
    0
    • X Non in linea
      X Non in linea
      Xstreme
      scritto su ultima modifica di
      #376

      Totocellux ha scritto:

      ho seguito con molta attenzione ciò che asserisce riguardo la sua decisione di utilizzare i calcoli in DP anziché in FP, in quanto se il denominatore tende a zero, l'algoritmo tende a fallire.

      spiegami però più dettagliatamente:

      o2= sqrt(o)

      in dettaglio ? ok

      Special values

      [edit] Signed zero

      Main article: Signed zero

      In the IEEE 754 standard, zero is signed, meaning that there exist both a "positive zero" (+0) and a "negative zero" (-0). In most run-time environments, positive zero is usually printed as "0", while negative zero may be printed as "-0". The two values behave as equal in numerical comparisons, but some operations return different results for +0 and ?0. For instance, 1/(?0) returns negative infinity (exactly), while 1/+0 returns positive infinity (exactly); these two operations are however accompanied by "divide by zero" exception. A sign symmetric arccot operation will give different results for +0 and ?0 without any exception. The difference between +0 and ?0 is mostly noticeable for complex operations at so-called branch cuts.

      [edit] Subnormal numbers

      Main article: Subnormal numbers

      Subnormal values fill the underflow gap with values where the absolute distance between them are the same as for adjacent values just outside of the underflow gap. This is an improvement over the older practice to just have zero in the underflow gap, and where underflowing results were replaced by zero (flush to zero).

      Modern floating point hardware usually handles subnormal values (as well as normal values), and does not require software emulation for subnormals.

      [edit] Infinities

      Main article: Infinity

      The infinities of the extended real number line can be represented in IEEE floating point datatypes, just like ordinary floating point values like 1, 1.5 etc. They are not error values in any way, though they are often (but not always, as it depends on the rounding) used as replacement values when there is an overflow. Upon a divide by zero exception, a positive or negative infinity is returned as an exact result. An infinity can also be introduced as a numeral (like C's "INFINITY" macro, or "?" if the programming language allows that syntax).

      IEEE 754 requires infinities to be handled in a reasonable way, such as

      • (+?) + (+7) = (+?)
      • (+?) × (?2) = (??)
      • But: (+?) × 0 = NaN—there is no meaningful thing to do

      [edit] NaNs

      Main article: NaN

      IEEE 754 specifies a special value called "Not a Number" (NaN) to be returned as the result of certain "invalid" operations, such as 0/0, ?×0, or sqrt(-1). There are actually two kinds of NaNs, signalling and quiet. Using a signalling NaN in any arithmetic operation (including numerical comparisons) will cause an "invalid" exception. Using a quiet NaN merely causes the result to be NaN too.

      The representation of NaNs specified by the standard has some unspecified bits that could be used to encode the type of error; but there is no standard for that encoding. In theory, signalling NaNs could be used by a runtime system to extend the floating-point numbers with other special values, without slowing down the computations with ordinary values. Such extensions do not seem to be common, though.

      :asd::asd::asd::asd::asd:

      1 Risposta Ultima Risposta
      0
      • T Non in linea
        T Non in linea
        Totocellux
        scritto su ultima modifica di
        #377

        molto molto interessante :D

        Quindi immagino che in definitiva ti dovresti poter avvantaggiare dell'utilizzo (quindi del significato) dei valori NaNs (signalling) per aumentare numericamente i FP senza peraltro rallentare l'elaborazione riguardante gli interi ?!

        dimmi se sbaglio.

        1 Risposta Ultima Risposta
        0
        • X Non in linea
          X Non in linea
          Xstreme
          scritto su ultima modifica di
          #378

          .....

          1 Risposta Ultima Risposta
          0
          • X Non in linea
            X Non in linea
            Xstreme
            scritto su ultima modifica di
            #379

            Totocellux ha scritto:

            molto molto interessante :D

            Quindi immagino che in definitiva ti dovresti poter avvantaggiare dell'utilizzo (quindi del significato) dei valori NaNs (signalling) per aumentare numericamente i FP senza peraltro rallentare l'elaborazione riguardante gli interi ?!

            dimmi se sbaglio.

            io credo sia cosi, ma lo ho chiesto a lui propnendogli questo:

            binary splitting method

            Easy programs for constants computation

            a domani :)

            1 Risposta Ultima Risposta
            0
            • T Non in linea
              T Non in linea
              Totocellux
              scritto su ultima modifica di
              #380

              a domani :)

              comunque sto tizio non è normale:

              2 x Xeon X5482 Harpertown, 64GB di memoria e 4 dischi da 1TB solo come area di appoggio dell'elaborazione, gestiti singolarmente e indipendentemente dal suo programma, e diventano loro il collo di bottiglia ???!!

              'sti americani so' troppo forti :asd:

              1 Risposta Ultima Risposta
              0
              • X Non in linea
                X Non in linea
                Xstreme
                scritto su ultima modifica di
                #381

                Totocellux ha scritto:

                a domani :)

                comunque sto tizio non è normale:

                2 x Xeon X5482 Harpertown, 64GB di memoria e 4 dischi da 1TB solo come area di appoggio dell'elaborazione, gestiti singolarmente e indipendentemente dal suo programma, e diventano loro il collo di bottiglia ???!!

                'sti americani so' troppo forti :asd:

                io lavorando su primecores sono molto limitato con il mio sistema,

                devi contare che quando programmi a 48 cores ti servono risorse

                come per 48 PC mono-core, per memorizzare una matrice con solo

                2 miliardi di interi servono ben 8000000000 byte....e ti mancano

                altri 47 cores :)

                1 Risposta Ultima Risposta
                0
                • O Non in linea
                  O Non in linea
                  One1ros
                  scritto su ultima modifica di
                  #382

                  bonis62 ha scritto:

                  ok :D

                  hai letto il readme nella patch 3.1.1 ?

                  sei conforme ?

                  Ho il .NET ma avevo il sistema incasinato, oggi non ha problemi.

                  Ho fatto l'upload di piu' test sempre nella stessa condizione con e6400 su XP pro sp3 e si puo' notare che i risultati si attestano intorno al 23.37s ma si trova anche un 23.41 e un 23.31, quindi mi chiedo quale sia la varianza di tali risultati...

                  1 Risposta Ultima Risposta
                  0
                  • T Non in linea
                    T Non in linea
                    Totocellux
                    scritto su ultima modifica di
                    #383

                    bonis62 ha scritto:

                    io lavorando su primecores sono molto limitato con il mio sistema,

                    devi contare che quando programmi a 48 cores ti servono risorse

                    come per 48 PC mono-core, per memorizzare una matrice con solo

                    2 miliardi di interi servono ben 8000000000 byte....e ti mancano

                    altri 47 cores :)

                    non ho dubbi su questo calcolo: proprio venendo al discorso della tua limitazione, mi riferivo al fatto che lui abbia di per sé una conf davvero invidiabile e costosa e ..... riesca nonostante ciò a lamentarsene :asd:

                    Tornando al discorso matematico, ovviamente hai già idea di come applicare al problema precedente l'utilità del metodo dello splitting binario!?! :)

                    1 Risposta Ultima Risposta
                    0
                    • G Non in linea
                      G Non in linea
                      gear667
                      scritto su ultima modifica di
                      #384

                      bonis62 ha scritto:

                      grazie 1000

                      quello che mi servirebbe sarebbe un bel test con SixView,

                      per vedere se compara in modo corretto i test caricati

                      da diverse macchine

                      in teoria se io divido il tempo impiegato per il numero di cores

                      dovrei avere un risultato che indifferentemente dal livello del

                      test e dalla cpu impiegata (cores) mi dia un indice di velocità

                      univoco a visualizzi in modo preciso il sistema più veloce

                      caricato in SixView,

                      spero di essermi spiegato come si deve :)

                      intendi questo?

                      i45281_sixview.jpg

                      i risultati vengono visualizzati correttamente come i dati della configurazione

                      del pc

                      1 Risposta Ultima Risposta
                      0
                      • X Non in linea
                        X Non in linea
                        Xstreme
                        scritto su ultima modifica di
                        #385

                        One1ros ha scritto:

                        Ho il .NET ma avevo il sistema incasinato, oggi non ha problemi.

                        Ho fatto l'upload di piu' test sempre nella stessa condizione con e6400 su XP pro sp3 e si puo' notare che i risultati si attestano intorno al 23.37s ma si trova anche un 23.41 e un 23.31, quindi mi chiedo quale sia la varianza di tali risultati...

                        23 secondi ,

                        dopo la virgola > 50 = 23 secondi e mezzo

                        dopo la virgola

                        nel tuo caso la varianza è di 10 centesimi di secondo,

                        considerato che putroppo windows ha i suoi tempi...

                        e il multitasking ....è un ignoto... di più nun pozzo fà :asd:

                        1 Risposta Ultima Risposta
                        0
                        • X Non in linea
                          X Non in linea
                          Xstreme
                          scritto su ultima modifica di
                          #386

                          gear667 ha scritto:

                          intendi questo?

                          i45281_sixview.jpg

                          i risultati vengono visualizzati correttamente come i dati della configurazione

                          del pc

                          come vedi la tua velocita non cambia nella visual bar..quindi dovrebbe essere ok....

                          1 Risposta Ultima Risposta
                          0
                          • O Non in linea
                            O Non in linea
                            One1ros
                            scritto su ultima modifica di
                            #387

                            bonis62 ha scritto:

                            23 secondi ,

                            dopo la virgola > 50 = 23 secondi e mezzo

                            dopo la virgola

                            nel tuo caso la varianza è di 10 centesimi di secondo,

                            considerato che putroppo windows ha i suoi tempi...

                            e il multitasking ....è un ignoto... di più nun pozzo fà :asd:

                            Ovviamente, infatti volevo solo sapere se avevi stimato tali valori.

                            Ottimo lavoro :n2mu: Sono veramente impressionato dalla tua competenza. :ave:

                            1 Risposta Ultima Risposta
                            0
                            • X Non in linea
                              X Non in linea
                              Xstreme
                              scritto su ultima modifica di
                              #388

                              Totocellux ha scritto:

                              non ho dubbi su questo calcolo: proprio venendo al discorso della tua limitazione, mi riferivo al fatto che lui abbia di per sé una conf davvero invidiabile e costosa e ..... riesca nonostante ciò a lamentarsene :asd:

                              Tornando al discorso matematico, ovviamente hai già idea di come applicare al problema precedente l'utilità del metodo dello splitting binario!?! :)

                               
                              #include 
                              #include "general.h"
                              #include "Complex.h"
                              #include "BigInt.h"
                              real MaxError;
                              real *LongNum1=NULL, *LongNum2=NULL;
                              extern void RealFFT(real*, ulong, int);
                              
                              void FastMulInit(ulong Len) {
                              ulong MaxLen;
                              if ((Len & -Len) == Len)
                              MaxLen = Len;
                              else {
                              MaxLen = 2;
                              do MaxLen*=2; while (MaxLen  C.SizeMax ) Len=C.SizeMax;
                              MaxError = 0;
                              for (x = 0; x  MaxError)
                              MaxError = PyramidError;
                              Carry = floor(Pyramid / BASE);
                              c[x] = (short)(Pyramid - Carry * BASE);
                              }
                              do { x--; } while (c[x]==0); 
                              C.Size = x+1;
                              }
                              
                              void RealFFTScalar(real *LongNum1, const real *LongNum2, ulong Len) {
                              Complex *CF1=(Complex*)LongNum1;
                              const Complex *CF2=(Complex*)LongNum2;
                              LongNum1[0] = LongNum1[0] * LongNum2[0];
                              LongNum1[1] = LongNum1[1] * LongNum2[1];
                              for (ulong x = 1; x 
                              

                              questo è un moltiplicatore FFT

                               
                              void CarryNormalize(real *Convolution, ulong Len, BigInt &C) {
                              real inv = 0.5 / Len;
                              real RawPyramid, Pyramid, PyramidError, Carry = 0;
                              ulong x;
                              ushort *c = C.Coef;
                              if ( Len > C.SizeMax ) Len=C.SizeMax;
                              MaxError = 0;
                              for (x = 0; x  MaxError)
                              MaxError = PyramidError;
                              Carry = floor(Pyramid / BASE);
                              c[x] = (short)(Pyramid - Carry * BASE);
                              }
                              do { x--; } while (c[x]==0); 
                              C.Size = x+1;
                              }
                              
                              
                              void FHTConvolution(real *LongNum1, const real *LongNum2, ulong Len) {
                              ulong Step=2, Step2=Step*2;
                              ulong x,y;
                              LongNum1[0]   = LongNum1[0] * 2.0 * LongNum2[0];
                              LongNum1[1]   = LongNum1[1] * 2.0 * LongNum2[1];
                              while (Step 
                              

                              questa è la routine di splitting binario

                              o convoluzione, che in base ad una certa

                              ampiezza mi taglia porzioni di frequenza,

                              tipo fare una torta a fette identiche con due coltelli ed entrambe le mani :uglystupid2:

                              1 Risposta Ultima Risposta
                              0
                              • T Non in linea
                                T Non in linea
                                Totocellux
                                scritto su ultima modifica di
                                #389

                                bonis62 ha scritto:

                                [..........]

                                 
                                void CarryNormalize(real *Convolution, ulong Len, BigInt &C) {
                                [color=Red][b]real inv = 0.5 / Len[/b][/color];
                                real RawPyramid, Pyramid, PyramidError, Carry = 0;
                                ulong x;
                                ushort *c = C.Coef;
                                if ( Len > C.SizeMax ) Len=C.SizeMax;
                                MaxError = 0;
                                for (x = 0; x  MaxError)
                                MaxError = PyramidError;
                                Carry = floor(Pyramid / BASE);
                                c[x] = (short)(Pyramid - Carry * BASE);
                                }
                                do { x--; } while (c[x]==0); 
                                C.Size = x+1;
                                }
                                
                                
                                void FHTConvolution(real *LongNum1, const real *LongNum2, ulong Len) {
                                ulong Step=2, Step2=Step*2;
                                ulong x,y;
                                LongNum1[0]   = LongNum1[0] * 2.0 * LongNum2[0];
                                LongNum1[1]   = LongNum1[1] * 2.0 * LongNum2[1];
                                while (Step 
                                

                                questa è la routine di splitting binario

                                o convoluzione, che in base ad una certa

                                ampiezza mi taglia porzioni di frequenza,

                                tipo fare una torta a fette identiche con due coltelli ed entrambe le mani :uglystupid2:

                                immagino che il valore di quel real inv sia dovuto a:

                                real inv = 1/(len/2)

                                Ammetto che per seguirti devo accelerare un pò :asd:

                                Quello che non riesco ancora a correlare, è in che modo potrai fare utilizzo dei valori di signalling NaNs, perchè non credo che esista una funzione apposita.

                                Quindi, constatando che stai proseguendo speditamente, immagino tu abbia già qualcosa in pentola?! :)

                                Per conto mio ho scovato qualcosa che potrebbe esserti d'aiuto ...... con parte di codice in assembler (che non guasta mai :asd:)

                                void main()
                                {
                                double a, b, c;
                                a*=7;        // Exactly the same as it is now, a is nan.
                                enableExceptions();
                                c = 6;      // ok, c is initialized now
                                c *= 10;
                                b *= 10;    // BANG ! Straight into the debugger
                                b *= 5;
                                disableExceptions();
                                }
                                void enableExceptions() {
                                version(D_InlineAsm_X86) {
                                short cont;
                                asm {
                                fclex;
                                fstcw cont;
                                mov AX, cont;
                                and AX, 0xFFFE; // enable invalid exception
                                mov cont, AX;
                                fldcw cont;
                                }
                                }
                                }
                                void disableExceptions() {
                                version(D_InlineAsm_X86) {
                                short cont;
                                asm {
                                fclex;
                                fstcw cont;
                                mov AX, cont;
                                or AX, 0x1; // disable invalid exception
                                mov cont, AX;
                                fldcw cont;
                                }
                                }
                                }
                                
                                
                                1 Risposta Ultima Risposta
                                0
                                • X Non in linea
                                  X Non in linea
                                  Xstreme
                                  scritto su ultima modifica di
                                  #390

                                  Totocellux ha scritto:

                                  immagino che il valore di quel real inv sia dovuto a:

                                  real inv = 1/(len/2)

                                  Ammetto che per seguirti devo accelerare un pò :asd:

                                  Quello che non riesco ancora a correlare, è in che modo potrai fare utilizzo dei valori di signalling NaNs, perchè non credo che esista una funzione apposita.

                                  Quindi, constatando che stai proseguendo speditamente, immagino tu abbia già qualcosa in pentola?! :)

                                  Per conto mio ho scovato qualcosa che potrebbe esserti d'aiuto ...... con parte di codice in assembler (che non guasta mai :asd:)

                                  void main()
                                  {
                                  double a, b, c;
                                  a*=7;        // Exactly the same as it is now, a is nan.
                                  enableExceptions();
                                  c = 6;      // ok, c is initialized now
                                  c *= 10;
                                  b *= 10;    // BANG ! Straight into the debugger
                                  b *= 5;
                                  disableExceptions();
                                  }
                                  void enableExceptions() {
                                  version(D_InlineAsm_X86) {
                                  short cont;
                                  asm {
                                  fclex;
                                  fstcw cont;
                                  mov AX, cont;
                                  and AX, 0xFFFE; // enable invalid exception
                                  mov cont, AX;
                                  fldcw cont;
                                  }
                                  }
                                  }
                                  void disableExceptions() {
                                  version(D_InlineAsm_X86) {
                                  short cont;
                                  asm {
                                  fclex;
                                  fstcw cont;
                                  mov AX, cont;
                                  or AX, 0x1; // disable invalid exception
                                  mov cont, AX;
                                  fldcw cont;
                                  }
                                  }
                                  }
                                  
                                  

                                  m,anca il registro BX

                                  senza il registro BX

                                  AX e inutilizzabile :)

                                  :leggi: NAN :leggi:

                                   
                                  #include 
                                  #include "mex.h"
                                  void 
                                  mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
                                  {
                                  int i, n;
                                  double *pr, *pi;
                                  double inf, nan;
                                  
                                  /* Check for proper number of input and output arguments */ 
                                  if (nrhs != 1) {
                                  mexErrMsgTxt("One input argument required.");
                                  } 
                                  if(nlhs > 1){
                                  mexErrMsgTxt("Too many output arguments.");
                                  }
                                  
                                  /* Check data type of input argument */
                                  if (!mxIsDouble(prhs[0]) || mxIsComplex(prhs[0])) {
                                  mexErrMsgTxt("Input argument must be of type real double.");
                                  } 
                                  
                                  /* Duplicate input array */
                                  plhs[0]=mxDuplicateArray(prhs[0]);
                                  
                                  pr = mxGetPr(plhs[0]);
                                  pi = mxGetPi(plhs[0]);
                                  n = mxGetNumberOfElements(plhs[0]);
                                  inf = mxGetInf();
                                  nan=mxGetNaN();
                                  /* Check for 0, in real part of data, if the data is zero, replace
                                  with NaN. Also check for INT_MAX and INT_MIN and replace with
                                  INF/-INF respectively. */
                                  for(i=0; i = INT_MAX){
                                  pr[i]=inf;
                                  }
                                  else if (pr[i]
                                  
                                  1 Risposta Ultima Risposta
                                  0
                                  • T Non in linea
                                    T Non in linea
                                    Totocellux
                                    scritto su ultima modifica di
                                    #391

                                    bonis62 ha scritto:

                                    m,anca il registro BX

                                    senza il registro BX

                                    AX e inutilizzabile :)

                                    [..........]

                                    beh, ma quella dovrebbe essere semplicemente una parte della routine: al momento di ampliarla ed avere la necessità di utilizzare un offset o un indice non mancherebbe certo a te usare proficuamente BX come registro! :)

                                    1 Risposta Ultima Risposta
                                    0
                                    • X Non in linea
                                      X Non in linea
                                      Xstreme
                                      scritto su ultima modifica di
                                      #392

                                      Totocellux ha scritto:

                                      beh, ma quella dovrebbe essere semplicemente una parte della routine: al momento di ampliarla ed avere la necessità di utilizzare un offset o un indice non mancherebbe certo a te usare proficuamente BX come registro! :)

                                      certo ,

                                      comunque è un registro implicito,

                                      cioè ax contiene sempre la metà di bx ...o l'inverso ? :muro:

                                      non mi ricordo piu !!! :muro:..la vecchiaia....!!! :asd:

                                      NOTA:

                                      mettendo più a fuoco....

                                      Quanti lustri ha quel codice ? sembra roba epoca " 1000 spartani" :)

                                      anche se devo dire che l'idea non e malaccio , anche se ....spartana .... :asd::asd::asd::asd:

                                      1 Risposta Ultima Risposta
                                      0
                                      • T Non in linea
                                        T Non in linea
                                        Totocellux
                                        scritto su ultima modifica di
                                        #393

                                        bonis62 ha scritto:

                                        [...........]

                                        NOTA:

                                        mettendo più a fuoco....

                                        Quanti lustri ha quel codice ? sembra roba epoca " 1000 spartani" :)

                                        anche se devo dire che l'idea non e malaccio , anche se ....spartana .... :asd::asd::asd::asd:

                                        il concetto di sicuro non è recente, il codice non saprei dirti.

                                        L'ho scovato su:

                                        Dobbs Code Talk

                                        Il tizio non è certamente il primo arrivato nel codificare in assembly: si chiama Walter Bright.

                                        Dico questo perchè mi risulta che in passato abbia coadiuvato la Boeing inerentemente ai progetti degli apparati del controllo di volo di diversi aeroplani :AAAAH:

                                        Considero quasi scontato il fatto che ci si possa ciecamente fidare :asd:

                                        1 Risposta Ultima Risposta
                                        0
                                        • X Non in linea
                                          X Non in linea
                                          Xstreme
                                          scritto su ultima modifica di
                                          #394

                                          Totocellux ha scritto:

                                          il concetto di sicuro non è recente, il codice non saprei dirti.

                                          L'ho scovato su:

                                          Dobbs Code Talk

                                          Il tizio non è certamente il primo arrivato nel codificare in assembly: si chiama Walter Bright.

                                          Dico questo perchè mi risulta che in passato abbia coadiuvato la Boeing inerentemente ai progetti degli apparati del controllo di volo di diversi aeroplani :AAAAH:

                                          Considero quasi scontato il fatto che ci si possa ciecamente fidare :asd:

                                          ah...lui ?

                                          guarda questo... mi ha sempre fatto morire sto video.... :asd:

                                          [video=google;-7073020265668105471]http://video.google.com/videoplay?docid=-7073020265668105471&q=walter+bright&total=45&start=0&num=10&so=0&type=search&plindex=0 #

                                          1 Risposta Ultima Risposta
                                          0

                                          Ciao! Sembra che tu sia interessato a questa conversazione, ma non hai ancora un account.

                                          Stanco di dover scorrere gli stessi post a ogni visita? Quando registri un account, tornerai sempre esattamente dove eri rimasto e potrai scegliere di essere avvisato delle nuove risposte (tramite email o notifica push). Potrai anche salvare segnalibri e votare i post per mostrare il tuo apprezzamento agli altri membri della comunità.

                                          Con il tuo contributo, questo post potrebbe essere ancora migliore 💗

                                          Registrati Accedi
                                          Rispondi
                                          • Risposta alla discussione
                                          Effettua l'accesso per rispondere
                                          • Da Vecchi a Nuovi
                                          • Da Nuovi a Vecchi
                                          • Più Voti


                                          • Accedi

                                          • Non hai un account? Registrati

                                          • Accedi o registrati per effettuare la ricerca.
                                          Powered by NodeBB Contributors
                                          • Primo post
                                            Ultimo post
                                          0
                                          • Categorie
                                          • Recenti
                                          • Tag
                                          • Popolare
                                          • Utenti
                                          • Gruppi