THMMY.gr

Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών => Παράλληλα και Διανεμημένα Συστήματα => Topic started by: Ροζ συννεφάκι on December 29, 2016, 19:39:01 pm



Title: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on December 29, 2016, 19:39:01 pm
Βγήκε και η 3η!
ethmmy:

3η Εργασία 2016-2017
28 Δεκ 2016 4:38 μμ
Φλώρος

Η 3η εργασία έχει ανακοινωθεί στο Περιεχόμενα/Ασκήσεις. Καλές γιορτές!

Πόσο ειρωνικό αυτό το "Καλές γιορτές!"...


Title: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on December 30, 2016, 00:24:13 am
Βγήκε και η 3η!
ethmmy:

Πόσο ειρωνικό αυτό το "Καλές γιορτές!"...

+1!!!


Title: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 05, 2017, 15:17:29 pm
Καλή χρονιά παιδιά!
Υπάρχει κανείς που ξεκίνησε λιγάκι την 3η εργασία;
Καταρχάς Windows η Ubuntu?
Εγώ έχω θέματα και στα δύο. Στα windows αφου κατέβασα 10gb Visual Studio, δεν μπορώ καν να κάνω compile... Το ενα error μετα το άλλο.
Τώρα για τα Ubuntu, που βρίσκουμε matlab; Επίσης προσπαθώντας να βάλω cuda στα ubuntu ο υπολογιστής μετά δεν άνοιγε σε ubuntu επειδή τα driver που μου έβαλε για την cuda δεν δούλευαν σωστά. Ευτυχώς το έφτιαξα μέσα απο "safe mode".

Κανείς που τα έχει καταφέρει χωρίς προβλήματα;

Edit:
το matlab τελικά εύκολα βρίσκεται αρκεί να ψάχνεις Matlab for linux αντί για matlab for ubuntu που έψαχνα :D
Τα υπόλοιπα προβλήματα παραμένουν ωστόσο


Title: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: DoraTheExplorer on January 05, 2017, 15:36:49 pm
Καλή χρονιά παιδιά!
Υπάρχει κανείς που ξεκίνησε λιγάκι την 3η εργασία;
Καταρχάς Windows η Ubuntu?
Εγώ έχω θέματα και στα δύο. Στα windows αφου κατέβασα 10gb Visual Studio, δεν μπορώ καν να κάνω compile... Το ενα error μετα το άλλο.
Τώρα για τα Ubuntu, που βρίσκουμε matlab; Επίσης προσπαθώντας να βάλω cuda στα ubuntu ο υπολογιστής μετά δεν άνοιγε σε ubuntu επειδή τα driver που μου έβαλε για την cuda δεν δούλευαν σωστά. Ευτυχώς το έφτιαξα μέσα απο "safe mode".

Κανείς που τα έχει καταφέρει χωρίς προβλήματα;

Για τα windows θα έπρεπε να είναι σχετικά εύκολο να χρησιμοποιήσεις CUDA με το visual studio αν δεν έχεις κάνει κάτι τελείως λάθως όσον αφορά συμβατότητες και τέτοια.
Πρόσεξε λίγο στα λάθη που σου πετάει όταν πας να κάνεις build αν αναφέρει κάτι για την .NET Framework που χρειάζεται και τσέκαρε αν είναι ενεργοποιήμενη στο λειτουργικό σου


Title: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 05, 2017, 15:52:39 pm
Καταρχάς κατέβασα το Visual Studio 2015 και εγκατέστησα ολες τις προεκτάσεις για Programming languages (7+Gb). Έπειτα κάνοντας nvcc το παράδειγμα που μας δίνει στην εργασία παίρνω διάφορα errors για βιβλιοθηκες οτι δεν υπάρχουν. Τελος πάντων τις βρίσκω σε άλλο φακελο απο εκείνον που υποτίθεται οτι υπήρχαν και τις αντιγράφω στο σωστό μέρος. Έπειτα μου δίνει error
LINK : fatal error LNK1104: cannot open file 'uuid.lib' που δεν κατάφερα να λύσω.

Edit:
Άφησα τα windows και κατάφερα να βάλω cuda στα Ubuntu. Στην επιλογή για drivers πατησα οχι και δεν ειχα θεμα μετα.

Τώρα όσον αφορά την εργασία τι πρέπει να κάνουμε;
Το πρόγραμμα όλο θα πρέπει να το γράψουμε σε C? Πώς θα τρέξει στον διαδη σαν matlab αρχειο?




Title: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 06, 2017, 03:04:26 am
Κι εγώ την ίδια απορία έχω.
Γράφουμε μόνο την συνάρτηση σε C; Έβγαλε κανείς άκρη;


Title: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 06, 2017, 03:44:32 am
Κι εγώ την ίδια απορία έχω.
Γράφουμε μόνο την συνάρτηση σε C; Έβγαλε κανείς άκρη;
Ρώτησα τον φλώρο και μου είπε οτι δεν χρειάζεται να το γράψουμε όλο σε c.
Quote
Δεν χρειάζεται να γράψετε ξανά τον κώδικα σε c. Μπορείτε να καλέσετε απ'ευθείας πυρήνα cuda από MATLAB, όπως στο παράδειγμα που σας δίνεται.

Στον diades απλά τρέχετε matlab από terminal και ανοίγει κανονικά το περιβάλλον (χωρίς GUI).

Έχει καταφέρει κανείς να υλοποιήσει τις συναρτήσεις που Z(i) W(i,j) και f^ που είναι στο pdf?
Απότι κατάλαβα δεν υπάρχει έτοιμη συνάρτηση στο Matlab για cuda για τις pdist και squareform


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 08, 2017, 17:30:04 pm
Στους τύπους του pdf το f(Ni) είναι πίνακας ή μέση τιμή των τιμών της γειτονιάς των pixel ;
Στο wikipedia το περιγράφει σαν μέση τιμή..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 09, 2017, 01:03:45 am
για την cuda απο πού διαβάσατε? στο link που μας δίνει στην εκφώνηση, δεν έχει πολλές λεπτομέρειες που εμάς μας είναι άχρηστες? φαντάζομαι κάποια βασικά θα χρειάζονται, έτσι?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 09, 2017, 18:44:37 pm
Λίγο απόλα και κυρίως google τα πάντα :P
Τα f(Ni) και f(Nj) τα πήρατε σαν μέσες τιμές η σαν πίνακες;
Επίσης αν είναι μέση τιμή η απόστασή τους δεν είναι απλά η απόλυτη τιμή της αφαίρεσης τους;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ser Harry Man on January 10, 2017, 11:55:46 am
Γιατί να γράψουμε οτιδήποτε απο το μηδέν, αφού μας δίνει κώδικα matlab ? Και βλέπω ότι μέσω matlab καλεί συνάρτηση σχετικά με gpu...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 10, 2017, 13:58:58 pm
απο το 0 δεν χρειαζεται.. αλλα θα πρέπει να υλοποιήσεις το δικό σου non-local-means γιατί αν δεις οι συναρτήσεις που χρησιμοποιεί pdist , squareform και ίσως μερικές άλλες δεν είναι υλοποιήσιμες για gpuArray. Άσε που ο πίνακας που δημιουργείται απο την squareform είναι πολύ μεγάλος.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on January 10, 2017, 22:42:10 pm
Τελικά το f(N) είναι ο μέσος όρος της γειτονιάς έτσι;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Aristos on January 11, 2017, 02:34:35 am
Αυτό που κατάλαβα εγώ από την εκφώνηση είναι πως || ... || με δείκτη G(α) είναι κάποια νόρμα του πίνακα που βρίσκεται μέσα. Για αυτό δε νομίζω F(N_i) να είναι απλά η μέση τιμή της γειτονιάς (δηλαδή αριθμός). Θα μπορούσε να χρησιμοποιήσει πιο απλό συμβολισμό σε αυτή την περίπτωση. Από την άλλη δε κατάφερα να βρω κάποια νόρμα που να συμβολίζεται με G(α), οπότε μπορεί να λέω και μαλακίες. Μόνο η νόρμα Forbenius μου φαίνεται πως κολάει κάπως. Αν υπάρχει κάποιος με καλές γνώσεις γραμμικής άλγεβρας ας μας διαφωτίσει.
Έχω πάντως την υποψία πως οι τύποι γίναν copy-paste από κάπου και δεν πρόσεξαν καλά στην αντιγραφή γιατί το σύμβολο G(α) δεν αναφέρεται πουθενά αλλού. Όπως και η παράμετρος σ.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 11, 2017, 12:39:08 pm
Αυτό που κατάλαβα εγώ από την εκφώνηση είναι πως || ... || με δείκτη G(α) είναι κάποια νόρμα του πίνακα που βρίσκεται μέσα. Για αυτό δε νομίζω F(N_i) να είναι απλά η μέση τιμή της γειτονιάς (δηλαδή αριθμός). Θα μπορούσε να χρησιμοποιήσει πιο απλό συμβολισμό σε αυτή την περίπτωση. Από την άλλη δε κατάφερα να βρω κάποια νόρμα που να συμβολίζεται με G(α), οπότε μπορεί να λέω και μαλακίες. Μόνο η νόρμα Forbenius μου φαίνεται πως κολάει κάπως. Αν υπάρχει κάποιος με καλές γνώσεις γραμμικής άλγεβρας ας μας διαφωτίσει.
Έχω πάντως την υποψία πως οι τύποι γίναν copy-paste από κάπου και δεν πρόσεξαν καλά στην αντιγραφή γιατί το σύμβολο G(α) δεν αναφέρεται πουθενά αλλού. Όπως και η παράμετρος σ.

Αν δεις όμως το link της wikipedia που μας δίνει, στον αντίστοιχο τύπο δεν υπάρχει ούτε το  ||...|| που παραπέμπει σε νόρμα, ούτε το σύμβολο G(a), γιατί όλη η παράγραφος μιλάει για Gaussian. Οπότε μάλλον στην εκφώνηση έβαλαν το G(a) απλώς για να δείξει ότι γίνεται με Gaussian. Δε νομίζω να είναι κάτι παραπάνω (ή τουλάχιστον, ελπίζω!)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 11, 2017, 13:28:00 pm
Ξέρουμε πώς ορίζεται η "γειτονιά" για τα pixel που βρίσκονται στην άκρη της εικόνας? Δηλαδή, όταν τα pixel γύρω από το pixel που δουλεύουμε δεν είναι αρκετά για να ορίσουν το προβλεπόμενο τετράγωνο?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 11, 2017, 14:59:02 pm
Έκανε κανείς compile cuda στο pc του; δεν βρίσκει τον nvcc.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ancient on January 11, 2017, 15:16:22 pm
Ξέρουμε πώς ορίζεται η "γειτονιά" για τα pixel που βρίσκονται στην άκρη της εικόνας? Δηλαδή, όταν τα pixel γύρω από το pixel που δουλεύουμε δεν είναι αρκετά για να ορίσουν το προβλεπόμενο τετράγωνο?

Και επίσης τι γίνεται όταν είναι περιττός ή άρτιος αριθμός το μέγεθος της γειτονιάς... Ασάφεια καλή αγαπημένη


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Επικο Burger on January 11, 2017, 15:42:05 pm
Ξέρουμε πώς ορίζεται η "γειτονιά" για τα pixel που βρίσκονται στην άκρη της εικόνας? Δηλαδή, όταν τα pixel γύρω από το pixel που δουλεύουμε δεν είναι αρκετά για να ορίσουν το προβλεπόμενο τετράγωνο?

Χωρις να εχω πιασει εργασία ακόμα, σκέφτομαι κατι σε zero padding ή interpolation.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on January 11, 2017, 17:13:12 pm
Και επίσης τι γίνεται όταν είναι περιττός ή άρτιος αριθμός το μέγεθος της γειτονιάς... Ασάφεια καλή αγαπημένη
Το μέγεθος της γειτονιάς θα είναι τετράγωνο με περιττό μέγεθος διάστασης ώστε να υπάρχει κεντρικό pixel,στην εκφώνηση ζητάει συγκεκριμένα 3x3 5x5 7x7.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on January 11, 2017, 17:17:25 pm
Έκανε κανείς compile cuda στο pc του; δεν βρίσκει τον nvcc.
Για να τρέξεις cuda στο pc σου θα πρέπει να έχεις κάρτα γραφικών της nvidia ώστε να υποστηρίζει cuda προγραμματισμό,οπότε κοίτα μήπως έχεις εκεί κάποιο θέμα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Aristos on January 11, 2017, 17:38:34 pm
@fanaks δε χρειάζεται να έχεις κάρτα γραφικών της Nvidia για να τρέξεις τον nvcc. Απλώς δε θα μπορείς να τρέξεις το εκτελέσιμο που θα παράξει ο nvcc (το εκτελέσιμο δεν θα είναι εκτελέσιμο :D ). Και πάλι όμως διευκολύνει αρκετά την διορθωση των συντακτικών να μπορέις να κάνεις compile στο pc σου.

