Πέμπτη, 6 Ιουλίου 2023 - 4:58 μ.μ.
- από τον χρήστη Χατζηδούκας Παναγιώτης

"The short answer is that it has no impact on printf, and denotes (the) use of float or double in scanf."

https://stackoverflow.com/questions/25860850/what-is-the-difference-between-f-and-lf-in-c

Σχόλια (0)
Κυριακή, 15 Μαΐου 2022 - 10:50 μ.μ.
- από τον χρήστη Χατζηδούκας Παναγιώτης

Η επιλογή της γεννήτριας (ψευδό-)τυχαιών αριθμών εξαρτάται κυρίως από τις ανάγκες της εφαρμογής, δηλαδή πόσους τυχαίους αριθμούς χρειάζεται συνολικά αλλά και πόσες ανεξάρτητες ακολουθίες είναι απαραίτητες (π.χ. όταν έχουν παράλληλους υπολογισμούς).
 
Μερικές από τις καλύτερες γεννήτριες είναι οι ακόλουθες: 
α) Mersenne-Twister, με μια αποδοτική υλοποίησή εδώ: http://www.math.sci.hiroshima-u.ac.jp/m-mat/MT/SFMT/#SFMT. Μάλιστα η γεννήτρια είναι διαθέσιμη στη C++: https://stackoverflow.com/question
 ... [περισσότερα] Σχόλια (0)
Παρασκευή, 6 Μαΐου 2022 - 6:16 μ.μ.
- από τον χρήστη Χατζηδούκας Παναγιώτης

Η υλοποίηση της εντολή atomic του OpenMP μπορεί να βασίζεται στις ακόλουθες ατομικές εντολές του GCC compiler: 
https://gcc.gnu.org/onlinedocs/gcc/_005f_005fatomic-Builtins.html

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

pthread_mutex_lock(&mutex);
sum++;
pthread_mutex_unlock(&mutex);
__atomic_fetch_add(&sum, 1, __ATOMIC_SEQ_CST);

Ο ισόδυναμος κώδικας της δεύτερης περίπτωσης με OpenMP: 

#pragma omp atomic
sum++;
Σχόλια (0)
Δευτέρα, 21 Μαρτίου 2022 - 5:19 μ.μ.
- από τον χρήστη Χατζηδούκας Παναγιώτης

Μία καλή σύνοψη είναι στην απάντηση εδώ: 
https://stackoverflow.com/questions/12392278/measure-time-in-linux-time-vs-clock-vs-getrusage-vs-clock-gettime-vs-gettimeof

Στο αρχείο timer.c των παραδειγμάτων, η συνάρτηση get_wtime() χρησιμοποιεί την gettimeofday και επιστρέφει το wall-clock time ως double. 
Μια άλλη δυνατή υλοποίηση είναι με χρήση της συνάρτησης clock_gettime().  

 

 

 

Σχόλια (0)
Παρασκευή, 18 Μαρτίου 2022 - 2:14 μ.μ.
- από τον χρήστη Χατζηδούκας Παναγιώτης

Με μια μικρή διόρθωση σε έναν συντελεστή (0.2 αντί 0.5) σε σχέση με αυτό που είδαμε στο μάθημα ώστε να δίνει ίδιο αποτέλεσμα. 

 
Οπότε από αυτό εδώ (με 5 εντολές με -O3 και 4 εντολές με -O3 -mfma): 

double d = 5.0*a + 10.0*b;
double e = 0.2*(d + c);

Σε αυτό εδώ, με 2 εντολές FMA:  
double d = a + 2.0*b;
double e = d + 0.2*c;
Αναλυτικά εδώ:  https://godbolt.org/z/r11eMc91x

 

Σχόλια (0)
Πέμπτη, 17 Μαρτίου 2022 - 12:02 π.μ.
- από τον χρήστη Χατζηδούκας Παναγιώτης

Σχόλια (0)
Παρασκευή, 5 Μαρτίου 2021 - 5:01 μ.μ.
- από τον χρήστη Χατζηδούκας Παναγιώτης

First, you must download the Cygwin installer (setup-x86_64.exe) from here: http://cygwin.com/install.html

Run the Cygwin installer and select/install the necessary software packages.

In general, you need development tools such as the GNU compilers (C/C++), make, openmpi, etc.

For example, to have MPI support you must install everything related to openmpi (you can use the search option of the installer).
In the end, you must be able to execute mpicc and mpirun from the command prompt of Cygwin.

Y

 ... [περισσότερα] Σχόλια (0)