• Downloads
  • ! Read Me !
  • Μαθήματα
  • Φοιτητικά
  • Τεχνικά Θέματα
  • Συζητήσεις
  • Happy Hour!
  • About THMMY.gr
 V  < 
Search:  
Welcome, Guest. Please login or register.
February 03, 2026, 14:41:11 pm

Login with username, password and session length
Links
  Thmmy.gr portal
   Forum
   Downloads
   Ενεργ. Λογαριασμού
   Επικοινωνία
  
  Χρήσιμα links
   Σελίδα τμήματος
   Βιβλιοθήκη Τμήματος
   Elearning
   Φοιτητικά fora
   Πρόγραμμα Λέσχης
   Πρακτική Άσκηση
   Ηλεκτρονική Εξυπηρέτηση Φοιτητών
   Διανομή Συγγραμμάτων
   Ψηφιακό Καταθετήριο Διπλωματικών
   Πληροφορίες Καθηγητών
   Instagram @thmmy.gr
   mTHMMY
  
  Φοιτητικές Ομάδες
   ACM
   Aristurtle
   ART
   ASAT
   BEAM
   BEST Thessaloniki
   EESTEC LC Thessaloniki
   EΜΒ Auth
   IAESTE Thessaloniki
   IEEE φοιτητικό παράρτημα ΑΠΘ
   SpaceDot
   VROOM
   Panther
  
Πίνακας Ελέγχου
Welcome, Guest. Please login or register.
February 03, 2026, 14:41:11 pm

Login with username, password and session length

Αναζήτηση

Google

THMMY.gr Web
Πρόσφατα
[ΣΑΕ Ι] Γενικές απορίες κ...
by sassi
[Today at 14:41:10]

Μόλις μπήκα απο κατατακτή...
by sassi
[Today at 14:40:06]

Πότε θα βγει το μάθημα; -...
by chatzikys
[Today at 12:10:36]

Αποτελέσματα Εξεταστικής ...
by chatzikys
[Today at 11:49:01]

[Ηλεκτρονική Ι] Γενικές α...
by Giopan
[Today at 05:46:35]

[ΑΣΗΕ] Απορίες στις ασκήσ...
by Tasos Bot
[February 02, 2026, 20:50:35 pm]

[Μεταφορά και Διανομή ΗΕ]...
by Mr Watson
[February 02, 2026, 18:55:28 pm]

Τι καφέ πίνετε;
by MeTheWizard
[February 02, 2026, 18:27:47 pm]

[Θ.Υ.Α.] Επικαιρότητα, απ...
by OlgaG
[February 01, 2026, 00:17:07 am]

H Στοά των Off Topic
by chatzikys
[January 31, 2026, 21:05:09 pm]

Πολεμοσυνέδριο στο ΑΠΘ
by dimikotz
[January 31, 2026, 20:47:47 pm]

[ΣΦ ΗΛ-ΜΗΧ] Ανακοίνωση Σχ...
by Χαρούμενη Πατάτα
[January 30, 2026, 21:10:34 pm]

[Τηλεπ. Συστήματα ΙΙΙ] Γε...
by sofipout
[January 30, 2026, 20:34:25 pm]

[Η/Μ Πεδίο ΙΙ] Ανάλυση πα...
by Tsn
[January 30, 2026, 18:59:46 pm]

Πρακτική Άσκηση ΤΗΜΜΥ 201...
by Διάλεξις
[January 30, 2026, 12:45:58 pm]

[Unofficial Mod] Dark Mod...
by nmpampal
[January 29, 2026, 23:02:21 pm]

[Μετάδοση Θερμότητας] Γεν...
by chatzikys
[January 29, 2026, 20:58:16 pm]

[Ηλεκτρική Οικονομία] Γεν...
by ttsengel
[January 29, 2026, 19:29:04 pm]

[Οπτική] Γενικές Πληροφορ...
by Σουλης
[January 29, 2026, 16:07:44 pm]

Erasmus στο Università de...
by georgino
[January 28, 2026, 17:58:29 pm]
Στατιστικά
Members
Total Members: 10347
Latest: Panagiotis2007
Stats
Total Posts: 1430029
Total Topics: 31901
Online Today: 365
Online Ever: 6054
(January 14, 2026, 06:07:19 am)
Users Online
Users: 82
Guests: 128
Total: 210
sassi
gkaramp
dimitris585
Katarameno
dsaragiotis
Tolizz
Captain
Scharal
stolieras
aris123321
mdimitrig
AlexKyr
giannnnis23
leorizos
uesli
dimitriskon
Maria balogianni
georgino
superstake
Knestoras93
Ulmo
VeGGoS
antichry
Darth Anna
apal
femanak
Mr Watson
georgepana9
Thanasis_pap
rikos4
akoryf
dimitavram
prodrom0s
tmpadasn
geomourat
sterboga
Pepe The Frog
soa2002
manolitsis
LazZar
kostisgialamas
Deviate
kostas.13v
Pumpakos
Papalamprous humor
stelisama
ilazarit
Joannapet
alekos87
KZerenidis
Petross
alexiosmara
manek
Carot1456
manmylonak
swtotrelas
andrkott
filippos
chriskazakos
Nekt
jimalexoud
Lalson
themisb
unreasonable
HlektrikhPatata
anmata
mariamil
balligeorgia
Kwstas
stmanzaf
Sotiris_atha
Konstantina Karamani
Εμφάνιση

