void *run_thread(void *arg) { ThreadData *thread_data = static_cast<ThreadData *>(arg); int rank = thread_data->rank; int size = thread_data->size; Xyce::Util::xyce_pthread_t self = Xyce::Util::xyce_pthread_self(); std::ostringstream path; path << "log." << rank << "." << size; std::ofstream log_os(path.str().c_str()); log_os << "Logging started on thread rank " << rank << " of " << size << " on thread " << (void *)(self) << std::endl; for (int i = 0; i < 1000; ++i) { if (i%10 == 2) Xyce::addThreadStream(&log_os); if (i%10 == 9) Xyce::removeThreadStream(&log_os); Xyce::lout() << "This is step " << i << " on thread rank " << rank << " of " << size << " on thread " << self << std::endl; } Xyce::removeThreadStream(&log_os); log_os << "Logging complete on thread rank " << rank << " of " << size << " on thread " << self << std::endl; log_os.close(); return 0; }
void log_system_info(void) { log_processor_name(); log_processor_speed(); log_processor_cores(); log_available_memory(); log_os(); log_kernel_version(); }