J'essaie d'utiliser OpenMP pour un projet interne de base de données pour améliorer les performances. J'ai besoin du temps d'exécution (j'utilise omp_get_wtime()
) pour être enregistré dans le dossier car il n'y a aucun moyen que je puisse imprimer n'importe quoi à la console de ce programme. S'il vous plaît suggérer s'il existe un meilleur moyen. J'ai essayé d'écrire dans un seul fichier à partir de tous les threads (voir le code ci-dessous), mais cela plante quand le nombre de threads est supérieur à un. S'il vous plaît aider. Merci d'avance.Comment enregistrer les différences wtime dans un fichier à partir de plusieurs threads dans OpenMP?
FILE *fp = NULL;
fp = fopen("/home/fopen.txt","a");
...
omp_set_num_threads(2);
fprintf(fp,"Num of threads: %d\n",omp_get_num_threads());
#pragma omp parallel default(shared) private(tid)
{
tid = omp_get_thread_num();
#pragma omp critical
fprintf(fp,"ThreadID of this thread is %d\n",tid);
:
:
}
if (fp != NULL)
fclose(fp);
Configurer un tableau pour les temps d'enregistrement, chaque thread écrit dans un élément du tableau (indexé par numéro de thread). Une fois que la région parallèle a le thread actif restant, écrivez le tableau dans le fichier. Si vous parvenez à trier l'écriture parallèle dans un seul fichier, vous finirez seulement ici en vous plaignant que les écritures ne sont pas ordonnées comme vous le souhaitez ... –
Merci. Il semble que cette approche fonctionne pour moi. – Phaniarnab
Pourquoi n'écrivez-vous pas la réponse à votre question et ne l'acceptez pas. –