@kaspas δεν υπάρχει προεγκατεστημένος o nvcc. κατεβάζεις και εγκαθιστάς το cuda toolikit από την nvidia. η default θέση του εκτελέσιμου είναι στο C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe . δεν το προσθέτει αυτόματα στο path των windows οπότε είτε το προσθέτεις εσύ, ειτε γράφεις όλο το μακαρόνι

edit : για windows 10 μιλάμε πάντα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 11, 2017, 18:05:22 pm
@fanaks δε χρειάζεται να έχεις κάρτα γραφικών της Nvidia για να τρέξεις τον nvcc. Απλώς δε θα μπορείς να τρέξεις το εκτελέσιμο που θα παράξει ο nvcc (το εκτελέσιμο δεν θα είναι εκτελέσιμο :D ). Και πάλι όμως διευκολύνει αρκετά την διορθωση των συντακτικών να μπορέις να κάνεις compile στο pc σου.

@kaspas δεν υπάρχει προεγκατεστημένος o nvcc. κατεβάζεις και εγκαθιστάς το cuda toolikit από την nvidia. η default θέση του εκτελέσιμου είναι στο C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\bin\nvcc.exe . δεν το προσθέτει αυτόματα στο path των windows οπότε είτε το προσθέτεις εσύ, ειτε γράφεις όλο το μακαρόνι

edit : για windows 10 μιλάμε πάντα
Για linux έλεγα και το έχω κάνει υποτίθεται εγκατάσταση.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Aristos on January 11, 2017, 20:12:02 pm
Για linux έλεγα και το έχω κάνει υποτίθεται εγκατάσταση.

η ίδια λογική. αν έχει γίνει όντως η εγκατάσταση, ψάξε να βρείς που μπήκαν τα εκτελέσιμα (είναι κάπως πιο χύμα στα linux) και βάλε αυτήν την τοποθεσία στο path


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 11, 2017, 20:31:25 pm
η ίδια λογική. αν έχει γίνει όντως η εγκατάσταση, ψάξε να βρείς που μπήκαν τα εκτελέσιμα (είναι κάπως πιο χύμα στα linux) και βάλε αυτήν την τοποθεσία στο path

παιδιά γνωρίζει κανείς γιατί παίρνω Cuda_Illegal_Adress_ERROR όταν κάνω malloc έναν πίνακα μεσα στο Kernel?

σε διαφορετική περίπτωση πρέπει να ορίζω διαφορετικές περιπτώσεις με array[9] , array[25] κτλ, για τα διαφορετικά pachsize και γίνεται μακρυνάρι, ωστόσο δουλεύει έτσι..

EDIT:
Τελικά χρειάζεται να τις ορίσεις ως __device__ αρχικά. Βέβαια οι χρόνοι χειροτέρεψαν πολύ..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ditroo on January 12, 2017, 14:20:38 pm
Υπάρχει κάποιος που να έχει windows 7 , x64 και να έχει κάνει εγκατάσταση το cuda toolkit?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 12, 2017, 14:27:28 pm
Κάνω compile το sampleAddKernel που μας έχει δώσει και μετά τρέχω στην matlab το sample_Kernel.m
και μου εμφανίζει error
Code:
Error using parallel.gpu.CUDAKernel
An unexpected error occurred during CUDA execution. The CUDA error was:
CUDA_ERROR_UNKNOWN

Error in sample_kernel (line 24)
  k = parallel.gpu.CUDAKernel( '../cuda/sampleAddKernel.ptx', ...
 
Καμια ιδέα τι κάνω λάθος;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ser Harry Man on January 12, 2017, 14:35:46 pm
Κάνω compile το sampleAddKernel που μας έχει δώσει και μετά τρέχω στην matlab το sample_Kernel.m
και μου εμφανίζει error
Code:
Error using parallel.gpu.CUDAKernel
An unexpected error occurred during CUDA execution. The CUDA error was:
CUDA_ERROR_UNKNOWN

Error in sample_kernel (line 24)
  k = parallel.gpu.CUDAKernel( '../cuda/sampleAddKernel.ptx', ...
 
Καμια ιδέα τι κάνω λάθος;

Τις τελίτσες τις έχει για να συμπληρώσεις το path σου όπως είναι, πρέπει να τις αλλάξεις δηλαδη


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ser Harry Man on January 12, 2017, 14:36:30 pm
O Διάδης τρέχει matlab?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 12, 2017, 14:44:05 pm
Τις τελίτσες τις έχει για να συμπληρώσεις το path σου όπως είναι, πρέπει να τις αλλάξεις δηλαδη
οχι, οι δυο τελείες στην αρχή σημαίνουν "πήγαινε στον προηγούμενο φάκελο" , σαν το cd .. ενα πράγμα

Ναι ο διάδης τρέχει Matlab αν γράψεις matlab σαν εντολη


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 12, 2017, 14:45:53 pm
οχι, οι δυο τελείες στην αρχή σημαίνουν "πήγαινε στον προηγούμενο φάκελο" , σαν το cd .. ενα πράγμα

Ναι ο διάδης τρέχει Matlab αν γράψεις matlab σαν εντολη

Ναι 2 τελείες σημαίνει πίσω. Και το path μου βρίσκεται σε σωστό σημείο ώστε να βγάζει νόημα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ser Harry Man on January 12, 2017, 14:49:31 pm
Ναι 2 τελείες σημαίνει πίσω. Και το path μου βρίσκεται σε σωστό σημείο ώστε να βγάζει νόημα.

Sorry και εγώ τώρα το τσέκαρα οτι δουλεύει... Δεν ξέρω :/


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ser Harry Man on January 12, 2017, 14:59:08 pm
Απο τα λίγα που καταλαβαίνω μέχρι στιγμής, θα πρέπει να κάνουμε στην ουσία optimize το sample_kernel που μας έχει δώσει
για να χρησιμοποεί κατάλληλα shared memory κτλ (και είναι και το μόνο σε C ) και θα αφήσουμε τα υπόλοιπα πάνω κάτω ίδια, σωστά?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 12, 2017, 16:26:15 pm
Απο τα λίγα που καταλαβαίνω μέχρι στιγμής, θα πρέπει να κάνουμε στην ουσία optimize το sample_kernel που μας έχει δώσει
για να χρησιμοποεί κατάλληλα shared memory κτλ (και είναι και το μόνο σε C ) και θα αφήσουμε τα υπόλοιπα πάνω κάτω ίδια, σωστά?
Εγώ ο δρόμος που ακολούθησα αλλα δεν ξερω αν ειναι ο σωστός, είναι οτι δεν χρησιμοποίησα καθόλου το nonlocalmeans που μας εχει δώσει, αντιθέτως στο σημείο που καλει το non_local_means έγώ καλό το δικό μου kernel.
Μέσα στο αρχείο του kernel έχω υλοποιήσει τις συναρτήσεις (οσο τις κατάλαβα :P) που μας δίνει στο Pdf.

Την shared memory πως θα την εκμεταλευτούμε; είναι πολύ μικρή... μονο για 64*64 κατάφερα να περάσω έναν πίνακα... για μεγαλύτερους πίνακες μου βγάζει error οτι χρησιμοποιώ περισσότερο shared memmory απ'οτι επιτρεπεται..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ser Harry Man on January 12, 2017, 18:20:46 pm
Quote
k = parallel.gpu.CUDAKernel( '../cuda/sampleAddKernel.ptx', ...
                               '../cuda/sampleAddKernel.cu');

Μπορεί κάποιος να μου εξηγήσει τι ακριβώς κάνει αυτό? Με ποιό τρόπο δίνει
το Matlab τα ορίσματα στη συνάρτηση sampleAddKernel, και τι σημαίνουν οι
3 τελίτσες πρίν το δεύτερο address. Επίσης γιατί χρειάζεται καί το εκτελέσιμο,
καί τον αρχικό κώδικα?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 12, 2017, 22:54:52 pm
Μπορεί κάποιος να μου εξηγήσει τι ακριβώς κάνει αυτό? Με ποιό τρόπο δίνει
το Matlab τα ορίσματα στη συνάρτηση sampleAddKernel, και τι σημαίνουν οι
3 τελίτσες πρίν το δεύτερο address. Επίσης γιατί χρειάζεται καί το εκτελέσιμο,
καί τον αρχικό κώδικα?
Τις υπόλοιπες ερωτήσεις σου δεν τις ξέρω αλλά τα ορισματα τα περνάει με την feval και με την gather τα συγκεντρώνει πίσω. Δεν ξέρω αν γίνεται να πάρεις πάνω από ένα όρισμα πίσω, δεν τα κατάφερα. Πρέπει να γίνεται με πίνακα όμως


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: dimigoug on January 13, 2017, 01:24:24 am
Παιδιά έχει καταφέρει να κάνει κάποιος έστω και μια πρόχειρη υλοποίηση, για δεύτερη γνώμη?
Εμένα το filtered image βγαίνει λες και το βλέπεις με μυωπία για γειτονιά 5 και 7, για 3 καλά είναι.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 13, 2017, 01:30:07 am
ποιον αλγόριθμο φτιάξατε ρε παιδιά; ο δικός του αλγόριθμος κάτι κάνει με 3-D patches και τον χάνω.(της matlab)
Πχ μπορεί να μου κανείς τι κάνει αυτό;
Code:
patchCube = @(X,w) ...
      permute( ...
          reshape( ...
              im2col( ...
                  padarray( ...
                      X, ...
                      (w-1)./2, 'symmetric'), ...
                  w, 'sliding' ), ...
              [prod(w) size(X)] ), ...
          [2 3 1] );
και γιατί κάνει gauss εδώ;
Code:
  % gaussian patch
  H = fspecial('gaussian',patchSize, patchSigma);
  H = H(:) ./ max(H(:));
 
Σε ποιο κομμάτι του αλγορίθμου ανήκουν αυτά;
Ιδικά το 1ο τι είναι;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: dimigoug on January 13, 2017, 01:37:02 am
Aυτά είναι ο κώδικας με τον οποίο θα κάνουμε επαλήθευση το αποτέλεσμα του δικού μας kernel. To οποίο πρέπει να γράψεις μόνος σου από το 0 με βάση τους τύπους στο PDF


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 13, 2017, 01:45:43 am
Aυτά είναι ο κώδικας με τον οποίο θα κάνουμε επαλήθευση το αποτέλεσμα του δικού μας kernel. To οποίο πρέπει να γράψεις μόνος σου από το 0 με βάση τους τύπους στο PDF
Υποτίθεται ότι υλοποιεί στην matlab τον αλγόριθμο του pdf. Αλλιώς ο αλγόριθμος του pdf από μόνος του έχει ασάφειες. Τι είναι το σ τι G(a);


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Andromedas on January 13, 2017, 01:54:21 am
Υποτίθεται ότι υλοποιεί στην matlab τον αλγόριθμο του pdf. Αλλιώς ο αλγόριθμος του pdf από μόνος του έχει ασάφειες. Τι είναι το σ τι G(a);
το σ^2 είναι διακύμανση παράγοντας στην Gaussian ...
Ναι το υλοποιεί. Και ναι στο είναι λίγο γενικός. Το G(a) συμβολισμός μάλλον.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 13, 2017, 02:01:53 am
Τα i,j είναι διανύσματα;  Και στο Ζi το Σ είναι σε όλο το Ω;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 13, 2017, 02:06:02 am

Τα i,j είναι διανύσματα;  Και στο Ζi το Σ είναι σε όλο το Ω;
στο wiki λέει οτι τα f(Ni) και f(Nj) Είναι η μέση τιμή της γειτονιάς.
Στο pdf ετσι όπως το λέει εγώ κατάλαβαινω οτι είναι διανύσματα(περιέχουν τα pixel της εκάστοτε γειτονιάς).

Το δοκίμασα και με τους δύο τρόπους, με τα διανύσματα παίρνω καλύτερα αποτελέσματα αλλα είναι λούκι, ωστόσο μάλλον έχω κάνει λάθη οπότε μη σε πάρω στον λαιμό μου, ίσως με μέση τιμή να είναι και καλύτερος αν το κάνεις σωστά


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Andromedas on January 13, 2017, 02:11:57 am
Τα i,j είναι διανύσματα;  Και στο Ζi το Σ είναι σε όλο το Ω;
Τα i,j είναι index των pixels
Το Ν i είναι περιοχή γύρο από το i pixel και η περιοχή είναι το batch size  πχ εάν έχεις μια 3x3 batch (gaussian) και πάρεις το πρώτο έστω f(0,0)  φτιάχνεις ένα pad γύρω γύρω 3x3 για να την πολλαπλασιάσεις με την gaussian
Το Zi το βγάζω από το script τώρα αλλά νομίζω είναι αριθμός για κάθε i
Έτσι κατάλαβα μέχρι τώρα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on January 13, 2017, 15:13:33 pm
.
Το Zi το βγάζω από το script τώρα αλλά νομίζω είναι αριθμός για κάθε i
Έτσι κατάλαβα μέχρι τώρα
To Z(i) είναι για κάθε pixel καθώς καθορίζει ''ποσοστό ομοιότητας'' με τα άλλα pixel.

πρώτο έστω f(0,0)  φτιάχνεις ένα pad γύρω γύρω 3x3 για να την πολλαπλασιάσεις με την gaussian
@Andromedas:Τι εννοείς σε αυτό το σημείο,τι πολλαπλασιάζεις;

Επίσης να κάνω μια ερώτηση στο παράδειγμα του matlab ξέρετε τι είναι τα filtSigma και patchSigma.Εγώ καταλαβαίνω ότι το filtSigma είναι ο όρος σ που έχει στους τύπους στο pdf αλλά το patchSigma σε τι αντιστοιχεί,ή μήπως τα έχω μπερδέψει;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 13, 2017, 19:57:39 pm
.To Z(i) είναι για κάθε pixel καθώς καθορίζει ''ποσοστό ομοιότητας'' με τα άλλα pixel.
@Andromedas:Τι εννοείς σε αυτό το σημείο,τι πολλαπλασιάζεις;

Επίσης να κάνω μια ερώτηση στο παράδειγμα του matlab ξέρετε τι είναι τα filtSigma και patchSigma.Εγώ καταλαβαίνω ότι το filtSigma είναι ο όρος σ που έχει στους τύπους στο pdf αλλά το patchSigma σε τι αντιστοιχεί,ή μήπως τα έχω μπερδέψει;

δεν είμαι σίγουρος αλλα αυτά τα δύο μαζί πρέπει να κάνουν το σ^2 . Γιατί για διαφορετικό patchSize βγάζεις διαφορετικά αποτελέσματα, οπότε νομίζω το patchSigma είναι πολλαπλασιαστής του filtSigma για να κρατάει αναλογία. Ολα αυτά με επιφύλαξη :P


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Andromedas on January 13, 2017, 20:21:35 pm
2)@Andromedas:Τι εννοείς σε αυτό το σημείο,τι πολλαπλασιάζεις;
1) patchSigma ;
Λοιπόν μια γρήγορη απάντηση.
Code:

