You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
272 lines
8.0 KiB
272 lines
8.0 KiB
/*
|
|
* Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
|
* of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
|
* NTESS, the U.S. Government retains certain rights in this software.
|
|
*
|
|
* See packages/seacas/LICENSE for details
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
|
|
/* Timing parameters. */
|
|
|
|
double start_time = -1;
|
|
double total_time = 0;
|
|
double input_time = 0;
|
|
double partition_time = 0;
|
|
double sequence_time = 0;
|
|
double kernel_time = 0;
|
|
double reformat_time = 0;
|
|
double check_input_time = 0;
|
|
double count_time = 0;
|
|
double print_assign_time = 0;
|
|
|
|
double coarsen_time = 0;
|
|
double match_time = 0;
|
|
double make_cgraph_time = 0;
|
|
|
|
double lanczos_time = 0;
|
|
double splarax_time = 0;
|
|
double orthog_time = 0;
|
|
double ql_time = 0;
|
|
double tevec_time = 0;
|
|
double ritz_time = 0;
|
|
double evec_time = 0;
|
|
double blas_time = 0;
|
|
double init_time = 0;
|
|
double scan_time = 0;
|
|
double debug_time = 0;
|
|
double pause_time = 0;
|
|
|
|
double rqi_symmlq_time = 0;
|
|
double refine_time = 0;
|
|
|
|
double kl_total_time = 0;
|
|
double kl_init_time = 0;
|
|
double nway_kl_time = 0;
|
|
double kl_bucket_time = 0;
|
|
|
|
double inertial_time = 0;
|
|
double inertial_axis_time = 0;
|
|
double median_time = 0;
|
|
|
|
double sim_time = 0;
|
|
|
|
void time_out(FILE *outfile /* file to print output to */
|
|
)
|
|
{
|
|
FILE * tempfile; /* file name for two passes */
|
|
extern int ECHO; /* parameter for different output styles */
|
|
extern int OUTPUT_TIME; /* how much timing output should I print? */
|
|
double time_tol; /* tolerance for ignoring time */
|
|
double other_time; /* time not accounted for */
|
|
int i; /* loop counter */
|
|
|
|
time_tol = 0.005;
|
|
|
|
for (i = 0; i < 2; i++) {
|
|
if (i == 1) { /* Print to file? */
|
|
if (ECHO < 0) {
|
|
tempfile = outfile;
|
|
}
|
|
else {
|
|
break;
|
|
}
|
|
}
|
|
else { /* Print to stdout. */
|
|
tempfile = stdout;
|
|
}
|
|
|
|
if (OUTPUT_TIME > 0) {
|
|
if (total_time != 0) {
|
|
fprintf(tempfile, "\nTotal time: %g sec.\n", total_time);
|
|
if (input_time != 0) {
|
|
fprintf(tempfile, " input %g\n", input_time);
|
|
}
|
|
if (reformat_time != 0) {
|
|
fprintf(tempfile, " reformatting %g\n", reformat_time);
|
|
}
|
|
if (check_input_time != 0) {
|
|
fprintf(tempfile, " checking input %g\n", check_input_time);
|
|
}
|
|
if (partition_time != 0) {
|
|
fprintf(tempfile, " partitioning %g\n", partition_time);
|
|
}
|
|
if (sequence_time != 0) {
|
|
fprintf(tempfile, " sequencing %g\n", sequence_time);
|
|
}
|
|
if (kernel_time != 0) {
|
|
fprintf(tempfile, " kernel benchmarking %g\n", kernel_time);
|
|
}
|
|
if (count_time != 0) {
|
|
fprintf(tempfile, " evaluation %g\n", count_time);
|
|
}
|
|
if (print_assign_time != 0) {
|
|
fprintf(tempfile, " printing assignment file %g\n", print_assign_time);
|
|
}
|
|
|
|
if (sim_time != 0) {
|
|
fprintf(tempfile, " simulating %g\n", sim_time);
|
|
}
|
|
other_time = total_time - input_time - reformat_time - check_input_time - partition_time -
|
|
count_time - print_assign_time - sim_time - sequence_time - kernel_time;
|
|
if (other_time > time_tol) {
|
|
fprintf(tempfile, " other %g\n", other_time);
|
|
}
|
|
}
|
|
}
|
|
|
|
if (OUTPUT_TIME > 1) {
|
|
if (inertial_time != 0) {
|
|
fprintf(tempfile, "\nInertial time: %g sec.\n", inertial_time);
|
|
if (inertial_axis_time != 0) {
|
|
fprintf(tempfile, " inertial axis %g\n", inertial_axis_time);
|
|
}
|
|
if (median_time != 0) {
|
|
fprintf(tempfile, " median finding %g\n", median_time);
|
|
}
|
|
other_time = inertial_time - inertial_axis_time - median_time;
|
|
if (other_time > time_tol) {
|
|
fprintf(tempfile, " other %g\n", other_time);
|
|
}
|
|
}
|
|
|
|
if (kl_total_time != 0) {
|
|
fprintf(tempfile, "\nKL time: %g sec.\n", kl_total_time);
|
|
if (kl_init_time != 0) {
|
|
fprintf(tempfile, " initialization %g\n", kl_init_time);
|
|
}
|
|
if (nway_kl_time != 0) {
|
|
fprintf(tempfile, " nway refinement %g\n", nway_kl_time);
|
|
}
|
|
if (kl_bucket_time != 0) {
|
|
fprintf(tempfile, " bucket sorting %g\n", kl_bucket_time);
|
|
}
|
|
other_time = kl_total_time - kl_init_time - nway_kl_time;
|
|
if (other_time > time_tol) {
|
|
fprintf(tempfile, " other %g\n", other_time);
|
|
}
|
|
}
|
|
|
|
if (coarsen_time != 0 && rqi_symmlq_time == 0) {
|
|
fprintf(tempfile, "\nCoarsening %g sec.\n", coarsen_time);
|
|
if (match_time != 0) {
|
|
fprintf(tempfile, " maxmatch %g\n", match_time);
|
|
}
|
|
if (make_cgraph_time != 0) {
|
|
fprintf(tempfile, " makecgraph %g\n", make_cgraph_time);
|
|
}
|
|
}
|
|
|
|
if (lanczos_time != 0) {
|
|
fprintf(tempfile, "\nLanczos time: %g sec.\n", lanczos_time);
|
|
if (splarax_time != 0) {
|
|
fprintf(tempfile, " matvec/solve %g\n", splarax_time);
|
|
}
|
|
if (blas_time != 0) {
|
|
fprintf(tempfile, " vector ops %g\n", blas_time);
|
|
}
|
|
if (evec_time != 0) {
|
|
fprintf(tempfile, " assemble evec %g\n", evec_time);
|
|
}
|
|
if (init_time != 0) {
|
|
fprintf(tempfile, " malloc/init/free %g\n", init_time);
|
|
}
|
|
if (orthog_time != 0) {
|
|
fprintf(tempfile, " maintain orthog %g\n", orthog_time);
|
|
}
|
|
if (scan_time != 0) {
|
|
fprintf(tempfile, " scan %g\n", scan_time);
|
|
}
|
|
if (debug_time != 0) {
|
|
fprintf(tempfile, " debug/warning/check %g\n", debug_time);
|
|
}
|
|
if (ql_time != 0) {
|
|
fprintf(tempfile, " ql/bisection %g\n", ql_time);
|
|
}
|
|
if (tevec_time != 0) {
|
|
fprintf(tempfile, " tevec %g\n", tevec_time);
|
|
}
|
|
if (ritz_time != 0) {
|
|
fprintf(tempfile, " compute ritz %g\n", ritz_time);
|
|
}
|
|
if (pause_time != 0) {
|
|
fprintf(tempfile, " pause %g\n", pause_time);
|
|
}
|
|
other_time = lanczos_time - splarax_time - orthog_time - ql_time - tevec_time - ritz_time -
|
|
evec_time - blas_time - init_time - scan_time - debug_time - pause_time;
|
|
if (other_time > time_tol && other_time != lanczos_time) {
|
|
fprintf(tempfile, " other %g\n", other_time);
|
|
}
|
|
}
|
|
|
|
if (rqi_symmlq_time != 0) {
|
|
fprintf(tempfile, "\nRQI/Symmlq time: %g sec.\n", rqi_symmlq_time);
|
|
if (coarsen_time != 0) {
|
|
fprintf(tempfile, " coarsening %g\n", coarsen_time);
|
|
}
|
|
if (match_time != 0) {
|
|
fprintf(tempfile, " maxmatch %g\n", match_time);
|
|
}
|
|
if (make_cgraph_time != 0) {
|
|
fprintf(tempfile, " makecgraph %g\n", make_cgraph_time);
|
|
}
|
|
if (refine_time != 0) {
|
|
fprintf(tempfile, " refinement %g\n", refine_time);
|
|
}
|
|
if (lanczos_time != 0) {
|
|
fprintf(tempfile, " lanczos %g\n", lanczos_time);
|
|
}
|
|
other_time = rqi_symmlq_time - coarsen_time - refine_time - lanczos_time;
|
|
if (other_time > time_tol) {
|
|
fprintf(tempfile, " other %g\n", other_time);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
void clear_timing(void)
|
|
{
|
|
start_time = -1;
|
|
total_time = 0;
|
|
input_time = 0;
|
|
partition_time = 0;
|
|
sequence_time = 0;
|
|
kernel_time = 0;
|
|
reformat_time = 0;
|
|
check_input_time = 0;
|
|
count_time = 0;
|
|
print_assign_time = 0;
|
|
|
|
coarsen_time = 0;
|
|
match_time = 0;
|
|
make_cgraph_time = 0;
|
|
|
|
lanczos_time = 0;
|
|
splarax_time = 0;
|
|
orthog_time = 0;
|
|
ql_time = 0;
|
|
tevec_time = 0;
|
|
ritz_time = 0;
|
|
evec_time = 0;
|
|
blas_time = 0;
|
|
init_time = 0;
|
|
scan_time = 0;
|
|
debug_time = 0;
|
|
pause_time = 0;
|
|
|
|
rqi_symmlq_time = 0;
|
|
refine_time = 0;
|
|
|
|
kl_total_time = 0;
|
|
kl_init_time = 0;
|
|
nway_kl_time = 0;
|
|
kl_bucket_time = 0;
|
|
|
|
inertial_time = 0;
|
|
inertial_axis_time = 0;
|
|
median_time = 0;
|
|
|
|
sim_time = 0;
|
|
}
|
|
|