Νέα για πρωτοετείς
Είσαι πρωτοετής;... Καλώς ήρθες! Μπορείς να βρεις πληροφορίες εδώ. Βοήθεια για τους καινούργιους μέσω χάρτη.
Κατεβάστε εδώ το Android Application για εύκολη πρόσβαση στο forum.
Ανεβάζετε τα θέματα των εξετάσεων στον τομέα Downloads με προσοχή στα ονόματα των αρχείων!

THMMY.gr > Forum > Ηλεκτρονικοί Υπολογιστές και Τεχνικά Θέματα > Περί Υπολογιστών... > Software > Προγραμματισμός (C, VB, Delphi, PHP, ASP...) (Moderators: chatzikys, PolarBear) > γρήγορη προσπέλαση πίνακα
0 Members and 1 Guest are viewing this topic.
Pages: [1] Go Down Print
Author Topic: γρήγορη προσπέλαση πίνακα  (Read 1985 times)
fugiFOX
Veteran
Καταστραμμένος
******
Posts: 8962


Fugi+Fox μια νέα μορφή ζωής...


View Profile
γρήγορη προσπέλαση πίνακα
« on: August 30, 2012, 16:25:37 pm »

έχω ένα πρόγραμμα C++ με 1 for-loop αρκετών χιλιάδων επαναλήψεων που εκτελεί κάποιους υπολογισμούς.
όταν το αποτέλεσμα αποθηκεύεται σε 1 μεταβλητή τότε πάει σφαίρα.
π.χ.
=============
for (i=0->10000)
  y=sqrt(x);
=============
βέβαια ο παραπάνω κώδικας είναι άχρηστος.

όταν λοιπόν αποθηκεύω το αποτέλεσμα σε πίνακα,
π.χ.
=============
for (i=0->10000)
  a(i)=sqrt(x);
=============
τότε επιβραδύνεται σημαντικά (Χ10 φορές).

Σύμφωνα με αυτόν
http://stackoverflow.com/questions/2234039/slow-writing-to-array-in-c

It's very simple. In first case You have just 3 variables, which can be easily stored in GPR (general purpose registers), but it doesn't mean that they are there all the time, but they are probably in L1 cache memory, which means thah they can be accessed very fast.