1)
..
  % create 3D cube
  B = patchCube(I, patchSize); %ανοίγει τον πίνακα ανάλογα με το patchSize πρακτίκα εάν έχεις μια I 3x3 και %patch size 3x3 κάνεις ένα padding γύρω από κάθε pixel άρα κάθε z της εικόνας 3x3x9 είναι το i στοιχείο με το %padding του γύρω γύρω.
 [m, n, d] = size( B );
  B = reshape(B, [ m*n d ] );
% κάνει τον m x n x z πίνακα σε  m*n x z δηλαδή μια γραμμή είναι το i pixel μαζί με το padd του


2)
% φτίαχνει την gaussian σε 3x3 (patchSize)
  % gaussian patch
  H = fspecial('gaussian',patchSize, patchSigma);
  H = H(:) ./ max(H(:));
% την ανοίγει σε 9x1  και την πολλαπλασιάζει με κάθε i pixel μαζί με το pad του (εδώ εάν κάνεις αθροισμά έχεις δυσδιάστατη συνελιξή )
  % apply gaussian patch on 3D cube
  B = bsxfun( @times, B, H' );

δεν είμαι σίγουρος αλλα αυτά τα δύο μαζί πρέπει να κάνουν το σ^2 . Γιατί για διαφορετικό patchSize βγάζεις διαφορετικά αποτελέσματα, οπότε νομίζω το patchSigma είναι πολλαπλασιαστής του filtSigma για να κρατάει αναλογία. Ολα αυτά με επιφύλαξη :P

Όχι το σ^2 είναι μόνο του και εφαρμόζεται στο
 D = exp( -D.^2 / filtSigma ); και στην gaussian
Με άλλο patch size αλλάζει η απόδοση καθώς μεγαλώνει ή μικραίνει το παράθυρό που παίρνει τον "μέσο όρο" και αλλάζει και την gaussian.

ελπίζω να βοήθησα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 13, 2017, 20:44:58 pm
για μεγαλύτερο patchsize πρεπει να παίρνεις καλύτερα αποτελέσματα?
εμένα δουλεύει καλύτερα για 3x3


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Andromedas on January 13, 2017, 20:58:14 pm
για μεγαλύτερο patchsize πρεπει να παίρνεις καλύτερα αποτελέσματα?
εμένα δουλεύει καλύτερα για 3x3
Δεν είμαι σίγουρος μπορείς να το τεστάρει και να μας πεις  :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 13, 2017, 21:22:02 pm
Δεν είμαι σίγουρος μπορείς να το τεστάρει και να μας πεις  :D
Στο original φαίνεται να παίρνει καλύτερα αποτελέσματα..
Η ερώτηση μου είναι αν το έχει καταφέρει κανένας.
Επίσης στο original όταν το τρέχεις για διαφορετικά patchSize, πρέπει να αλλάζεις και το patchSigma?
Έχουν σχέση μεταξύ τους;
patchSize = [3 3];
  patchSigma = 5/3;

Δλδ για [5 5] πρέπει να γίνει 5/5 , και [7 7] να γίνει 5/7? Η δεν έχουν σχέση;

επίσης είναι κανείς που έχει αρκετή Ram για να τρέξει το 256*256 χωρίς cuda, για να μας πει χρόνους :P? Δεν το επιτρέπει στο διάδη


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 13, 2017, 22:28:39 pm
Τους πίνακες Β, Η (αυτούς που έχει στον αλγόριθμό του στην matlab αναφέρομαι) που έχει τους πήρατε δεδομένους και υλοποιήσατε όλα τα αποκάτω ή δουλεύεται με τον πίνακα της εικόνας;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 14, 2017, 12:03:19 pm
Τους πίνακες Β, Η (αυτούς που έχει στον αλγόριθμό του στην matlab αναφέρομαι) που έχει τους πήρατε δεδομένους και υλοποιήσατε όλα τα αποκάτω ή δουλεύεται με τον πίνακα της εικόνας;

Εγώ προσπάθησα να χρησιμοποιήσω τον πίνακα B αλλα κουράστηκα γιατί δεν μου έβγαινε (μεγάλο μέγεθος, διαφορετικά μεγέθη πινάκων μεσα στο cuda kernel). Οπότε το υλοποίησα επεξεργάζοντας τον πίνακα J.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on January 14, 2017, 12:09:52 pm
Τους πίνακες Β, Η (αυτούς που έχει στον αλγόριθμό του στην matlab αναφέρομαι) που έχει τους πήρατε δεδομένους και υλοποιήσατε όλα τα αποκάτω ή δουλεύεται με τον πίνακα της εικόνας;
Εγώ προσωπικά δουλεύω απευθείας πάνω στον πίνακα της εικόνας,αλλά διαβάζοντας και τα παραπάνω αναρωτιέμαι αν ο πίνακας της εικόνας θα πρέπει να είναι 2D ή 3D,λογικά δεν θα πρέπει να είναι 2 διαστάσεων όπως και στο παράδειγμα και να γράψουμε το kernel πρόγραμμα ώστε να χειρίζεται δισδιάστατο πίνακα?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Aristos on January 14, 2017, 13:22:20 pm
το matlab χρησιμοποιεί μονοδιάστατους πίνακες για να αποθηκεύσει οποιονδήποτε πίνακα στη μνήμη. παίζεις απλά με τα indexes, όπως και στην δεύτερη εργασία


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: lodi on January 14, 2017, 13:55:30 pm
ξέρει κανένας να πει πώς θα κάνουμε debugging στον Διάδη την cuda στο matlab ?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 14, 2017, 15:15:22 pm
ξέρει κανένας να πει πώς θα κάνουμε debugging στον Διάδη την cuda στο matlab ?
γενικά το debugging ειναι δύσκολο γιατι δεν σου δίνει κατατοπιστικά errors. ειδικά στον διάδη θα πάρει πολύ ώρα...
το καλύτερο που εχεις να κάνεις είναι να βαζεις σε σχόλια σημεία του κώδικα και σιγά σιγά να βρεις το λάθος.
Όταν παίρνεις Cuda_error_illegal_adress χρειάζεται δυστυχώς να κάνεις restart το matlab.


Το κομμάτι με την shared memory το καταφερε κανεις;
Είναι πολύ μικρή για να χωρέσει ολόκληρο οποιονδήποτε πίνακα εικόνας...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: lodi on January 14, 2017, 19:21:58 pm
γενικά το debugging ειναι δύσκολο γιατι δεν σου δίνει κατατοπιστικά errors. ειδικά στον διάδη θα πάρει πολύ ώρα...
το καλύτερο που εχεις να κάνεις είναι να βαζεις σε σχόλια σημεία του κώδικα και σιγά σιγά να βρεις το λάθος.
Όταν παίρνεις Cuda_error_illegal_adress χρειάζεται δυστυχώς να κάνεις restart το matlab.


Το κομμάτι με την shared memory το καταφερε κανεις;
Είναι πολύ μικρή για να χωρέσει ολόκληρο οποιονδήποτε πίνακα εικόνας...

μπορείς να χρησιμοποιήσεις την τεχνική blocking για αυτό. Σπας τον πίνακα-εικόνα σε blocks και τα φορτώνεις ένα ένα στην shared memory όπου κάνεις την επεξεργασία


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 15, 2017, 13:17:07 pm
Ψάχνωντας για την γειτονιά κάθε σημείου, όταν αυτό βρίσκεται σε ακριανό σημείο τι πρέπει να κάνουμε για τους γείτονες που δεν υπάρχουν;
Εστω δλδ το Pixel (0,0) και γειτονια σημείων 3x3, μόνο τα (0,1),(1,0) και (1,1) υπάρχουν στην γειτονιά αυτή, για τα υπόλοιπα σημεία μπορούμε να κάνουμε κάτι; Αν τα βάλουμε 0 είναι λάθος γιατί το 0 αντιπροσωπεύει το μαύρο..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on January 15, 2017, 16:58:31 pm
Γιατί δεν δοκιμάζεις απλά να κάνεις σύγκριση με αντίστοιχου μεγέθους γειτονιές,εγώ έτσι το έχω κάνει δεν νομίζω να γίνεται με κάποιο άλλο τρόπο και το θεωρώ και πολύ λεπτομέρεια,εκτός και αν έχεις τελειώσει την εργασία και σου έχει μείνει αυτό :o :-\ ;)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 15, 2017, 17:06:15 pm
Γιατί δεν δοκιμάζεις απλά να κάνεις σύγκριση με αντίστοιχου μεγέθους γειτονιές,εγώ έτσι το έχω κάνει δεν νομίζω να γίνεται με κάποιο άλλο τρόπο και το θεωρώ και πολύ λεπτομέρεια,εκτός και αν έχεις τελειώσει την εργασία και σου έχει μείνει αυτό :o :-\ ;)
αυτό που λες απαιτεί να αποθηκεύσω όλες τις γειτονιές σε πίνακα , που είναι χρονοβόρο :P

Επίσης τι πράξη κάνετε μεταξύ των γειτόνων; Εννοώ πως ερμηνεύσατε τον τύπο του pdf |f(Ni)-f(Nj)|^2


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Vlassis on January 15, 2017, 17:12:06 pm
Ψάχνωντας για την γειτονιά κάθε σημείου, όταν αυτό βρίσκεται σε ακριανό σημείο τι πρέπει να κάνουμε για τους γείτονες που δεν υπάρχουν;
Εστω δλδ το Pixel (0,0) και γειτονια σημείων 3x3, μόνο τα (0,1),(1,0) και (1,1) υπάρχουν στην γειτονιά αυτή, για τα υπόλοιπα σημεία μπορούμε να κάνουμε κάτι; Αν τα βάλουμε 0 είναι λάθος γιατί το 0 αντιπροσωπεύει το μαύρο..
στο αρχειο matlab παντως που δινει, στην εικονα δημιουργει ενα pad γυρω γυρω, με τη συνάρτηση padarray
ίσως καλύπτεται από εκεί


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 15, 2017, 17:31:45 pm
Ψάχνωντας για την γειτονιά κάθε σημείου, όταν αυτό βρίσκεται σε ακριανό σημείο τι πρέπει να κάνουμε για τους γείτονες που δεν υπάρχουν;
Εστω δλδ το Pixel (0,0) και γειτονια σημείων 3x3, μόνο τα (0,1),(1,0) και (1,1) υπάρχουν στην γειτονιά αυτή, για τα υπόλοιπα σημεία μπορούμε να κάνουμε κάτι; Αν τα βάλουμε 0 είναι λάθος γιατί το 0 αντιπροσωπεύει το μαύρο..
Τα pixel που δεν υπάρχουν τα γεμίζει με τα συμμετρικά τους. Το θέμα είναι τι γίνεται στη πράξη ||f(Ni)-f(Nj)||^2 αυτό πρέπει να είναι τιμή λογικά, για να παίρνει όλη η παράσταση μια τιμή. 


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 15, 2017, 18:31:10 pm
Τα pixel που δεν υπάρχουν τα γεμίζει με τα συμμετρικά τους. Το θέμα είναι τι γίνεται στη πράξη ||f(Ni)-f(Nj)||^2 αυτό πρέπει να είναι τιμή λογικά, για να παίρνει όλη η παράσταση μια τιμή.  
εγώ έχω προσπαθήσει διάφορα πάνω σε αυτό, με τίποτα δεν παίρνω τα αποτελέσματα που έχει το original.
Code:
μέσος όρος διαφοράς
....
B[icenter*rows+jcenter]+=abs(J[(icenter+i)*rows+(jcenter+j)]-J[(xcenter+i)*rows+(ycenter+j)]);
...
B[icenter*rows+jcenter]=exp(-((B[icenter*rows+jcenter])/(z))/(filtSigma));



