Inserire risultati numero matrice*id in vettore b

di Anonimizzato28823 il
3 risposte
Salve ragazzi, se qualcuno di buon cuore potesse darmi un aiuto per fare questo semplice programma in c gliene sarei davvero grato.
Ho scritto questo programma di calcolo parallelo in c semplicissimo.
Nel programma mi viene chiesto per ogni numero del vettore a, di fare il prodotto per il relativo id(thread). I thread devono essere 6.
(infatti ho inserito omp_set_num_threads(6)prima della direttiva #pragma)

#include<stdio.h>
#include<stdlib.h>
#include<omp.h>
#include<unistd.h>
int main()
{
	int a[6], b[6];
	int i, j;
	printf("Inserire i numeri:\n");
	for(i=0; i<6; i++)
	{
		scanf("%d", &a[i]);
	}
	printf("\n");
	omp_set_num_threads(6);
	#pragma omp parallel for shared(a,b) private(i) schedule(dynamic)
	for(i=0; i<6; i++)
	{
		b[i]=a[i]*omp_get_thread_num();
		sleep(i);
		printf("ID: %d - NUMERO: %d - PRODOTTO= %d .\n", omp_get_thread_num(), a[i], b[i]);
	}
return 0;
}
Il programma funziona bene.
Ora dovrei fare la stessa cosa però con una matrice a, e inserire i risultati in un vettore b(o matrice b).
Potrei anche inserire il risultato in una variabile prodotto, ma sto impazzendo non ci riesco...
Ho problemi con il ciclo for annidato, ho provato mille volte ma non riesco...
Come posso fare??Vi prego aiutatemiiiiiiiii

3 Risposte

  • Mostra quello che vuoi fare con la matrice nel codice normale, così si capisce cosa fare con omp
  • Weierstrass sono riuscito a risolvere, ho inserito la matrice di riferimento in un vettore e ho svolto il programma più facilmente come quello suddetto scritto da me.
    Grazie mille lo stesso.
  • Va bene.

    Stai attento, però, che la programmazione parallela serve ad accorciare i tempi di esecuzione: se devi modificare i dati a monte per risolvere, allora vai nella direzione opposta
Devi accedere o registrarti per scrivere nel forum
3 risposte