Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
ix
operator*(constEMatrix&a,constEMatrix&b)
constautoa_cols=a.GetCols();
constautoa_rows=a.GetRows();
constautob_cols=b.GetCols();
constautob_rows=b.GetRows();
assert(a_cols==b_rows);
c(a_rows,b_cols,0.0);
ompparallelfor\
shared(a,b,c,a_rows,b_cols,a_cols)\
default(none)\
schedule(static)
//Onlytheoutermostloopwillbemadeparallel
for(Dimar=0;ar<a_rows;++ar)
for(Dimbc=0;bc<b_cols;++bc)
for(Dimac=0;ac<a_cols;++ac)
c[ar][bc]+=a[ar][ac]*b[ac][bc];
EMatrix
#pragma
returnc;
autoCreateRandomVector(constintkFrom,constintkTo,constintkNumOfTrials)
std::random_devicerd;
std::mt19937mtRandomEngine(rd());
std::uniform_int_distributionuni_distr(kFrom,kTo);
std::vector<int>
random_decimals;
std::generate_n(back_inserter(random_decimals),kNumOfTrials,
[&](){returnuni_distr(mtRandomEngine);});
returnrandom_decimals;