Parallelisieren von for Schleifen mit OpenMP



  • Hallo,

    ich habe in meinem Programm viele for-Schleifen, die ich mit OpenMP parallelisieren will.
    Das klapt auch recht gut, nur bei einer Art von Schleichen gibt es Probleme:

    #pragma omp parallel for
    for (int i=bixel_map[blenden[freiheitsgrade[parameter].blende].get_beam()][blenden[freiheitsgrade[parameter].blende].get_start(freiheitsgrade[parameter].y)][freiheitsgrade[parameter].y][0]; 
    i<=bixel_map[blenden[freiheitsgrade[parameter].blende].get_beam()][blenden[freiheitsgrade[parameter].blende].get_start(freiheitsgrade[parameter].y)][freiheitsgrade[parameter].y][1]; i++)
    {	
    dosis_matrix[kernel_voxel[i]]+=gewicht*kernel_dosis[i];
    }
    

    Ok, das ist jetzt ein bischen unübersichtlich 🙂
    Aber es ist einfach nur eine for-schleife mit etwa 500 - 10000 Durchläufen.
    Je nachdem.
    Sowas parallelisiert er aber wunderbar:

    #pragma omp parallel for
    for (int c=0;  c<dim; c++){
    	if (dosis_matrix[c] !=0){
    		dosis_matrix[c]=dosis_matrix[c]*gewicht/gewicht_alt;
    	}	
    }
    

    Kann es sein, dass OpenMP Probleme damit hatt, dass ich die Anzahl der durchläufe
    so "kompliziert" zusammenbastel?
    Oder woran könnte das noch liegen?

    Danke,
    Moritz



  • ja.


Anmelden zum Antworten