αποσταση πινακα γειτονιας απο μια αλλη
...
B[icenter*rows+jcenter]+=(J[(icenter+i)*rows+(jcenter+j)]-J[(xcenter+i)*rows+(ycenter+j)])*(J[(icenter+i)*rows+(jcenter+j)]-J[(xcenter+i)*rows+(ycenter+j)])
...
B[icenter*rows+jcenter]=exp(-sqrt(B[icenter*rows+jcenter])/(filtSigma));

μεσος ορος καθε περιοχης μειων μεσο ορο της αλλης περιοχης
...
mi+=J[(icenter+i)*rows+(jcenter+j)];
mx+=J[(xcenter+i)*rows+(ycenter+j)];
...
mi=mi/z;
mx=mx/z;
...
B[icenter*rows+jcenter]=exp(-(abs(mi-mx)*abs(mi-mx))/(filtSigma));


αν μπορεί κάποιος που ξέρει να εξηγήσει τι σημαίνει ο τύπος ||f(Ni)-f(Nj)||^2, του εύχομαι να περάσει 10/10 στην εξεταστική :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 15, 2017, 19:05:03 pm
εγώ έχω προσπαθήσει διάφορα πάνω σε αυτό, με τίποτα δεν παίρνω τα αποτελέσματα που έχει το original.
Code:
μέσος όρος διαφοράς
....
B[icenter*rows+jcenter]+=abs(J[(icenter+i)*rows+(jcenter+j)]-J[(xcenter+i)*rows+(ycenter+j)]);
...
B[icenter*rows+jcenter]=exp(-((B[icenter*rows+jcenter])/(z))/(filtSigma));



αποσταση πινακα γειτονιας απο μια αλλη
...
B[icenter*rows+jcenter]+=(J[(icenter+i)*rows+(jcenter+j)]-J[(xcenter+i)*rows+(ycenter+j)])*(J[(icenter+i)*rows+(jcenter+j)]-J[(xcenter+i)*rows+(ycenter+j)])
...
B[icenter*rows+jcenter]=exp(-sqrt(B[icenter*rows+jcenter])/(filtSigma));

μεσος ορος καθε περιοχης μειων μεσο ορο της αλλης περιοχης
...
mi+=J[(icenter+i)*rows+(jcenter+j)];
mx+=J[(xcenter+i)*rows+(ycenter+j)];
...
mi=mi/z;
mx=mx/z;
...
B[icenter*rows+jcenter]=exp(-(abs(mi-mx)*abs(mi-mx))/(filtSigma));


αν μπορεί κάποιος που ξέρει να εξηγήσει τι σημαίνει ο τύπος ||f(Ni)-f(Nj)||^2, του εύχομαι να περάσει 10/10 στην εξεταστική :D

Πολλαπλασίασε με τους παράγοντες του Gauss που έχει. Και επειδή έχεις ^2 νομίζω ίσως να μην χρειάζεται η ρίζα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 15, 2017, 19:09:41 pm
όταν λες παράγοντες Gauss ? το PatchSigma?

Πρέπει να έχεις δίκιο, αρχίζω και παίρνω καλύτερα αποτελέσματα :)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 15, 2017, 19:13:31 pm
Code:
% gaussian patch
  H = fspecial('gaussian',patchSize, patchSigma);
  H = H(:) ./ max(H(:));
Δεν βγαίνει τόσο ωραία όσο στην δικιά του υλοποίηση αλλά κάνει καλή δουλειά. Επίσης αν αλλάξεις τα σ γίνονται βελτιώσεις(ή όχι ανάλογα τι πειράζεις και πόσο)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 15, 2017, 19:25:18 pm
Code:
% gaussian patch
  H = fspecial('gaussian',patchSize, patchSigma);
  H = H(:) ./ max(H(:));
Δεν βγαίνει τόσο ωραία όσο στην δικιά του υλοποίηση αλλά κάνει καλή δουλειά. Επίσης αν αλλάξεις τα σ γίνονται βελτιώσεις(ή όχι ανάλογα τι πειράζεις και πόσο)
έχεις δίκιο βγάζει πολύ καλά αποτελέσματα έτσι. Είσαι ωραίος


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Terzos on January 15, 2017, 20:28:45 pm
Ας με διορθώσει κάποιος γτ εγώ αυτό κατάλαβα, και έχω διαφορετικά αποτελέσματα από τον δωσμένο αλγόριθμο:
1. πολλαπλασιάζουμε την αντίστοιχη περιοχή του pixel i,j με Gaussian με σ2=patchSigma και ύψος 1 (στοιχείο προς στοιχείο).
2. παίρνουμε την διαφορά όλων των pixel της περιοχής με το κεντρικό pixel i,j
3. πολλαπλασιάζουμε με 1/sum(διαφορών)
4. exp(-{του παραπάνω}2/filtSigma)
5. πολλαπλασιάζουμε το αποτέλεσμα με την περιοχή της εικόνας (στοιχείο προς στοιχείο).
6. το pixel i,j της τελικής εικόνας είναι το sum του παραπάνω.

edit: 3 και 4 ανάποδα but still


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 15, 2017, 20:34:58 pm
Ας με διορθώσει κάποιος γτ εγώ αυτό κατάλαβα, και έχω διαφορετικά αποτελέσματα από τον δωσμένο αλγόριθμο:
1. πολλαπλασιάζουμε την αντίστοιχη περιοχή του pixel i,j με Gaussian με σ2=patchSigma και ύψος 1 (στοιχείο προς στοιχείο).
2. παίρνουμε την διαφορά όλων των pixel της περιοχής με το κεντρικό pixel i,j
3. πολλαπλασιάζουμε με 1/sum(διαφορών)
4. exp(-{του παραπάνω}2/filtSigma)
5. πολλαπλασιάζουμε το αποτέλεσμα με την περιοχή της εικόνας (στοιχείο προς στοιχείο).
6. το pixel i,j της τελικής εικόνας είναι το sum του παραπάνω.

edit: 3 και 4 ανάποδα but still
Τι εννοείς εδώ ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Terzos on January 15, 2017, 20:58:18 pm
Πολλαπλασιάζουμε με 1/Z(i) όπου Z(i) είναι ουσιαστικά το άθροισμα αυτού που προκύπτει σε αυτό που γράφω ως 4


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: nikoscha on January 15, 2017, 23:16:23 pm
Η νόρμα f(Ni)-f(Nj) πως ακριβώς ορίζεται ; Είναι η διαφορά του μέσου όρου της κάθε γειτονιάς ή παίρνω την διαφορά κάθε σημείου της γειτονιάς ενα προς ενα ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 15, 2017, 23:49:34 pm
Η νόρμα f(Ni)-f(Nj) πως ακριβώς ορίζεται ; Είναι η διαφορά του μέσου όρου της κάθε γειτονιάς ή παίρνω την διαφορά κάθε σημείου της γειτονιάς ενα προς ενα ;
Εγώ το έκανα έτσι
Code:
((J[(icenter+ki)*rows+(jcenter+lj)]-J[(xcenter+kx)*rows+(ycenter+ly)])*(J[(icenter+ki)*rows+(jcenter+lj)]-J[(xcenter+kx)*rows+(ycenter+ly)]))
και έχω πολύ καλά αποτελέσματα.
J[(icenter+ki)*rows+(jcenter+lj)] =σημειο της γειτονιας του σημειου με index icenter*rows +jcenter
J[(xcenter+kx)*rows+(ycenter+ly)]=σημειο της γειτονιας του σημειου με index xcenter*rows +ycenter


το μονο θέμα είναι οτι δεν βγάζει καλύτερα αποτελέσματα για μεγαλύτερα patch ενώ στο original βγαζει,
δεν ξέρω αν είναι λάθος ο τύπος ή σωστος ..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 16, 2017, 00:24:30 am
Εγώ το έκανα έτσι
Code:
((J[(icenter+ki)*rows+(jcenter+lj)]-J[(xcenter+kx)*rows+(ycenter+ly)])*(J[(icenter+ki)*rows+(jcenter+lj)]-J[(xcenter+kx)*rows+(ycenter+ly)]))
και έχω πολύ καλά αποτελέσματα.
J[(icenter+ki)*rows+(jcenter+lj)] =σημειο της γειτονιας του σημειου με index icenter*rows +jcenter
J[(xcenter+kx)*rows+(ycenter+ly)]=σημειο της γειτονιας του σημειου με index xcenter*rows +ycenter


το μονο θέμα είναι οτι δεν βγάζει καλύτερα αποτελέσματα για μεγαλύτερα patch ενώ στο original βγαζει,
δεν ξέρω αν είναι λάθος ο τύπος ή σωστος ..

Αν παίξεις με τα σ όμως φτιάχνει. Επειδή δεν ξέρω πως επιλέγει τα σ δεν δίνω βάσει τόσο πολύ . Αν τα αλλάξεις παίρνεις καλύτερες/χειρότερες τιμές. Ο αλγόριθμος, φαντάζομαι, πρέπει να ναι σωστός.
Έχει κανείς καμία ιδέα για την shared memory; Υπάρχουν πουθενά παραδείγματα;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 16, 2017, 01:04:56 am
Αν παίξεις με τα σ όμως φτιάχνει. Επειδή δεν ξέρω πως επιλέγει τα σ δεν δίνω βάσει τόσο πολύ . Αν τα αλλάξεις παίρνεις καλύτερες/χειρότερες τιμές. Ο αλγόριθμος, φαντάζομαι, πρέπει να ναι σωστός.
Έχει κανείς καμία ιδέα για την shared memory; Υπάρχουν πουθενά παραδείγματα;
το εφτιαξα να δίνει καλύτερα αποτελέσματα για μεγαλύτερα Patch, τετραγωνίζοντας το παραπάνω αποτέλεσμα.

παραδείγματα πολλά δεν βρήκα αλλα κατάφερα να το κάνω με το σκεπτικό που ανέφερε ο Lodi, δλδ χωρίζεις την εικόνα σε κομμάτια αρκετα μικρά για να χωράνε στην shared Memory και καλείς τον kernel για οσα κομάτια δημιουργηθούν. Έχει τρομερά αποτελέσματα σε χρόνους. Ωστόσο γα μικρές εικόνες σε μένα φαίνονται κάτι γραμμές εκεί που χωρίζει το κάθε κομμάτι. Σε μεγάλες εικόνες κανένα θέμα..

στο cu file έβαλα
έξω απο την __global__
__shared__ float sharedJ[1024];
και μέσα

sharedJ[p*rows+q]=J[p*rows+q];
__syncthreads();
Και έπειτα χρησιμοποιώ αυτόν αντί του J


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 16, 2017, 01:22:34 am
Ναι κι εγώ αυτό σκεφτόμουν δεν ήξερα τι θα γίνει με τις γωνίες στα κομμάτια. Με το padding δεν στρώνει;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 16, 2017, 01:33:26 am
Ναι κι εγώ αυτό σκεφτόμουν δεν ήξερα τι θα γίνει με τις γωνίες στα κομμάτια. Με το padding δεν στρώνει;
τι εννοείς padding?  ;D ;D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 16, 2017, 01:43:45 am
Αυτό που κάνουμε με τις γειτονιές το f(Ni)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 16, 2017, 02:34:25 am
Αυτό που κάνουμε με τις γειτονιές το f(Ni)
σίγουρα βοηθάει, το έκανα οταν δεν υπάρχουν σημεία να παίρνει τα απέναντι αλλα πάλι φαίνονται μικρες γραμμές. Ωστόσο σε φωτογραφίες > 128*128 δεν φαίνεται κάτι..

