Výsledky hlasování: ?

Hlasující
92. Nemůžete hlasovat
  • Mam core 2 duo a jsem spokojeny, i pres vynalozene penize

    31 33,70%
  • Mam core 2 duo a jsem spokojeny, ale za ty penize to nestalo

    0 0%
  • Nemam core 2 duo, ale koupim si ho

    30 32,61%
  • Nemam core 2 duo a nechci ho

    31 33,70%
Výsledky 1 až 25 z 959

Téma: Vyznam dual core

Hybrid View

Předcházející příspěvek Předcházející příspěvek   Další příspěvek Další příspěvek
  1. #1

    Standardní Re: Vyznam dual core

    Citace Původně odeslal THX Zobrazit příspěvek
    ok, to ifdef a ifndef som vsetko pokladal za ifndef

    - problem je iny - citas zamknute data
    ok. tak sec, opravim to ...

    Kód:
    #include <stdio.h>
    #include <pthread.h>
    #include <stdlib.h>
    int a = 0;
    int b = 0;
    pthread_mutex_t mut_a = PTHREAD_MUTEX_INITIALIZER;
    pthread_mutex_t mut_b = PTHREAD_MUTEX_INITIALIZER;
    
    void *f_thread1 ();
    void *f_thread2 ();
    int
    main (void)
    {
      pthread_t thread1, thread2;
      int iret1, iret2;
    
      iret1 = pthread_create (&thread1, NULL, f_thread1, NULL);
      iret2 = pthread_create (&thread2, NULL, f_thread2, NULL);
      pthread_join (thread1, NULL);
      pthread_join (thread2, NULL);
    
      printf ("a = %d\n", a);
      printf ("b = %d\n", b);
      exit (0);
    }
    
    
    void *
    f_thread1 ()
    {
      int x = 0;
      for (x = 0; x < 65535; x++)
        {
          int temp1, temp2;
          {
    #ifdef WHOLELOCK
            pthread_mutex_lock (&mut_a);
            pthread_mutex_lock (&mut_b);
    #endif
    #ifndef WHOLELOCK
            pthread_mutex_lock (&mut_a);
    #endif
            temp1 = a + 1;
    #ifndef WHOLELOCK
            pthread_mutex_unlock (&mut_a);
            pthread_mutex_lock (&mut_b);
    #endif
            temp2 = b + 1;
    #ifndef WHOLELOCK
            pthread_mutex_unlock (&mut_b);
            pthread_mutex_lock (&mut_b);
    #endif
            b = temp2;
    #ifndef WHOLELOCK
            pthread_mutex_unlock (&mut_b);
            pthread_mutex_lock (&mut_a);
    #endif
            a = temp1;
    #ifndef WHOLELOCK
            pthread_mutex_unlock (&mut_a);
    #endif
    #ifdef WHOLELOCK
            pthread_mutex_unlock (&mut_a);
            pthread_mutex_unlock (&mut_b);
    #endif
          }
        }
    }
    void *
    f_thread2 ()
    {
      int x = 0;
      for (x = 0; x < 65535; x++)
        {
          int temp1, temp2;
          {
    #ifdef WHOLELOCK
              pthread_mutex_lock (&mut_a);
              pthread_mutex_lock (&mut_b);
    #endif
    #ifndef WHOLELOCK
              pthread_mutex_lock (&mut_a);
    #endif
              temp1 = a - 1;
    #ifndef WHOLELOCK
              pthread_mutex_unlock (&mut_a);
              pthread_mutex_lock (&mut_b);
    #endif
              temp2 = b - 1;
    #ifndef WHOLELOCK
              pthread_mutex_unlock (&mut_b);
              pthread_mutex_lock (&mut_b);
    #endif
              b = temp2;
    #ifndef WHOLELOCK
              pthread_mutex_unlock (&mut_b);
              pthread_mutex_lock (&mut_a);
    #endif
              a = temp1;
    #ifndef WHOLELOCK
              pthread_mutex_unlock (&mut_a);
    #endif
    #ifdef WHOLELOCK
              pthread_mutex_unlock (&mut_a);
              pthread_mutex_unlock (&mut_b);
    #endif
            }
          }
        }
    Kód:
    localhost ~ # gcc -pthread -o tt-nowholelock threadtest.c
    localhost ~ # ./tt-nowholelock
    a = 11691
    b = -538
    sice to neni presne to, co ma implementovany valve, protoze pri cteni zamykam jak pro cteni, tak pro zapis ... ale stejne ...
    Naposledy upravil Fox!MURDER; 04.11.2006 v 15:38.
    Hrrrr, will you stop using people as human driven search engines? Google.com has all the answers you need.

  2. #2
    Senior Member
    Založen
    23.06.2003
    Bydliště
    Amstelveen
    Příspěvky
    1 061
    Vliv
    284

    Standardní Re: Vyznam dual core

    lenze to je stale zle - lebo ty precitas, medzitym ti to niekto zmeni a potom zapises staru hodnotu. Ak chces data modifikovat, musis to mat zamknute cele v kuse. Naopak - ak chces data iba precitat a potom ich dalej nemodifikovat, staci ti overit, ci v momente citania ich nema niekto iny zamknute (zamykat nemusis).
    3570K, 16G, x25-m, itx
    xj40

  3. #3

    Standardní Re: Vyznam dual core

    Citace Původně odeslal THX Zobrazit příspěvek
    lenze to je stale zle - lebo ty precitas, medzitym ti to niekto zmeni a potom zapises staru hodnotu. Ak chces data modifikovat, musis to mat zamknute cele v kuse. Naopak - ak chces data iba precitat a potom ich dalej nemodifikovat, staci ti overit, ci v momente citania ich nema niekto iny zamknute (zamykat nemusis).
    jenze tomu uz se vubec neda rikat lock-free. napr. tenhle kus kodu by pak bezel stejne dobre/spatne(+nejakej drobnej overhead na ty mutexy) na dc i sc ...

    Edit: krom toho mi to fakt neprijde prilis prevratny ... v databazich se takovejhle pristup pouziva uz roky ...
    navic dalsi vec je, ze kdyz pracujes s vetsima blokama dat, nebo napr. scenama tak pri cteni stejne musis zamknout proti zapisu celou scenu, protoze kdyz jen zkontrolujes, ze neni zamceno, muze te v nasledujicim taktu preemptnout jinej thread, zamknout a zapsat. ty uz mas zkontrolovano a tudiz vpohode ctes zmeneny data....
    Naposledy upravil Fox!MURDER; 04.11.2006 v 17:14.
    Hrrrr, will you stop using people as human driven search engines? Google.com has all the answers you need.

  4. #4
    Senior Member
    Založen
    23.06.2003
    Bydliště
    Amstelveen
    Příspěvky
    1 061
    Vliv
    284

    Standardní Re: Vyznam dual core

    Citace Původně odeslal Fox!MURDER Zobrazit příspěvek
    jenze tomu uz se vubec neda rikat lock-free. napr. tenhle kus kodu by pak bezel stejne dobre/spatne(+nejakej drobnej overhead na ty mutexy) na dc i sc ...
    tak tam daj tym threadom pocitat nejaku funkciu, napr. 10x sinus alebo nieco take a skus to pustit raz so zamkami a raz bez, ze o kolko sa to bude lisit v rychlosti

    Edit: krom toho mi to fakt neprijde prilis prevratny ... v databazich se takovejhle pristup pouziva uz roky ...
    navic dalsi vec je, ze kdyz pracujes s vetsima blokama dat, nebo napr. scenama tak pri cteni stejne musis zamknout proti zapisu celou scenu, protoze kdyz jen zkontrolujes, ze neni zamceno, muze te v nasledujicim taktu preemptnout jinej thread, zamknout a zapsat. ty uz mas zkontrolovano a tudiz vpohode ctes zmeneny data....
    Kontrolu na lock a precitanie musis urobit atomicky. Alebo mozes spravit read-only lock. Teda ze sice je zamknute, ale citat moze kolko chce threadov naraz. V praxi thread, ktory chce menit data ich naprv zamkne, potom precita, potom nad nimi urobi nejaky vypocet (tento byva o dost dlhsi ako cas citania/zapisu) a nakoniec zapise vysledky. Preto "zapisovacie" locky trvaju omnoho dlhsie a teda dlhsiu dobu blokuju paralelizmus. Alebo - ak nevadi ze pocas vypoctu spracuvaju ostatne thready stare udaje, tak si na zaciatku moze data precitat aj z read-only locku a zamykat iba pri konecnom zapise.
    Naposledy upravil THX; 04.11.2006 v 17:27.
    3570K, 16G, x25-m, itx
    xj40

  5. #5

    Standardní Re: Vyznam dual core

    Citace Původně odeslal THX Zobrazit příspěvek
    tak tam daj tym threadom pocitat nejaku funkciu, napr. 10x sinus alebo nieco take a skus to pustit raz so zamkami a raz bez, ze o kolko sa to bude lisit v rychlosti


    Kontrolu na lock a precitanie musis urobit atomicky. Alebo mozes spravit read-only lock. Teda ze sice je zamknute, ale citat moze kolko chce threadov naraz.
    to bych musel vymyslet nejakou mnohem slozitejsi konstrukci a nebo to merit v us ... coz se mi fakt moc nechce ... si hraj chvili ty ...

    udelat atomicky fci, ktera nad 10MB scenou pocita napr. odlesky si dost dobre atomicky nedovedu predstavit.
    Hrrrr, will you stop using people as human driven search engines? Google.com has all the answers you need.

  6. #6
    Senior Member
    Založen
    23.06.2003
    Bydliště
    Amstelveen
    Příspěvky
    1 061
    Vliv
    284

    Standardní Re: Vyznam dual core

    Citace Původně odeslal Fox!MURDER Zobrazit příspěvek
    to bych musel vymyslet nejakou mnohem slozitejsi konstrukci a nebo to merit v us ... coz se mi fakt moc nechce ... si hraj chvili ty ...

    udelat atomicky fci, ktera nad 10MB scenou pocita napr. odlesky si dost dobre atomicky nedovedu predstavit.
    atomicky robis iba dvojicu (kontrola na lock + precitanie). A tiez samozrejme atomicky zamykas.

    Zlozitejsiu konstrukciu robit vobec nemusis, staci ked das medzi citanie a zapis nejaku fuknciu, ktora dlho trva (napr. 100x spocitat sinus alebo nieco take), alebo snad aj sleep(1). Myslim ze v linuxe je nejaky prikaz time (alebo tak nejak), ktory vie zistit ako dlho bezal proces.

    Ide len o to, zmerat aky velky overhead znamena zamykanie.
    3570K, 16G, x25-m, itx
    xj40

  7. #7

    Standardní Re: Vyznam dual core

    Citace Původně odeslal THX Zobrazit příspěvek
    atomicky robis iba dvojicu (kontrola na lock + precitanie). A tiez samozrejme atomicky zamykas.

    Zlozitejsiu konstrukciu robit vobec nemusis, staci ked das medzi citanie a zapis nejaku fuknciu, ktora dlho trva (napr. 100x spocitat sinus alebo nieco take), alebo snad aj sleep(1). Myslim ze v linuxe je nejaky prikaz time (alebo tak nejak), ktory vie zistit ako dlho bezal proces.

    Ide len o to, zmerat aky velky overhead znamena zamykanie.
    JENZE! kdyz potrebujes konzistentni scenu, tak si bud musis udelat atomicky kopii xMB dat, coz te stoji cas a pamet, nebo udelat atomicky celej ten proces, nebo to proste zamknout.
    Hrrrr, will you stop using people as human driven search engines? Google.com has all the answers you need.

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Podobná témata

  1. dual core notas s grafickou buducnostou
    Založil Lord Skullhead v sekci fóra Nákupní poradna
    Odpovědí: 3
    Poslední příspěvek: 10.04.2006, 17:48
  2. jak je to s tim dual channelem?
    Založil vaga v sekci fóra Intel čipové sady
    Odpovědí: 26
    Poslední příspěvek: 06.08.2005, 18:43
  3. P4 2.8GHz vykonnejsi nez dual opteron 240 na linuxu?
    Založil Petrik v sekci fóra AMD procesory
    Odpovědí: 6
    Poslední příspěvek: 20.09.2004, 07:56
  4. Ma vubec Dual chanel u AMD vyznam?
    Založil Uncle Fucker v sekci fóra NVIDIA čipové sady
    Odpovědí: 25
    Poslední příspěvek: 18.02.2003, 23:02
  5. Jake pameti pro dual channel?
    Založil Evils v sekci fóra Paměti
    Odpovědí: 6
    Poslední příspěvek: 02.02.2003, 01:22

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •