I'm building a distance matrix on which each row represent a point and each column is the distance between this point and all the other points in the data and my algorithm works very fine in the sequentially. However, when I try to parallelize it I get segmentation fault error.The following is my code for parallel where dat is a map that contain all my data. Any help here will be highly appreciated.
map< int,string >::iterator datIt; map< int,string >::iterator datIt2; map <int, map< int, double> > dist; int mycont=0; datIt=dat.begin(); int size=dat.size(); #pragma omp parallel //construct the distance matrix { #pragma omp for for(int i=0;i<size;i++) { datIt2=dat.find((*datIt).first); datIt2++; while(datIt2!=dat.end()) { double ecl=0; int c=count((*datIt).second.begin(),(*datIt).second.end(),delm)+1; string line1=(*datIt).second; string line2=(*datIt2).second; for (int i=0;i<c;i++) { double num1=atof(line1.substr(0,line1.find_first_of(delm)).c_str()); line1=line1.substr(line1.find_first_of(delm)+1).c_str(); double num2=atof(line2.substr(0,line2.find_first_of(delm)).c_str()); line2=line2.substr(line2.find_first_of(delm)+1).c_str(); ecl += (num1-num2)*(num1-num2); } ecl=sqrt(ecl); dist[(*datIt).first][(*datIt2).first]=ecl; dist[(*datIt2).first][(*datIt).first]=ecl; datIt2++; } datIt++; } }