ίσως το λάθος είναι δικό μου, αν κάποιος το καταφέρει χωρίς πρόβλημα ας ενημερώσει :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 16, 2017, 02:44:23 am
Εκεί που διαιρείς διά z(φαντάζομαι είναι το patchsize αυτό) βάλε και κάτι ακόμη >1 για να μικρύνεις των αριθμό


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 16, 2017, 04:05:10 am
Εκεί που διαιρείς διά z(φαντάζομαι είναι το patchsize αυτό) βάλε και κάτι ακόμη >1 για να μικρύνεις των αριθμό
Αυτοι οι τύποι ήταν ενδεικτικοί , ρωτούσα με ποιον θα είχαμε σωστά αποτελέσματα. Τελικά χρησιμοποιώ τον τύπο της απόστασης.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: protesla on January 17, 2017, 15:22:26 pm
Καλησπέρα παιδιά. Επειδή τα έχω μπερδέψει λιγάκι τι ακριβώς πρέπει να κάνουμε στην εργασία; Πρέπει να φτιάξουμε μόνο το cudaKernel σε C για τον υπολογισμό της f^ και τίποτα άλλο; Δηλαδή τον κώδικα στο αρχείο pipeline τον αφήνουμε ως έχει και αντί για τον non local means που έφτιαξε βάζουμε το δικό μας ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 17, 2017, 16:18:04 pm
Καλησπέρα παιδιά. Επειδή τα έχω μπερδέψει λιγάκι τι ακριβώς πρέπει να κάνουμε στην εργασία; Πρέπει να φτιάξουμε μόνο το cudaKernel σε C για τον υπολογισμό της f^ και τίποτα άλλο; Δηλαδή τον κώδικα στο αρχείο pipeline τον αφήνουμε ως έχει και αντί για τον non local means που έφτιαξε βάζουμε το δικό μας ;
εγώ αυτό έκανα. Δεν ξέρω κατα πόσο γίνεται να εκμεταλευτείς τον πίνακα B αν πράξεις διαφορετικά, γιατί το μέγεθός του είναι τεράστιο μετά απο ένα σημείο.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Vlassis on January 17, 2017, 16:53:34 pm
εγώ αυτό έκανα. Δεν ξέρω κατα πόσο γίνεται να εκμεταλευτείς τον πίνακα B αν πράξεις διαφορετικά, γιατί το μέγεθός του είναι τεράστιο μετά απο ένα σημείο.
συμφωνω, το ιδιο και απο εδω


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: protesla on January 17, 2017, 18:50:33 pm
Ευχαριστώ πολύ παιδιά! Και κάτι ακόμα, για τα pixels που βρίσκονται στις άκρες πως λειτουργούμε; Όπως στη δεύτερη εργασία ή απλώς θα θεωρήσουμε ότι υπάρχουν λιγότερα pixels στη γύρω γειτονιά;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Vlassis on January 17, 2017, 19:14:08 pm
Ευχαριστώ πολύ παιδιά! Και κάτι ακόμα, για τα pixels που βρίσκονται στις άκρες πως λειτουργούμε; Όπως στη δεύτερη εργασία ή απλώς θα θεωρήσουμε ότι υπάρχουν λιγότερα pixels στη γύρω γειτονιά;
για τα pixels στη γωνια εκανα αυτο με το padding που κανει στο matlab, δηλαδη δημιουργω οσα pixel χρειαζονται στο πλαι με mirroring και σκαναρω αυτα, αντι να σκαναρω το κενο ή το 0  ;)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: protesla on January 17, 2017, 19:34:21 pm
Ευχαριστώ πολύ! ;D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 17, 2017, 20:01:00 pm
Ευχαριστώ πολύ! ;D
νομίζω οτι το έκανα πολύ απλό το συγκεκριμένο αν σε βοηθάει.
αν θεωρήσουμε το το κεντρικό pixel είναι το J[icenter*rows+jcenter] τότε το J[(icenter+i)*rows+jcenter+j] είναι γειτονικό του (τα ι και j βρίσκονται μέσα στο όρια της γειτονιάς που ορίζουμε).
Τότε αν (icenter+i)>rows (δηλαδή έχουμε βγεί έξω απο τον πίνακα) τότε το icenter-i θα είναι <rows , δηλαδή παίρνεις το διαμετρικό του στην ιδια γραμμή.
Όμοια για <0.
Το ίδιο για για το jcenter+j...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: tpvagenas on January 18, 2017, 04:29:49 am
Προσπαθώ να τρέξω στον διάδη την cuda μόνο με global memory και μόνο με 3 συναρτήσεις (μια για το Β, μια για το Ζ,και μια για το τελικό) όταν εκτυπώνω στην matlab το αποτέλεσμα της feval φαίνεται καλό(float<1) όταν όμως χρησιμοποιώ gather βγαίνουν μηδενικά . Ξέρει κανείς γιατί συμβαίνει αυτο?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 18, 2017, 15:20:42 pm
Προσπαθώ να τρέξω στον διάδη την cuda μόνο με global memory και μόνο με 3 συναρτήσεις (μια για το Β, μια για το Ζ,και μια για το τελικό) όταν εκτυπώνω στην matlab το αποτέλεσμα της feval φαίνεται καλό(float<1) όταν όμως χρησιμοποιώ gather βγαίνουν μηδενικά . Ξέρει κανείς γιατί συμβαίνει αυτο?
Δεν είμαι σίγουρος αλλα ίσως χρειάζεται να έχεις το ίδο όνομα με τον πίνακα που θέλεις να πάρεις πίσω, δηλαδή If=gather(feval(k,J,If,....));
Επίσης δοκίμασε μήπως κάνεις κάπου μέσα στον Kernel λάθος, δλδ αν πχ τα νούμερα που υψόνονται στο e^(-tade) είναι πολύ μεγάλα τότε ο πίνακας θα επιστρέφει μηδενικός.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 18, 2017, 15:29:25 pm
έχει κανείς να μου στείλει εικόνες .mat για 128 256 γιατί δεν μπορώ να φτιάξω


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: protesla on January 18, 2017, 17:14:40 pm
Here!!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 18, 2017, 17:17:06 pm
Ναι σε .mat πως φτιάχνω εικόνα;
Και γενικά το θέμα μου είναι ότι όλες παίρνουν τιμές >1 εμείς θέλουμε να έχουν από [0,1]


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: protesla on January 18, 2017, 17:25:25 pm
https://www.mathworks.com/help/images/ref/mat2gray.html
Βρήκα αυτό.Ίσως βοηθήσει.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: protesla on January 18, 2017, 17:27:28 pm
Για να την διαβάσω από MATLAB χρησιμοποιώ την imread function και μετα τον πίνακα που βγάζει με την mat2gray(). Για τη μετατροπή σε .mat δεν είδα ακόμη.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 18, 2017, 17:35:58 pm
Thanks αυτό πρέπει να κάνει την δουλειά.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 18, 2017, 17:38:56 pm
Ναι σε .mat πως φτιάχνω εικόνα;
Και γενικά το θέμα μου είναι ότι όλες παίρνουν τιμές >1 εμείς θέλουμε να έχουν από [0,1]

Code:
chameleon= imread('chameleon.jpg');
chameleon = rgb2gray(chameleon);
chameleon=im2double(chameleon);
save('chameleon.mat', 'chameleon');
όπου chameleon άλλαξε στο όνομα της φώτο. πρέπει να είναι όλα ίδια (τουλάχιστον στο save).
Αν η εικόνα είναι ήδη grayscale παραλείπεις την δεύτερη εντολή.

Επίσης αν βοηθάει κανέναν για να βρώ το καλύτερο filtsigma χρησιμοποίησα αυτό.
Code:
fprintf('PSNR : %0.3f dB    filtSigma : %0.5f \n',PSNR,filtSigma);
 
  if q==0
      maxpeak=0;
  else
      if PSNR>maxpeak
          maxpeak=PSNR;
          bestfiltsigma=filtSigma;
      end
  end
  if filtSigma<0.11
      filtSigma=filtSigma+0.001;
      q=q+1;
      pipeline_non_local_means
  end
to PSNR υπολογίζεται απο το PSNR = psnr(If, I) , όσο μεγαλύτερο τόσο πιο όμοια η εικόνα με την αρχική.
Για να χρησιμοποιήσεις το παραπάνω εννοείται σβήνεις το clear all , όλα όσα εμφανίζουν εικόνες, kai θέτεις ενα αρχικό filtSigma και q=0


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 18, 2017, 20:43:54 pm
Έστειλα στο Φλώρο μέιλ για παράταση μέχρι το τέλος της εξεταστικής ή έστω κάποιες μέρες ακόμα.. Στείλτε όποιος άλλος θέλει μπας και τους πείσουμε γιατί δεν παλεύεται... :o


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 18, 2017, 21:40:51 pm
Θα στείλω κι εγώ . Btw ρε παιδιά αν ήταν κανείς σήμερα μάθημα. Κατάλαβε πως βγάζουμε την νόρμα γιατί με μπέρδεψε.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: magemenos pigasos on January 18, 2017, 21:48:28 pm
νομιζω αφαιρείς το pixel της γειτωνιας αναφοράς με το αντίστοιχο της γειτωνιας που διερευνας και υψώνεις το αποτέλεσμα στο τετράγωνο και πολλαπλασιαζεις αυτό με το αντίστοιχο του αντίστοιχου gaussian πινακα. και μετα αυτά τα προσθετεις και εφαρμόζεις τον υπόλοιπο τυπο.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 18, 2017, 22:51:21 pm
Μου είπε ότι δεν μπορεί να πάρει και άλλη παράταση γιατί δε θα προλάβουν να τα διορθώσουν μέχρι το τέλος της εξεταστικής... Καλό λιώσιμο λοιπόν!  ;)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 18, 2017, 22:53:47 pm
Επίσης καταλάβατε τι ακριβώς ήταν αυτό που έλεγε ο Πιτσιάνης με την έξτρα for που ίσως βάλουμε, για να μη χειρίζεται το κάθε thread μόνο ένα pixel?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: magemenos pigasos on January 18, 2017, 23:05:37 pm
pls καποιος που το εκανε να μας πει ενδεικτικες τιμες για το fιltsigma που χρησιμοποιησε..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 19, 2017, 00:06:52 am
pls καποιος που το εκανε να μας πει ενδεικτικες τιμες για το fιltsigma που χρησιμοποιησε..
Δεν θα βρεις άκρη, εμένα βγαίνει κοντά στο 0,02^2, κατα την διάρκει όμως είχα και πολύ μικρότερες τιμές αλλα και μεγαλύτερες.
Εχει να κανει με τις πράξεις που έκανες


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 19, 2017, 00:12:01 am
νομιζω αφαιρείς το pixel της γειτωνιας αναφοράς με το αντίστοιχο της γειτωνιας που διερευνας και υψώνεις το αποτέλεσμα στο τετράγωνο και πολλαπλασιαζεις αυτό με το αντίστοιχο του αντίστοιχου gaussian πινακα. και μετα αυτά τα προσθετεις και εφαρμόζεις τον υπόλοιπο τυπο.
είπε αν πρέπει για μεγαλύτερο PatchSize να παίρνουμε καλύτερα αποτελέσματα;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on January 20, 2017, 02:07:09 am
Μια επιπλέον ερώτηση και απο εμένα,στο μάθημα είπε αν θέλει κάτι το ιδιαίτερο ας πούμε έκανε κάποιο σημαντικό σχόλιο το οποίο μπορεί να συγκράτησε κάποιος και να το αναφέρει και εδώ,πχ κάποια παρατήρηση πάνω στον τρόπο που θα γίνει η παραλληλοποιηση.Αυτό που θέλει εν τέλει είναι να φτιάξουμε την συνάρτηση nonLocalmean να την τρέξουμε σειριακά μετά να την τρέξουμε στην gpu και τέλος,είπε τίποτα για βελτιστοποίηση και τέτοια ή απλά θέλουμε να πάρουμε καλύτερους χρόνους.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 20, 2017, 03:54:37 am
Μια επιπλέον ερώτηση και απο εμένα,στο μάθημα είπε αν θέλει κάτι το ιδιαίτερο ας πούμε έκανε κάποιο σημαντικό σχόλιο το οποίο μπορεί να συγκράτησε κάποιος και να το αναφέρει και εδώ,πχ κάποια παρατήρηση πάνω στον τρόπο που θα γίνει η παραλληλοποιηση.Αυτό που θέλει εν τέλει είναι να φτιάξουμε την συνάρτηση nonLocalmean να την τρέξουμε σειριακά μετά να την τρέξουμε στην gpu και τέλος,είπε τίποτα για βελτιστοποίηση και τέτοια ή απλά θέλουμε να πάρουμε καλύτερους χρόνους.
είπε οτι πρέπει να φτιάξουμε δικιά μας Nonlocalmeans σειριακή?  ^superconfused^
με την υλοποίηση που μας δίνουν δεν φτάνει να την συγκρίνουμε;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on January 20, 2017, 14:13:11 pm
είπε οτι πρέπει να φτιάξουμε δικιά μας Nonlocalmeans σειριακή?  ^superconfused^
με την υλοποίηση που μας δίνουν δεν φτάνει να την συγκρίνουμε;
Εγώ έτσι έχω καταλάβει,ξέρω γω δεν πρέπει να έχουμε την ίδια υλοποίηση κώδικα και στην cpu και στην gpu και να συγκρίνεις τους χρόνους,θα συγκρίνουμε τους χρόνους διαφορετικών υλοποιήσεων?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 20, 2017, 15:05:10 pm
Εγώ έτσι έχω καταλάβει,ξέρω γω δεν πρέπει να έχουμε την ίδια υλοποίηση κώδικα και στην cpu και στην gpu και να συγκρίνεις τους χρόνους,θα συγκρίνουμε τους χρόνους διαφορετικών υλοποιήσεων?
Έχεις αιρετά να κάνεις γιατί να θέλουν και σειριακό αλγόριθμο που τον έχουν υλοποιήσει είδη. Ίσα Ίσα είπαν για 256χ256 επειδή ο σειριακός δεν τρέχει δεν τους πειράζει να έχουμε μόνο τα αποτελέσματα της gpu (αρκεί στα μικρότερα μεγέθη να φαίνεται ότι βελτιώνεται ο χρόνος όσο μεγαλώνει ο πίνακας )

