void CLIENT_STATE::compute_nuploading_results() { unsigned int i; for (i=0; i<projects.size(); i++) { projects[i]->nuploading_results = 0; projects[i]->too_many_uploading_results = false; } for (i=0; i<results.size(); i++) { RESULT* rp = results[i]; if (rp->state() == RESULT_FILES_UPLOADING) { rp->project->nuploading_results++; } } int n = gstate.ncpus; for (int j=1; j<coprocs.n_rsc; j++) { if (coprocs.coprocs[j].count > n) { n = coprocs.coprocs[j].count; } } n *= 2; for (i=0; i<projects.size(); i++) { if (projects[i]->nuploading_results > n) { projects[i]->too_many_uploading_results = true; } } }
void CLIENT_STATE::compute_nuploading_results() { unsigned int i; for (i=0; i<projects.size(); i++) { projects[i]->nuploading_results = 0; projects[i]->too_many_uploading_results = false; } for (i=0; i<results.size(); i++) { RESULT* rp = results[i]; if (rp->state() == RESULT_FILES_UPLOADING) { rp->project->nuploading_results++; } } int n = gstate.ncpus; if (gstate.host_info.have_cuda() && gstate.host_info.coprocs.cuda.count > n) { n = gstate.host_info.coprocs.cuda.count; } if (gstate.host_info.have_ati() && gstate.host_info.coprocs.ati.count > n) { n = gstate.host_info.coprocs.ati.count; } n *= 2; for (i=0; i<projects.size(); i++) { if (projects[i]->nuploading_results > n) { projects[i]->too_many_uploading_results = true; } } }
// does the project have a downloading or runnable job? // static bool has_a_job(PROJECT* p) { for (unsigned int j=0; j<gstate.results.size(); j++) { RESULT* rp = gstate.results[j]; if (rp->project != p) continue; if (rp->state() <= RESULT_FILES_DOWNLOADED) { return true; } } return false; }
void job_count(PROJECT* p, int rsc_type, int& in_progress, int& done) { in_progress = done = 0; unsigned int i; for (i=0; i<gstate.results.size(); i++) { RESULT* rp = gstate.results[i]; if (rp->project != p) continue; if (rp->resource_type() != rsc_type) continue; if (rp->state() < RESULT_FILES_UPLOADED) { in_progress++; } else { done++; } } }
void do_client_simulation() { char buf[256], buf2[256]; int retval; FILE* f; sprintf(buf, "%s%s", infile_prefix, CONFIG_FILE); cc_config.defaults(); read_config_file(true, buf); log_flags.init(); sprintf(buf, "%s%s", outfile_prefix, "log_flags.xml"); f = fopen(buf, "r"); if (f) { MIOFILE mf; mf.init_file(f); XML_PARSER xp(&mf); xp.get_tag(); // skip open tag log_flags.parse(xp); fclose(f); } gstate.add_platform("client simulator"); sprintf(buf, "%s%s", infile_prefix, STATE_FILE_NAME); if (!boinc_file_exists(buf)) { fprintf(stderr, "No client state file\n"); exit(1); } retval = gstate.parse_state_file_aux(buf); if (retval) { fprintf(stderr, "state file parse error %d\n", retval); exit(1); } // if tasks have pending transfers, mark as completed // for (unsigned int i=0; i<gstate.results.size(); i++) { RESULT* rp = gstate.results[i]; if (rp->state() < RESULT_FILES_DOWNLOADED) { rp->set_state(RESULT_FILES_DOWNLOADED, "init"); } else if (rp->state() == RESULT_FILES_UPLOADING) { rp->set_state(RESULT_FILES_UPLOADED, "init"); } } check_app_config(infile_prefix); show_app_config(); cc_config.show(); log_flags.show(); sprintf(buf, "%s%s", infile_prefix, GLOBAL_PREFS_FILE_NAME); sprintf(buf2, "%s%s", infile_prefix, GLOBAL_PREFS_OVERRIDE_FILE); gstate.read_global_prefs(buf, buf2); fprintf(index_file, "<h3>Output files</h3>\n" "<a href=%s>Summary</a>\n" "<br><a href=%s>Log file</a>\n", SUMMARY_FNAME, LOG_FNAME ); // fill in GPU device nums and OpenCL flags // for (int i=0; i<coprocs.n_rsc; i++) { COPROC& cp = coprocs.coprocs[i]; for (int j=0; j<cp.count; j++) { cp.device_nums[j] = j; if (cp.have_opencl) { cp.instance_has_opencl[j] = true; } } } set_no_rsc_config(); process_gpu_exclusions(); get_app_params(); if (!include_empty_projects) { cull_projects(); } fprintf(summary_file, "--------------------------\n"); int j=0; for (unsigned int i=0; i<gstate.projects.size(); i++) { gstate.projects[i]->index = j++; } clear_backoff(); gstate.log_show_projects(); gstate.set_ncpus(); work_fetch.init(); //set_initial_rec(); rec_adjust_period = delta; gstate.request_work_fetch("init"); simulate(); sim_results.compute_figures_of_merit(); sprintf(buf, "%s%s", outfile_prefix, RESULTS_DAT_FNAME); f = fopen(buf, "w"); sim_results.print(f); fclose(f); sprintf(buf, "%s%s", outfile_prefix, RESULTS_TXT_FNAME); f = fopen(buf, "w"); sim_results.print(f, true); fclose(f); fprintf(summary_file, "Simulation done.\n" "-------------------------\n" "Figures of merit:\n" ); sim_results.print(summary_file, true); double cpu_time; boinc_calling_thread_cpu_time(cpu_time); fprintf(summary_file, "-------------------------\n" "Simulator CPU time: %f secs\n" "-------------------------\n" "Peak FLOPS: CPU %.2fG GPU %.2fG\n", cpu_time, cpu_peak_flops()/1e9, gpu_peak_flops()/1e9 ); print_project_results(summary_file); fclose(rec_file); make_graph("REC", "rec", 0); }