62 #ifdef HAVE_SACADO_CXX11
103 int(NUM_SUMMARY_OPS) );
106 totalFlopCount = 0.0;
112 for (
int i=0; i<NUM_OPS; i++) {
113 flopCounts[i] += static_cast<double>(partialFlopCounts[i]);
114 partialFlopCounts[i] = 0;
116 for (
int i=0; i<NUM_SUMMARY_OPS; i++) {
117 summaryFlopCounts[i] += static_cast<double>(partialSummaryFlopCounts[i]);
118 partialSummaryFlopCounts[i] = 0;
121 for (
int i=0; i<NUM_OPS; i++)
122 totalFlopCount += flopCounts[i];
129 if (partialFlopCounts[ft] > flopGranularity) {
130 flopCounts[ft] += static_cast<double>(partialFlopCounts[ft]);
131 partialFlopCounts[ft] =0;
133 if (partialSummaryFlopCounts[sft] > flopGranularity) {
134 summaryFlopCounts[sft] +=
135 static_cast<double>(partialSummaryFlopCounts[sft]);
136 partialSummaryFlopCounts[sft] = 0;
138 ++partialFlopCounts[ft];
139 ++partialSummaryFlopCounts[sft];
147 return SUMMARY_ASSIGN;
154 return SUMMARY_PLUS_MINUS;
156 case MULTIPLY_ASSIGN:
157 return SUMMARY_MULTIPLY;
160 return SUMMARY_DIVIDE;
165 #ifdef HAVE_SACADO_CXX11
182 return SUMMARY_NONLINEAR;
184 case GREATER_THAN_EQUAL:
186 case LESS_THAN_EQUAL:
188 return SUMMARY_COMPARISON;
195 return SUMMARY_ASSIGN;
205 assert(
n >= 1 && names && abbr && counts );
208 const char spacero[] =
"----------";
209 const char spacerc[] =
"--------------------";
212 out <<
"\nLegend\n------\n";
213 for(
int j = 0; j <
n; ++j )
214 out <<
" " << abbr[j] <<
" = " << names[j] << std::endl;
218 out << std::left <<
" " << std::setw(wo) <<
"op\\count";
219 for(
int j = 0; j <
n; ++j ) out <<
" " << std::setw(wc) << abbr[j];
221 out << std::right <<
" " << std::setw(wo) << spacero;
222 for(
int j = 0; j <
n; ++j ) out <<
" " << std::setw(wc) << spacerc;
226 double theseFlops = 0;
227 for(
int j = 0; j <
n; ++j ) theseFlops += counts[j].flopCounts[i];
230 for(
int j = 0; j <
n; ++j ) out <<
" " << std::setw(wc) << counts[j].
flopCounts[i];
234 out << std::right <<
" " << std::setw(wo) << spacero;
235 for(
int j = 0; j <
n; ++j ) out <<
" " << std::setw(wc) << spacerc;
238 std::vector<double> totalFlops(
n);
240 double theseFlops = 0;
241 for(
int j = 0; j <
n; ++j ) {
244 totalFlops[j] += flops;
248 for(
int j = 0; j <
n; ++j )
253 out << std::right <<
" " << std::setw(wo) << spacero;
254 for(
int j = 0; j <
n; ++j ) out <<
" " << std::setw(wc) << spacerc;
257 out <<
" " << std::setw(wo) <<
"all flops";
258 for(
int j = 0; j <
n; ++j ) out <<
" " << std::setw(wc) << totalFlops[j];