Δυναμική δέσμευση μνήμης για τις shared μεταβλητές πως γίνεται; Το kernel το καλούμε από matlab και δεν δέχεται τις extern __shared__ μεταβλητές ο nvcc (δεν έχουμε κάπου δήλωση για δέσμευση μνήμης).


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 20, 2017, 16:07:21 pm
Έχεις αιρετά να κάνεις γιατί να θέλουν και σειριακό αλγόριθμο που τον έχουν υλοποιήσει είδη. Ίσα Ίσα είπαν για 256χ256 επειδή ο σειριακός δεν τρέχει δεν τους πειράζει να έχουμε μόνο τα αποτελέσματα της gpu (αρκεί στα μικρότερα μεγέθη να φαίνεται ότι βελτιώνεται ο χρόνος όσο μεγαλώνει ο πίνακας )

Δυναμική δέσμευση μνήμης για τις shared μεταβλητές πως γίνεται; Το kernel το καλούμε από matlab και δεν δέχεται τις extern __shared__ μεταβλητές ο nvcc (δεν έχουμε κάπου δήλωση για δέσμευση μνήμης).
αρχικά σπας τον πίνακα σε αρκετά μικρά κομμάτια ωστε να χωράνε στην shared memory, ας πουμε 32x32 η 64x64. και έπειτα καλείς τον πυρήνα για όλεσ τις υποεικόνες.
μέσα στον κερνελ θεωρείς τις shared μεταβλητές σου ας πουμε __shared__ float sharedJ[1024]; και τους δίνεις τιμή μέσα στην global, ας πουμε sharedJ[p*rows+q]=J[p*rows+q]. Έπειτα χρησιμοποιείς τις shared αντι του κανονικού πίνακα..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: protesla on January 21, 2017, 00:23:44 am
Παιδιά όταν μπαίνω στο διάδη και κάνω make μου βγάζει τα ορίσματα που δέχεται ο kernel απ το matlab undefined Πως να κάνω το make?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on January 21, 2017, 03:19:46 am
Παιδιά όταν μπαίνω στο διάδη και κάνω make μου βγάζει τα ορίσματα που δέχεται ο kernel απ το matlab undefined Πως να κάνω το make?
Το matlab χειρίζεται double οπότε αν στο kernel έχεις ορίσει float χρησιμοποίησε την μετατροπή Α=single(A) του πίνακα που εισάγεις για να γίνει float.Επίσης πρόσεχε μέσα στο kernel τον πίνακα που εισάγεις για να διαβαστεί να τον έχεις ως const* const όπως στο παράδειγμα sample_kernel για να σου επιστρέψει σωστά αποτελέσματα.Τέλος οι πίνακες που εισάγεις πρέπει να είναι της gpu οπότε ίσως και η εντολή A=gpuArray(A) ίσως σου χρειαστεί κάπου.

Edit: Ναι τώρα κατάλαβα την ερώτηση σου,σε εμένα έβγαινε τέτοιο μήνυμα σφάλματος όταν έβαζα στην ίδια συνάρτηση σε διαφορετικά σημεία του κώδικα διαφορετικά-λάθος ορίσματα,οπότε ίσως είναι αυτό.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on January 21, 2017, 03:49:54 am
Λοιπόν διαβάζονταν και τα σχόλια παραπάνω θα ήθελα να ρωτήσω σχετικά με τον θέμα στον διαμοιρασμό των μεγάλων εικόνων.Έχω κάνει μία υλοποίηση στην οποία όπως ειπώθηκε και παραπάνω χωρίζω την εικόνα σε υπο-εικόνες και καλώ τον πυρήνα για την κάθε μία σαν να ήταν η μοναδική και παίρνω πολύ καλά αποτελέσματα και σε χρόνο και σε εικόνα,το θέμα είναι όμως ότι με τον αλγόριθμο non local mean θα πρέπει να συνυπολογίσουμε όλα τα pixel τις εικόνας για να προκύψει η νέα τιμή του pixel,κάτι που απαιτεί να αντιγράψουμε και τα άλλα κομμάτια του πίνακα και να επαναλάβουμε την διαδικασία και γενικά μπλέκει αρκετά ο κώδικας από εκεί και έπειτα,και με μια προσπάθεια που έκανα για υλοποίηση οι χρόνοι είναι αρκετά χειρότερη.Ξέρετε αν έχει ειπωθεί κάτι σχετικό,είναι σωστό να ελέγχουμε τα κομμάτια της εικόνας ανεξάρτητα από τα άλλα,τι συμπέρασμα έχετε βγάλει;   


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 21, 2017, 15:16:41 pm
Παιδιά όταν μπαίνω στο διάδη και κάνω make μου βγάζει τα ορίσματα που δέχεται ο kernel απ το matlab undefined Πως να κάνω το make?
πρέπει να ορίσεις όλες τις συναρτήσεις που χρησιμοποιείς πάνω απο την global.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: protesla on January 21, 2017, 19:06:08 pm
Ευχαριστώ παιδιά! Για έναν ανεξήγητο λόγο όταν εισάγω τον πίνακα της Gaussian με το όνομα H δεν δουλεύει αλλά με οποιοδήποτε άλλο είναι μια χαρά!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Terzos on January 22, 2017, 02:25:03 am
Έχει κανείς πρόβλημα με την cudaMemcpy για αντιγραφή από την GPU στην CPU? (DeviceToHost)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 22, 2017, 02:33:51 am
Έχει κανείς πρόβλημα με την cudaMemcpy για αντιγραφή από την GPU στην CPU? (DeviceToHost)
για να την χρησιμοποιήσεις πρέπει να την καλείς απο κάποια άλλη συνάρτηση που δεν είναι στην gpu. Δηλαδή δεν μπορείς να την καλέσεις μέσα απο τον __global__ kernel σου.. Δεν ξέρω τι προσπαθείς να κάνεις αλλά την δουλεία αυτή την κάνεις μέσω matlab με τις εντολές gpuArray() και gather()


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Terzos on January 22, 2017, 02:47:27 am
για να την χρησιμοποιήσεις πρέπει να την καλείς απο κάποια άλλη συνάρτηση που δεν είναι στην gpu. Δηλαδή δεν μπορείς να την καλέσεις μέσα απο τον __global__ kernel σου.. Δεν ξέρω τι προσπαθείς να κάνεις αλλά την δουλεία αυτή την κάνεις μέσω matlab με τις εντολές gpuArray() και gather()

Θέλω να χρησιμοποιήσω την reduce6 από εδώ: http://developer.download.nvidia.com/compute/cuda/1.1-Beta/x86_website/projects/reduction/doc/reduction.pdf
και προσπάθησα αρκετά αλλά δεν κατάφερα να την τρέξω μέσω matlab, για αυτό και γράφω main. Την cudaMemcpy την τρέχω μέσα στην main.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Terzos on January 22, 2017, 14:42:49 pm
Έχει κανείς πρόβλημα με την cudaMemcpy για αντιγραφή από την GPU στην CPU? (DeviceToHost)

Το έλυσα. Έχει extern __shared__ και έπρεπε να δηλώσω πόσο μνήμη χρειάζομαι.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fibonacci on January 22, 2017, 19:53:46 pm
Για τον υπολογισμό των  Z(i)  και w(i,j) χρησιμοιποιήσε κανείς πίνακες που αποθηκεύονται στη μνήμη της GPU ; Αν μπορεί κανείς να δώσει ένα στοιχείο για τον τρόπο χειρισμού αυτών των πινάκων . Επίσης για τον την καταγραφή των γειτονιών είναι λογικό να φτιάξω έναν global ή και shared 3D πίνακα που για κάθε (i,j) κρατά την γειτονιά του ;

Ευχαριστώ


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Terzos on January 24, 2017, 01:14:55 am
Code:
Error using gpuArray/gather
An unexpected error occurred during CUDA execution. The CUDA error was:
CUDA_ERROR_ILLEGAL_ADDRESS

Κανείς άλλος;

εδιτ: και μερικές φορές +αυτό:
Code:
Error in dispInternal>iTransferPortionDense (line 36)
data = gather( subsref( x, s ) );

Error in parallel.internal.shared.buildDisplayHelper>iFirstNNumericDisplayHelper (line 72)
        maybeTruncatedValue = transferDenseFcn( x, rangeStruct );