In second case You have more than 100k variables, and You need about 400kB to store them. That is deffinitely to much for registers and L1 cache memory. In best case it could be in L2 cache memory, but probably not all of them will be in L2. If something is not in register, L1, L2 (I assume that your processor doesn't have L3) it means that You need to search for it in RAM and it takes muuuuuch more time.


Εφόσον ισχύουν τα παραπάνω, καμιά ιδέα πώς θα μπορούσαμε να επιταχύνουμε την όλη διαδικασία;
Logged

http://www.mozilla.org/en-US/firefox/new/
arashi
Καταστραμμένος
********
Gender: Male
Posts: 5113


Tell them how I'm defying gravity


View Profile
Re: γρήγορη προσπέλαση πίνακα
« Reply #1 on: August 30, 2012, 17:43:39 pm »

...διαβαζεις το εγχειριδιο της cpu σου και διαλεγεις μεγεθος πινακα που να χωραει στην cache

η σπας σε πολλους πινακες που γραφουνε στην ram σε δωσεις κτλ κτλ
Logged

クリスチネットあなたの者だから...
fugiFOX
Veteran
Καταστραμμένος
******
Posts: 8962


Fugi+Fox μια νέα μορφή ζωής...


View Profile
Re: γρήγορη προσπέλαση πίνακα
« Reply #2 on: August 30, 2012, 18:01:41 pm »

φαντάζομαι εννοείς γεμίζεις την cache και  τα περνάς σε blocks στη RAM?

το γενικό concept είναι αυτό;
http://en.wikipedia.org/wiki/Loop_nest_optimization
Logged

http://www.mozilla.org/en-US/firefox/new/
arashi
Καταστραμμένος
********
Gender: Male
Posts: 5113


Tell them how I'm defying gravity


View Profile
Re: γρήγορη προσπέλαση πίνακα
« Reply #3 on: August 30, 2012, 18:03:20 pm »

ναι, και ταυτοχρονα παρακαλας ο compiler να συμφωνει σχετικα με το optimization
Logged

クリスチネットあなたの者だから...
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
Re: γρήγορη προσπέλαση πίνακα
« Reply #4 on: August 30, 2012, 18:08:27 pm »

και χρησιμοποιείς τον icc για compile γιατί μπορεί να κάνει πολύ καλύτερο profiling σχετικά με τους intel επεξεργαστές, πότε έγινε cache - hit / miss κτλ...

βέβαια είναι επί πληρωμή για commercial use
Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
Δικαστής Μύρτιλος
Καταξιωμένος/Καταξιωμένη
***
Posts: 190



View Profile
Re: γρήγορη προσπέλαση πίνακα
« Reply #5 on: August 30, 2012, 21:04:58 pm »

Εφόσον οι πράξεις είναι ανεξάρτητες, θα μπορούσες να κάνεις και παράλληλο προγραμματισμό, π.χ. 2 ή παραπάνω πυρήνες με τον καθένα να γράφει σε ξεχωριστές θέσεις στον πίνακα. Δεν ξέρω αν κάνει o compiler σου τέτοιο optimization εκ προεπιλογής, ανάλογα βέβαια και τον επεξεργαση που έχεις.

http://rajorshi.net/blog/2009/05/programming-for-multicore-introduction-openmp-gcc/
Logged

Τι είναι η ζωή; Ένα ημίτονο . . .
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
Re: γρήγορη προσπέλαση πίνακα
« Reply #6 on: August 30, 2012, 21:09:17 pm »

επισης πειραματήσου να κάνεις loop unrolling

for (i=0->10000/4){
  a(i<<2)=sqrt(x);
  a(i<<2+1)=sqrt(x);
  a(i<<2+2)=sqrt(x);
  a(i<<2+3)=sqrt(x);
}

επειδή τα access στη μνήμη είναι διαδοχικά μπορεί να γίνονται παράλληλα

δοκίμασε για διάφορες τιμές του n = 2,4,8,16 ktl
Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
fugiFOX
Veteran
Καταστραμμένος
******
Posts: 8962


Fugi+Fox μια νέα μορφή ζωής...


View Profile
Re: γρήγορη προσπέλαση πίνακα
« Reply #7 on: August 31, 2012, 10:02:51 am »

ευχαριστώ, θα δοκιμάσω τις προτάσεις σας.
γενικά υπάρχει κάποιος εμπειρικός κανόνας που να μπορούμε να προβλέψουμε
τι επιτάχυνση φέρνουν τέτοιες διαδικασίες;
Logged

http://www.mozilla.org/en-US/firefox/new/
BOBoMASTORAS
Veteran
Καταστραμμένος
******
Posts: 6082


It just doesn't get any easier! It gets worse...


View Profile
Re: γρήγορη προσπέλαση πίνακα
« Reply #8 on: August 31, 2012, 11:46:31 am »

Οκ κανόνας είναι τα δοκιμάζεις και κάνεις profiling Tongue

Σα τη μέτρηση δεν έχει, όση ανάλυση και να έχεις κάνει από πριν. Αν θες πρόβλεψη πρέπει να πάρεις στατιστικά από τον icc για την χρήση του hardware από τον κώδικα σου, να υπολογίσεις πολυπλοκότητες για κάθε εναλλακτική μέθοδο και να υπολογίσεις τον εκτιμώμενο χρόνο εκτέλεσης. Αλλά αυτό θα το έκανες αν έγγραφες paper, όχι αν απλά θες να κάνεις το αλγόριθμο να τρέχει γρήγορα.
Logged

Της γενιάς μου βασιλιά,
μην κατέβεις τα σκαλιά.
Πιες αθάνατο νερό
να νικήσεις τον καιρό.

http://tools.ietf.org/html/rfc1149
The only reason we invent robots
arashi
Καταστραμμένος
********
Gender: Male
Posts: 5113


Tell them how I'm defying gravity


View Profile
Re: γρήγορη προσπέλαση πίνακα
« Reply #9 on: August 31, 2012, 11:57:42 am »

Η τεσπα βγαλε και ενα paper στη διαδικασια

ο,τι βγαζεις κερδος ειναι   Grin
Logged

クリスチネットあなたの者だから...
Pages: [1] Go Up Print
Jump to:  

Powered by SMF | SMF © 2006-2009, Simple Machines LLC
Scribbles2 | TinyPortal © Bloc | XHTML | CSS
Loading...