dev.gamez.lv Forum Index dev.gamez.lv
Latvian Game Developers Community
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups 

Neiespējamais

 
dev.gamez.lv Forum Index -> Programmēšana
View previous topic :: View next topic  
Author Message
Marcina



Joined: 15 Aug 2006
Posts: 26
Location: Rīga

PostPosted: Sat Dec 16, 2006 6:53 pm    Post subject: Neiespējamais

Zinu, ka it kā tas nav iespējams, bet nu tomēr...
Vai var piespiest, ka tiek veiktas divas darbības vienlaikus, piemēram
1) i*5
2) i+56

Tikai atcerieties, ka ne par cikliem te iet runa, bet gan, kā dabūt, lai mašīna veic uzreiz divas operācijas.
Labi, pieņemam, ka viens kodols - fiziski it kā nav iespējams, bet manam datoram core duo - divi kodoli, tātad faktiski šāds gadījums var pastāvēt!!

Vai kāds ir interesējies un zin, kā to izdarīt!
Ar lielu gribu noklausīšos!!! Smile
Back to top
View user's profile
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Dec 16, 2006 7:03 pm    Post subject:

No tādu mazu operāciju paralelizēšanas nav nekādas jēgas. Jādomā ir augstākā līmenī. Piemēram - vienlaicīgi lasīt failus un zīmēt kautko uz ekrāna. Vai tml.
To sauc par multithreadingu. Ir tāds thread, operētājsistēma to uzskata par kautko, kas spēj izpildīt programmu, tb tam tiek izdalīts procesora laiks. Parasti programma = viens threads. Taču programma var radīt papildus threadus, kuri var izpildīt programmas kodu paralēli. Ja ir vairāk-kodolu procesors, tad threadi izpildīsies katrs uz sava kodola. Ja nav, tad threadi izpildīsies pamīšus - tb bišķu no viena, bišķu no otra, un tā ciklā kamēr tie izbeidzās.

Katrā ziņā tas nav vienkārši. Tur rodās daudzas problēmas - kā sasinhronizēt threadus, kā nepieļaut vienlaicīgu viena mainīgā izmaiņu no dažādiem threadiem, ko darīt ar statiskiem lokālajiem mainīgajiem, utt.

Sāc lasīt te: http://en.wikipedia.org/wiki/Thread_%28computer_science%29
Vēl arī šo var apskatīties:
http://paulbridger.net/multithreading_tutorial
http://www.flipcode.com/articles/article_multithreading.shtml
http://www.codeproject.com/useritems/MultithreadingTutorial.asp
http://users.actcom.co.il/~choo/lupg/tutorials/multi-thread/multi-thread.html
http://igdavienna.org/documents/A%20Multithreaded%20Approach%20to%20a%20Rendering%20Pipeline.htm

Un gūglē meklē uz keywordiem: multithreading, threads.
Back to top
View user's profile Send e-mail
GiGa
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 25 Sep 2003
Posts: 887

PostPosted: Sat Dec 16, 2006 7:07 pm    Post subject:

Atceries, ka viena procesa viens threads reizē var izpildīties tikai uz vienas cores. Tas nozīmē - ja vari programmu sadalīt divos paralēlos threados, ir cerība, ka tie izpildīsies paralēli, ja tev ir vairāku proči/cores. Bet viena threada divas sekojošas instrukcijas uz dažādām corēm - nē.

Var izmantot modernu procesoru papildus instrukcijas, kas ļauj vairāka līdzīgas darbības (piemēram, vairākas float reizināšanas) veikt vienlaicīgi uz vienas cores. Bet divas pilnīgi dažādas darbības: * un +, nē. Vismaz ne ar man zināmām procesora instrukcijām Smile
Back to top
View user's profile Send e-mail
bubu
Indago Uzvarētājs
Indago Uzvarētājs


Joined: 23 Mar 2004
Posts: 3223
Location: Riga

PostPosted: Sat Dec 16, 2006 7:21 pm    Post subject:

Ar AltiVec instrukcijām uz PPC var reizē saskaitīt un sareizināt. Tā ir dikti noderīga instrukcija vektoru skalārajam reizinājumam. Kautgan tagad ar SSE3 arī var ātri (tb ātrāk nekā bez SSE3) izrēķināt vektoru skalāro reizinājumu (tikai gan ne reizinot un saskaitot vienlaicīgi). Un kāpēc vekotru skalārais reizinājums ir svarīgs man droši vien stāstīt nevajag (matricu reizināšana, vektora garuma izrēķināšana - šie abi arī rēķinās ar vektoru skalārā reizinājuma palīdzību).
AltiVec ir SSE analogs uz PPC procesoriem. PPC tiek lietots vecajos Apple Makos, kā arī Xbox360 un Wii konsolēs.
Back to top
View user's profile Send e-mail
Display posts from previous:   
dev.gamez.lv Forum Index -> Programmēšana All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group