Error in parallel.internal.shared.buildDisplayHelper>iBuildDisplayHelper (line 33)
    dh = iFirstNNumericDisplayHelper( ...

Error in parallel.internal.shared.buildDisplayHelper (line 24)
    dh = iBuildDisplayHelper( x, transferDenseFcn, transferSparseFcn, xClassName, xName, N );

Error in dispInternal (line 13)
    dh = parallel.internal.shared.buildDisplayHelper( ...

Error in gpuArray/display (line 21)
dh = dispInternal( obj, thisClassName, objName );


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Vlassis on January 24, 2017, 01:16:19 am
Error using gpuArray/gather
An unexpected error occurred during CUDA execution. The CUDA error was:
CUDA_ERROR_ILLEGAL_ADDRESS

Κανείς άλλος;
μου το εβγαζε οταν εβγαινα εκτος πινακα σε καποιον απο τους πινακες που περναω με gpuArray
μετα απο αυτο, σιγουρα restart το matlab, δεν θα σταματησει να το βγαζει αλλιως


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Terzos on January 24, 2017, 02:33:00 am
Και γω το ίδιο έκανα τελικά. Ουφ.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 24, 2017, 11:49:04 am
Μου τρέχει κανονικά, αλλά στο residual όλα τα pixel είναι πολύ αχνά, οπότε φαντάζομαι ότι αφαιρεί μεν θόρυβο αλλά όχι τόσο "έντονα". Ξέρετε τι μπορεί να φταίει γι'αυτό; (shared δεν έχω κάνει ακόμα)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Terzos on January 24, 2017, 18:46:00 pm
Τι χρόνους πέρνετε για εικόνα 256x256; Εγώ 3-4 δευτερόλεπτα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Vlassis on January 24, 2017, 18:52:21 pm
Τι χρόνους πέρνετε για εικόνα 256x256; Εγώ 3-4 δευτερόλεπτα
για patchSize 3 εκει γυρω και εγω ναι, για μεγαλυτερο patchSize αυξανεται λιγο


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 25, 2017, 20:35:51 pm
Τι χρόνους πέρνετε για εικόνα 256x256; Εγώ 3-4 δευτερόλεπτα
Πως ρε παιδιά 3-4 δευτερόλεπτα; Το καλύτερο που έχω πετύχει είναι 13 sec για patchSize =[3 3]


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: tpvagenas on January 25, 2017, 23:49:12 pm
Τα τμήματα για την shared memory τα στέλνεται μέσω matlab? αν ναι ποια είναι η βασική ιδέα?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 26, 2017, 00:51:40 am
Πως ρε παιδιά 3-4 δευτερόλεπτα; Το καλύτερο που έχω πετύχει είναι 13 sec για patchSize =[3 3]
Εγώ χωρίς shared memory για 256x256 και 3x3 παίρνω 8,3sec.
Με shared memory 1,3 sec.


Τα τμήματα για την shared memory τα στέλνεται μέσω matlab? αν ναι ποια είναι η βασική ιδέα?
Η ιδέα που ακολούθησα αλλα ίσως είναι λάθος είναι ότι, αρχικά σπας τον πίνακα J σε μικρότερα κομμάτια και για κάθε ένα απο αυτά καλείς τον cuda Kernel. έπειτα ενώνεις όλους τους υποπίνακες σε έναν και παίρνεις το αποτέλεσμα.
Τα κομμάτια πρέπει να χωράνε στην shared memory και τα αναθέτεις μέσα στον kernel, δλδ δηλώνεις εναν shared πινακα γνωστού μεγέθους(οσό και το μέγεθος του κάθε κομματιού) και έπειτα του δινεις τιμές απο τον εκάστοτε υποπινακα J. Τελος χρησιμοποιείς τον shared πινακα αντι του εκάστοτε υποπινακα J.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: dimigoug on January 26, 2017, 15:07:33 pm
Ξέρουμε αν πρέπει οι πίνακες να είναι οπωσδήποτε float ή αν μπορούμε και double? και ποιο είναι καλύτερο?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 26, 2017, 15:41:01 pm
Ξέρουμε αν πρέπει οι πίνακες να είναι οπωσδήποτε float ή αν μπορούμε και double? και ποιο είναι καλύτερο?
με float πινακες θα έχεις ίσως καλύτερους χρόνους και σίγουρα μικρότερη χρήση μνήμης, και αφού ζητάει float... :)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: fanaks on January 26, 2017, 16:03:22 pm
Εγώ πάντως που το έκανα και με float και με double δεν είδα κάποια διαφορά,αν και τελικά χρησιμοποίησα float μίας και το ζητάει.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: tpvagenas on January 26, 2017, 18:09:21 pm
Μπορεί κάποιος να μου πει πως μπορώ με 32*32 threads να γεμίζω τον shared πίνακα που είναι 36*36 (για την περίπτωση του patchSIze=5 μαζί με το padding)?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 26, 2017, 22:16:12 pm
Τη shared memory πώς την κάνατε; Δε ρωτάω τις λεπτομέρειες, απλώς: καλέσατε πολλές φορές τον kernel για κάθε υποεικόνα ή καλέσατε μία φορά τον kernel και  φορτώνατε μια υποεικόνα στη shared, τη δουλεύατε και μετά φορτώνατε την επόμενη κλπ; Και γιατί προτιμήσατε το συγκεκριμένο τρόπο;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Terzos on January 27, 2017, 16:49:37 pm
Τι χρόνους πέρνετε για εικόνα 256x256; Εγώ 3-4 δευτερόλεπτα
Δεν έτρεχα σωστά τον αλγόριθμο.

Το matlab μου βγάζει:
Invalid size input to kernel ThreadBlockSize. You must provide a vector of up to 3 positive
integers whose product is <= 512. The maximum value in each dimension is: [1024,1024,64].
Error in test_256 (line 29)
step1.ThreadBlockSize = [32 32 1];
 ^crap^

Χθες το δεχόταν κανονικά, έτυχε και σε κανάν άλλον;
edit: Έχει σχέση με το .cu που κάνω compile. Η διαφορά του καθενός είναι το patchSize που χρησιμοποιείται...
Για 3x3 με αφήνει κανονικά 1024 threads, για 5x5 704 και τέλος για 7x7 512...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: sideoner on January 27, 2017, 17:21:09 pm
Έχει κανείς ενδεικτικές τιμές για τα error που βγάζει το sanity check? Η σύγκριση υποτίθεται πρέπει να γίνει μεταξύ της εξόδου της pipeline_non_local_means και της δικής μας εκτέλεσης.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 27, 2017, 19:14:40 pm
Δεν έτρεχα σωστά τον αλγόριθμο.

Το matlab μου βγάζει:
Invalid size input to kernel ThreadBlockSize. You must provide a vector of up to 3 positive
integers whose product is <= 512. The maximum value in each dimension is: [1024,1024,64].
Error in test_256 (line 29)
step1.ThreadBlockSize = [32 32 1];
 ^crap^

Χθες το δεχόταν κανονικά, έτυχε και σε κανάν άλλον;
edit: Έχει σχέση με το .cu που κάνω compile. Η διαφορά του καθενός είναι το patchSize που χρησιμοποιείται...
Για 3x3 με αφήνει κανονικά 1024 threads, για 5x5 704 και τέλος για 7x7 512...

και σε μενα σημερα δεν το δεχοταν αλλα δεν ασχοληθηκα πολυ (δεν εκανα πολλες δοκιμες).. τωρα τι εκανε τις αλλες μερες δεν ξερω, γιατι το ετρεχα στο pc μου..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 27, 2017, 21:07:56 pm
Δεν έτρεχα σωστά τον αλγόριθμο.

Το matlab μου βγάζει:
Invalid size input to kernel ThreadBlockSize. You must provide a vector of up to 3 positive
integers whose product is <= 512. The maximum value in each dimension is: [1024,1024,64].
Error in test_256 (line 29)
step1.ThreadBlockSize = [32 32 1];
 ^crap^

Χθες το δεχόταν κανονικά, έτυχε και σε κανάν άλλον;
edit: Έχει σχέση με το .cu που κάνω compile. Η διαφορά του καθενός είναι το patchSize που χρησιμοποιείται...
Για 3x3 με αφήνει κανονικά 1024 threads, για 5x5 704 και τέλος για 7x7 512...
έχει να κάνει με το μέγεθος των πινάκων που χρησιμοποιείς. Και εγώ το είχα αυτό το πρόβημα, αν και δεν ξέρω αν δημιουργεί θέμα στην ταχύτητα . Ίσως να δημιουργεί περισσότερες non coalesed κλίσεις, αφού έχεις περισσότερα Blocks.

Το πρόβλημα ίσως δημιουργείτε επειδή μέσα σε κάποια συνάρτηση δημιουργείς πίνακες μεγέθους 9,15,47. Επειδή τις συναρτήσεις τις καλούνε πάρα πολλά thread, δημιουργούνται, πάρα πολλοί πίνακες..

Έχει κανείς ενδεικτικές τιμές για τα error που βγάζει το sanity check? Η σύγκριση υποτίθεται πρέπει να γίνει μεταξύ της εξόδου της pipeline_non_local_means και της δικής μας εκτέλεσης.
εγώ psnr ανάμεσα στην filtered και την Original εικονας, θεωρώντας αποδεκτές τις τιμές κοντά σε αυτές που έχουν τα ανάλογα αποτελέσματα του δοθέν προγράμματος.
εσύ τι ακριβώς εννοείς ως sanity check..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: sideoner on January 27, 2017, 21:43:06 pm
εγώ psnr ανάμεσα στην filtered και την Original εικόνας, θεωρώντας αποδεκτές τις τιμές κοντά σε αυτές που έχουν τα ανάλογα αποτελέσματα του δοθέν προγράμματος.
εσύ τι ακριβώς εννοείς ως sanity check..

Το ίδιο πράμα με την psnr ας πούμε. Η ερώτηση ήταν αν πρέπει να γίνει η σύγκριση μεταξύ αρχικής με την φιλτραρισμένη της δικιάς μας εκτέλεσης, ή μεταξύ της εξόδου της pipeline_non_local_mean με τη δικιά μας έξοδο? Και επίσης τι τάξης μεγέθους είναι το αποτέλεσμα (σε κάθε περίπτωση) ?


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 28, 2017, 00:22:28 am
Psnr πως υπολογίζεται; και τι χρόνους βγάζετε τελικά με shared memory;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 28, 2017, 03:05:18 am
Psnr πως υπολογίζεται; και τι χρόνους βγάζετε τελικά με shared memory;
peaksnr = psnr(A,ref,peakval)
το Α είναι ο πίνακας σου, το ref αυτό που θες να συγκρίνεις και to peakval είναι 1-256, ανάλογα τις τιμές που παίρνουν τα pixel.. σε μας to peakval πρέπει να είναι 1 (grayscale).

Εγώ θεωρώ πως το ref πρέπει να είναι η αρχική εικόνα.




Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Terzos on January 28, 2017, 04:55:37 am
Psnr πως υπολογίζεται; και τι χρόνους βγάζετε τελικά με shared memory;

Εγώ στον diades βγάζω:
patchSize =   [3 3]   |   [5 5]   |   [7 7]
time64     = 0.0148  | 0.0266 | 0.0455
time128   = 0.2492  | 0.4213 | 0.7231
time256   = 3.6797  | 6.7580 | 11.6534

ΥΓ: Έχω κρατήσει σειριακό τον υπολογισμό τον τιμών των γειτονιών


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 28, 2017, 14:03:27 pm
Τι τιμές είναι αποδεκτές στο PSNR;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 28, 2017, 14:35:45 pm
Τι τιμές είναι αποδεκτές στο PSNR;
Γιατί δεν δοκιμάζεις να δείς στο αρχικό, που μας έδωσαν, τις τιμές;
Γενικά θεωρώ το ελαχιστο 30. (με την προυπόθεση οτι το Peakval=1)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 28, 2017, 14:59:54 pm
Δεν έτρεχα σωστά τον αλγόριθμο.

Το matlab μου βγάζει:
Invalid size input to kernel ThreadBlockSize. You must provide a vector of up to 3 positive
integers whose product is <= 512. The maximum value in each dimension is: [1024,1024,64].
Error in test_256 (line 29)
step1.ThreadBlockSize = [32 32 1];
 ^crap^

Χθες το δεχόταν κανονικά, έτυχε και σε κανάν άλλον;
edit: Έχει σχέση με το .cu που κάνω compile. Η διαφορά του καθενός είναι το patchSize που χρησιμοποιείται...
Για 3x3 με αφήνει κανονικά 1024 threads, για 5x5 704 και τέλος για 7x7 512...
Τελικά κατάφερες να το κάνεις να τρέξει; έχω κι εγώ τώρα το ίδιο πρόβλημα :/
Όχι ότι με χαλάνε οι χρόνοι για 16 x16 threads.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 28, 2017, 15:13:43 pm
Τελικά κατάφερες να το κάνεις να τρέξει; έχω κι εγώ τώρα το ίδιο πρόβλημα :/
Όχι ότι με χαλάνε οι χρόνοι για 16 x16 threads.
το πρόβλημα είναι στην υλοποίηση, αν αποτελεί και πρόβλημα.

Κάπου έχετε ορίσει μέσα σε μια συνάρτηση πίνακα. οποτε δημιουργούνται εξαρχείς όλοι αυτοί οι πίνακες, ενας για κάθε thread. Για αυτό σε περιορίζει τόσο στον αριθμό των threads.

Τουλάχιστον αυτό συνέβαινε όταν είχα εγώ αυτό το θέμα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 28, 2017, 15:17:01 pm
Έχω έναν constant shared πίνακα η αλήθεια είναι αλλά τόσο θέμα...
Θα τον αλλάξω να δω τι παίζει.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 28, 2017, 15:22:09 pm
Έχω έναν constant shared πίνακα η αλήθεια είναι αλλά τόσο θέμα...
Θα τον αλλάξω να δω τι παίζει.
αν τον δημιουργείς μέσα στην συνάρτηση σκέψου οτι θα δημιουργηθεί για 16χ16 threads σε κάθε Block !
Επίσης αν κάνεις διαχωρισμό ανάλογα με το size, δλδ αν size=3,size=5,size=7 δημιουργείς άλλο πίνακα, νομίζω ότι δημιουργούνται εξαρχής όλοι οι πίνακες( μπορεί και όχι). Αν κάνεις τέτοιο διαχωρισμό ίσως είναι καλύτερα να κρατήσεις μόνο τον 7x7 πίνακα και απλά να χρησιμοποιείς μόνο τα κελιά που σου χρειάζονται.
Δεν ξέρω αν επιρεάζει τον χρόνο ωστόσο..


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: lodi on January 29, 2017, 01:36:53 am
<<Σχεδίαση και περιγραφή τεχνητής εισόδου, για έλεγχο ορθότητας>>. Τι εννοεί ο ποιητής ;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Terzos on January 29, 2017, 05:27:59 am
<<Σχεδίαση και περιγραφή τεχνητής εισόδου, για έλεγχο ορθότητας>>. Τι εννοεί ο ποιητής ;

Εγώ έφτιαξα μια εικόνα στο paint που έχει κάποια πολύ απλά ασπρόμαυρα patterns/textures και πρόσθεσα gaussian θόρυβο και δείχνω πως η αρχική πληροφορία δεν χάνεται, όπως θα γινόταν με ένα κανονικό φίλτρο, ενώ ο θόρυβος μειώνεται.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 29, 2017, 11:53:13 am
Εγώ έφτιαξα μια εικόνα στο paint που έχει κάποια πολύ απλά ασπρόμαυρα patterns/textures και πρόσθεσα gaussian θόρυβο και δείχνω πως η αρχική πληροφορία δεν χάνεται, όπως θα γινόταν με ένα κανονικό φίλτρο, ενώ ο θόρυβος μειώνεται.
Δεν αρκεί να πάρουμε μια έτοιμη εικόνα, να την κάνουμε ασπρόμαυρη και να δούμε τα αποτελέσματα; Και εγώ την είχα αυτή την απορία, αλλά θεώρησα ότι μάλλον αυτό θα εννοεί


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 29, 2017, 12:37:16 pm
Δεν αρκεί να πάρουμε μια έτοιμη εικόνα, να την κάνουμε ασπρόμαυρη και να δούμε τα αποτελέσματα; Και εγώ την είχα αυτή την απορία, αλλά θεώρησα ότι μάλλον αυτό θα εννοεί
Μάλλον αυτό εννοεί


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Vlassis on January 29, 2017, 19:45:07 pm
<<Σχεδίαση και περιγραφή τεχνητής εισόδου, για έλεγχο ορθότητας>>. Τι εννοεί ο ποιητής ;

Quote from: fcdimitr@auth.gr
Να σχεδιάσετε μία είσοδο μέσω MATLAB (με 0 και 1 πχ) στην οποία θα προσθέσετε θόρυβο και αναμένετε το αποτέλεσμα να είναι ίδιο με την αρχική. Η κατανομή των 0 και 1 πρέπει να αποφασισθεί από εσάς.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 29, 2017, 20:23:17 pm
σοβαρά τώραα..?! τι άλλο θα ζητήσουν πια...?!  >:(


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 29, 2017, 20:50:25 pm
Πήγε μέχρι Τετάρτη πρωί! ;)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: kaspas on January 29, 2017, 21:59:57 pm
Θα τον πειράξει δηλαδή αν του αραδιάσουμε 3-4 διαφορετικές φωτογραφίες;
Το ίδιο πράγμα είναι ...


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Επικο Burger on January 29, 2017, 23:32:05 pm
Πήγε μέχρι Τετάρτη πρωί! ;)

