ARM::AggregatedRegressionModel(const Matrix & design_matrix, const std::vector<string> & group_names, const Vector & group_values, const string &transformation) : f_(create_transformation(transformation)), f(*(f_.get())), model_(new RegressionModel(ncol(design_matrix))) { // Build groups and compute f(ybar) in each group (needed to build // the prior distribution). initialize_groups(design_matrix, group_names, group_values); ParamPolicy::add_model(model_); }
int spe_record__record(struct spe_record__conf *conf) { signal(SIGCHLD, spe_record__handler); print_spe_record__conf(conf); spe__prepare_workload(conf->wl_args); /* * Set affinity masks */ check_return(sched_setaffinity(0, sizeof(cpu_set_t), &conf->record_aff_mask), "Failed to set record process affinity mask, Error: %d\n", errno); check_return(sched_setaffinity(wl_state.pid, sizeof(cpu_set_t), &conf->load_aff_mask), "Failed to set load process affinity mask, Error: %d\n", errno); sc_init(conf, pe_handler); check_return(initialize_groups(&g_groups, conf, wl_state.pid), "Error initializing groups.\n"); check_return(open_outputs(&g_groups, conf->output_preffix), "Error opening outputs.\n"); check_return(open_pe_group(&g_groups), "Error opening groups.\n"); printf("Ready to go.\n"); check_return(start_pe_group(&g_groups), "Error starting groups.\n"); check_return(spe__start_workload(), "Error start_workload.\n"); int awaken = 0, bytes_curr = 0; int bytes_written = 0; //TODO: How to improve efficiency of polling? int nr_signal_to_wait = 20; int i; while (wl_state.wait_child) { for (i = 0; wl_state.wait_child && i < nr_signal_to_wait; ++i) pause(); ++awaken; bytes_curr = perf_mmap_read_all(&g_groups); if (bytes_curr < 0) { REPORTERROR("Error reading mmap.\n"); } else { bytes_written += bytes_curr; } } perf_mmap_read_all(&g_groups); check_return(stop_pe_group(&g_groups), "Error stopping groups.\n"); printf("End. Written %d bytes. Awaken %d times\n", bytes_written, awaken); check_return(stop_pe_group(&g_groups), "Error stopping groups\n"); check_return(print_summaries(&g_groups, conf->output_preffix), "Error printing outputs.\n"); check_return(close_outputs(&g_groups), "Error closing outputs.\n"); check_return(close_pe_group(&g_groups), "Error closing groups\n"); return 0; }