0
이것은 신경망에서 역 전파 알고리즘 코드의 일부입니다.동적 배열 병렬 처리
우리가 for (pt = 0; pt < N_PT_pair; pt ++) 루프를 병렬 처리하려면 for (epoch = 0; epoch < MaxEpoch, epoch ++)를 병렬 처리 할 수 없습니다.
initialize W1[ ] [ ] and W2[ ][ ] with random values
for(epoch=0; epoch<MaxEpoch; epoch++)
dW1[ ][ ]=0.0; dW2[ ][ ]=0.0; //sum of weight corrections
sse = 0; // Sum of square of errors
for(pt=0; pt<N_PT_pair; pt++)
input = pattern[pt];
compute output // procedure as above
compare target[pt] and output and
compute dW2[ ][ ] += ... // procedure to be described
compute dW1[ ][ ] += ... // procedure to be described
for(k=1; k<=Noutput; k++)
sse+=pow((target[pt][k]-output[k]),2);
end pt for loop
cout << "mean square error" << sse/N_PT_pair;
W1[ ][ ] += rate*dW1[ ][ ]
W2[ ][ ] += rate*dW2[ ][ ]
end epoch for loop
이는 우리가 코드를 병렬화 할 수 있습니다 배열
double** allocate_matrix(int rows,int cols)
{
double **a;
a = new double*[rows];
if(a==NULL){cout<<"matrix allocation failed"<<endl;exit(-1);}
for (int j=0;j<rows;j++){
a[j] = new double[cols];
if(a[j]==NULL) {cout<<"matrix allocation failed"<<endl;exit(-1);}
}
return a;
}
int deallocate_matrix(double**a,int rows)
{
for(int i=0;i<rows;i++)
delete [] a[i];
delete [ ] a;
return 0;
}
를 할당하고 할당 해제에 대한 코드는? 내부 루프의 반복은 하나의 독립적 인 경우
'new'는'NULL'을 반환하지 않습니다. 그것은'std :: bad_alloc'을 던집니다. 더 많은 importabtly, 어떤 병렬 처리 라이브러리를 사용하고 있습니까? – MSalters