Προσοχή, άλλαξε πάλι!
Καταληκτική ημερομηνία υποβολών: Δευτέρα, 30 Ιανουάριος 2017, 12:00 μμ (tomorrow)


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 30, 2017, 00:06:04 am
Προσοχή, άλλαξε πάλι!
Καταληκτική ημερομηνία υποβολών: Δευτέρα, 30 Ιανουάριος 2017, 12:00 μμ (tomorrow)
Ναι και εγώ μόλις το είδα! τι τραγικός που είναι ρε.. μ αυτά τα μπρος πίσω μας αλλάζει συνεχώς το πρόγραμμα.. >:(


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ditroo on January 30, 2017, 00:11:54 am
Μπορεί κάποιος να μου εξηγήσει παραπάνω τι ακριβώς θέλει να κάνουμε επιπλέον στο δεύτερο ζητούμενο;
Να φτιάξουμε εμείς μια εικόνα από 0 και 1 να της βάλουμε θόρυβο και μετά αυτήν την εικόνα με το θόρυβο να την συγκρίνουμε με την original εικόνα;;;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Επικο Burger on January 30, 2017, 02:07:50 am
Ναι και εγώ μόλις το είδα! τι τραγικός που είναι ρε.. μ αυτά τα μπρος πίσω μας αλλάζει συνεχώς το πρόγραμμα.. >:(

LOL μας τρολλαρουν? Καταληκτική ημερομηνία υποβολών: Τετάρτη, 1 Φεβρουάριος 2017, 11:55 μμ (3 days left)  :D  :D  :D


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 30, 2017, 02:19:51 am
LOL μας τρολλαρουν? Καταληκτική ημερομηνία υποβολών: Τετάρτη, 1 Φεβρουάριος 2017, 11:55 μμ (3 days left)  :D  :D  :D
:o :o :o
Ψυχολογικός πόλεμος! Όπως και να 'χει μη χαρείτε και πολύ, δεν ξέρουμε τι μπορεί να ξαναγίνει!


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Andromedas on January 30, 2017, 03:13:37 am
Ρώτησα τον Φλώρο για τον έλεγχο με φωτογραφίες μου είπε ότι δεν υπάρχει πρόβλημα. Εγώ θα τις συμπεριλάβω βάλω κιόλας στην αναφορά.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Aristos on January 30, 2017, 22:39:13 pm
Από όσους σπάνε την εικόνα και εφαρμόζουν τον αλγόριθμο σε κάθε κομμάτι, ρώτησε κανείς τον Πιτσιάνη αν θεωρείται αποδεκτή αυτή η λύση; Ρωτάω γιατί αυτός δεν είναι ο αλγόριθμος που ορίζεται στο pdf της εκφώνησης, αλλά από την άλλη δεν έχω καταφέρει ακόμα να τρέξω τον κανονικό για 128x128 και πάνω (δε φτάνει με τίποτα η μνήμη :( ). Επίσης, το έχει καταφέρει αυτό κανείς; Κάποιο τιπ μήπως;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 30, 2017, 23:13:22 pm
Από όσους σπάνε την εικόνα και εφαρμόζουν τον αλγόριθμο σε κάθε κομμάτι, ρώτησε κανείς τον Πιτσιάνη αν θεωρείται αποδεκτή αυτή η λύση; Ρωτάω γιατί αυτός δεν είναι ο αλγόριθμος που ορίζεται στο pdf της εκφώνησης, αλλά από την άλλη δεν έχω καταφέρει ακόμα να τρέξω τον κανονικό για 128x128 και πάνω (δε φτάνει με τίποτα η μνήμη :( ). Επίσης, το έχει καταφέρει αυτό κανείς; Κάποιο τιπ μήπως;
έχεις δίκιο στο ότι δεν είναι απόλυτα ορθός ο τρόπος, καθώς θεωρητικά ο nlm χρησιμοποιεί ολόκληρη την εικόνα, ενώ αμα την σπάσεις σε κομμάτια θεωρείται το κάθε κομμάτι αυτόνομη εικόνα. Στην θέση σου δεν θα έσκαγα πολύ όμως, έχουν μείνει και μικρά περιθώρια διορίας..
Εγώ το έκανα με την μέθοδο αυτή που κατακερματίζεις την εικόνα, τα οπτικά αποτελέσματα είναι σχεδόν ίδια χωρίς τον κατακερματισμό της. Μικρή διαφορά έχουν εώς 128χ128 εικόνες όπου φαίνονται μικρή διαφορά χρωμάτων σε κάποια τετραγωνάκια.
Σε μεγαλύτερες εικόνες δεν υπάρχει αυτό το θέμα ωστόσο.


Edit : ανέβασα και foto χωρίς κατακερματισμό


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Ροζ συννεφάκι on January 30, 2017, 23:24:07 pm
Από όσους σπάνε την εικόνα και εφαρμόζουν τον αλγόριθμο σε κάθε κομμάτι, ρώτησε κανείς τον Πιτσιάνη αν θεωρείται αποδεκτή αυτή η λύση; Ρωτάω γιατί αυτός δεν είναι ο αλγόριθμος που ορίζεται στο pdf της εκφώνησης, αλλά από την άλλη δεν έχω καταφέρει ακόμα να τρέξω τον κανονικό για 128x128 και πάνω (δε φτάνει με τίποτα η μνήμη :( ). Επίσης, το έχει καταφέρει αυτό κανείς; Κάποιο τιπ μήπως;
Μιλάς για υλοποίηση με shared ή χωρίς; Γιατί στη global σίγουρα χωράει ολόκληρη η εικόνα και η επεξεργασία της γίνεται χωρίς προβλήματα και γρήγορα κιόλας.. εσύ καλείς πολλές φορές τον kernel, μία για κάθε τμήμα; και ποιο είναι το πρόβλημα στη γενική λύση;


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Andromedas on January 30, 2017, 23:28:55 pm
Από όσους σπάνε την εικόνα και εφαρμόζουν τον αλγόριθμο σε κάθε κομμάτι, ρώτησε κανείς τον Πιτσιάνη αν θεωρείται αποδεκτή αυτή η λύση; Ρωτάω γιατί αυτός δεν είναι ο αλγόριθμος που ορίζεται στο pdf της εκφώνησης, αλλά από την άλλη δεν έχω καταφέρει ακόμα να τρέξω τον κανονικό για 128x128 και πάνω (δε φτάνει με τίποτα η μνήμη :( ). Επίσης, το έχει καταφέρει αυτό κανείς; Κάποιο τιπ μήπως;
Ναι το κατάφερα καλά χωρίς την χρήση shared αλλά με την χρήση της shared memory έχω κάποιο σφάλμα  και μου βγάζει ποικίλα αποτελέσματα  :D.
Η λογική η δικιά μου είναι να περνάω τις padded εικόνες πχ 256x256 με 3x3 γίνεται 258x258. Στην συνέχεια το σπάω το πρόβλημα σε κάθε κλήση του kernel από ένα μέχρι τάδε pixel πχ 0 μέχρι 255 επόμενη κλήση 256 μέχρι 511 κλπ. Όταν τελειώσει ο βρόγχος έχουν γίνει όλες οι συγκρίσεις. Αλλά δύο μέρες δούλευα το indexing οπότε δεν ξέρω εάν προλαβαίνεις. Επίσης αυτή η προσέγγιση είναι τόσο δύστροπη που μόλις άλλαξα σε shared memory το έκανα από την αρχή...  
/εδιτ οι χρόνοι είναι από το pc μου όχι από τον διάδη οπότε μην τους δίνεται και πολύ σημασία


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: ReMi0s on January 30, 2017, 23:44:45 pm
Από όσους σπάνε την εικόνα και εφαρμόζουν τον αλγόριθμο σε κάθε κομμάτι, ρώτησε κανείς τον Πιτσιάνη αν θεωρείται αποδεκτή αυτή η λύση; Ρωτάω γιατί αυτός δεν είναι ο αλγόριθμος που ορίζεται στο pdf της εκφώνησης, αλλά από την άλλη δεν έχω καταφέρει ακόμα να τρέξω τον κανονικό για 128x128 και πάνω (δε φτάνει με τίποτα η μνήμη :( ). Επίσης, το έχει καταφέρει αυτό κανείς; Κάποιο τιπ μήπως;
Ο κανονικός δεν πρόκειτε να τρέξει για πάνω απο 128x128 αν δεν αλλάξεις ρυθμίσεις του Matlab που να το επιτρέπουν, αλλα και ο υπολογιστής σου να έχει πάρα πολύ ram >16GB. Δεν ξέρω αν γίνεται να χρησιμοποιηθεί η εικονική μνήμη.

Γενικά ο κώδικας που μας έδωσε δεν τρέχει καθώς ο πίνακας B όταν γίνει τετραγωνικος ( εντολή squareform(pdist(B)) ) είναι πάρα πολύ μεγάλος γιατί στην ουσία περιέχει την ευκλείδεια απόσταση κάθε σημείου με όλα τα υπόλοιπα. Μην ακολουθήσεις αυτή την λογική ενός τεράστιου πίνακα.


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Aristos on January 31, 2017, 01:26:37 am
η εικόνα χωράει. ο Ν^4 πίνακας με τα βάρη (γιά κάθε pixel με κάθε pixel) δεν χωράει. βασικά χωράει στην shared άμα σπάσει αλλά επειδή δεν έχεις συγχρονισμό μεταξύ blocks δε μπορείς να αθροίσεις μετά. και δε μπορεις να συγχρονίζεις με κλήσεις πολλών kernels γιατί τότε χάνεται η shared. επίσης, έχω την εντύπωση πως χωράει στη shared μόνο και μόνο επειδή διαφορετικά blocks μπορέι να εκτελεστούν στον ίδιο επεξεργαστή το ένα μετά το άλλο άρα ταυτόχρονα δε γίνεται για κανένα λόγο να τον έχεις κάπου.

@Andromedas κάτι τέτοιο σκεφτόμουν και εγώ αλλά για τον πίνακα με τα βάρη, να υπάρχει ένας μόνο σχετικά μικρός στην global και να χρησιμοποιείται ξανά και ξανά. το αν θα προλάβω είναι άλλο ερώτημα


Title: Re: [Παράλληλα και Διανεμημένα Συστ.] Εργασια 3
Post by: Andromedas on January 31, 2017, 02:21:06 am
@Andromedas κάτι τέτοιο σκεφτόμουν και εγώ αλλά για τον πίνακα με τα βάρη, να υπάρχει ένας μόνο σχετικά μικρός στην global και να χρησιμοποιείται ξανά και ξανά. το αν θα προλάβω είναι άλλο ερώτημα

Μάλλον εννοείς τον [n^2 x patchsize^2] οποίος είναι όντως τεράστιος.
Έχοντας αυτήν την προσέγγιση μπορείς έχεις 2 μικρούς πίνακες πχ για τα 7x7 x 32 = 1568 bytes κάθε γραμμή
μπορείς να έχεις 16x16 threads άρα 401k Bytes περίπου ο ένας
περισσότερα threads αυξάνουν το μέγεθος απαγορευτικά.
Οπότε περνάς δύο πίνακες ο ένας είναι τα pixel που θα αποθηκευτούν τελικά ο άλλος τα pixel της περιοχής που γίνεται η διαφορά άρα χρειάζεσαι δύο loop
 ο εξωτερικός βρόγχος ανανεώνει τον πίνακα με τα pixel που αποθηκεύονται και ο  εσωτερικός βρόγχος τα pixel που συγκρίνονται. Πχ για εικόνα 64x64 με τα παραπάνω μεγέθη : θα χρειαστείς 16 εξωτερικές και 16 εσωτερικές επανάληψης. Οι οποίες είναι πολλές όμως μπορείς να χρησιμοποιήσεις την δομή φορτώνω kernel φορτώνω επόμενη μνήμη περιμένω να ολοκληρωθεί η μεταφορά μνήμης περιμένω kernel επόμενη επανάληψη για να καλύπτεται ο χρόνος φόρτωσης μνήμης. Τώρα δεν ξέρω άμα βοήθησα αλλά είναι μια ιδέα.

ps τα blockDim τα έχω σε δυνάμεις του δύο για αυτό μου βγαίνουν απαγορευτικά τα μεγέθη. Μάλλον μπορείς να αυξήσεις το μέγεθος...