From 034b051a7e7f08cd592ee21edce5bf90604538d2 Mon Sep 17 00:00:00 2001 From: bangerth Date: Sun, 14 Oct 2012 22:09:32 +0000 Subject: [PATCH] Take over most of what's in patches r26981:26988 on branch_cmake. git-svn-id: https://svn.dealii.org/trunk@27123 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/include/deal.II/base/logstream.h | 2 +- deal.II/source/base/logstream.cc | 9 ++-- deal.II/source/base/multithread_info.cc | 49 +-------------------- deal.II/source/base/thread_management.cc | 26 ++--------- deal.II/source/base/timer.cc | 55 ++++++++++++------------ deal.II/source/base/utilities.cc | 26 +++++------ deal.II/source/lac/sparse_direct.cc | 31 +------------ 7 files changed, 52 insertions(+), 146 deletions(-) diff --git a/deal.II/include/deal.II/base/logstream.h b/deal.II/include/deal.II/base/logstream.h index f87f5a3aa3..e8223227c5 100644 --- a/deal.II/include/deal.II/base/logstream.h +++ b/deal.II/include/deal.II/base/logstream.h @@ -24,7 +24,7 @@ #include #ifdef HAVE_SYS_TIMES_H -#include +# include #else struct tms { diff --git a/deal.II/source/base/logstream.cc b/deal.II/source/base/logstream.cc index 677e0c0f4c..312c3e03ca 100644 --- a/deal.II/source/base/logstream.cc +++ b/deal.II/source/base/logstream.cc @@ -17,13 +17,14 @@ #include #include -// include sys/resource.h for rusage(). Mac OS X needs sys/time.h then -// as well (strange), so include that, too. -#ifndef DEAL_II_MSVC +#ifdef HAVE_SYS_RESOURCE_H # include +#endif + +#ifdef HAVE_UNISTD_H # include #endif -#include + #include #include #include diff --git a/deal.II/source/base/multithread_info.cc b/deal.II/source/base/multithread_info.cc index e60f66f28d..66d6eaa3a7 100644 --- a/deal.II/source/base/multithread_info.cc +++ b/deal.II/source/base/multithread_info.cc @@ -14,16 +14,7 @@ #include -#if defined(__linux__) -# include -# include -#endif - -#if defined(__sun__) || defined(__osf__) || defined(_AIX) -# include -#endif - -#if defined(__sgi__) +#ifdef HAVE_UNISTD_H # include #endif @@ -46,48 +37,13 @@ DEAL_II_NAMESPACE_OPEN */ -# if defined(__linux__) - -unsigned int MultithreadInfo::get_n_cpus() -{ - // on linux, we simply count the - // number of lines listing - // individual processors when - // reading from /proc/cpuinfo - std::ifstream cpuinfo; - std::string search; - unsigned int nCPU = 0; - - cpuinfo.open("/proc/cpuinfo"); - - AssertThrow(cpuinfo,ExcProcNotPresent()); - - while(cpuinfo) - { - cpuinfo >> search; - if (search.find("processor") != std::string::npos) - nCPU++; - } - cpuinfo.close(); - - return nCPU; -} - -# elif defined(__sun__) || defined(__osf__) || defined(_AIX) +# if defined(__linux__) || defined(__sun__) || defined(__osf__) || defined(_AIX) unsigned int MultithreadInfo::get_n_cpus() { return sysconf(_SC_NPROCESSORS_ONLN); } - -# elif defined(__sgi__) - -unsigned int MultithreadInfo::get_n_cpus() -{ - return sysconf(_SC_NPROC_ONLN); -} - # elif defined(__MACH__) && defined(__APPLE__) // This is only tested on a dual G5 2.5GHz running MacOSX 10.3.6 // and on an Intel Mac Book Pro. @@ -106,7 +62,6 @@ unsigned int MultithreadInfo::get_n_cpus() return n_cpus; } - # else // If you get n_cpus=1 although you are on a multi-processor machine, diff --git a/deal.II/source/base/thread_management.cc b/deal.II/source/base/thread_management.cc index 7549689b48..15891599f6 100644 --- a/deal.II/source/base/thread_management.cc +++ b/deal.II/source/base/thread_management.cc @@ -13,29 +13,11 @@ #include -#include -#include - -#ifdef DEAL_II_USE_MT_POSIX -# include -#endif -#ifndef DEAL_II_USE_DIRECT_ERRNO_H -# include -#else -# include -#endif -#ifndef DEAL_II_MSVC -# include -#endif - -#ifdef HAVE_UNISTD_H -# include -#endif - -#ifdef HAVE_SYS_SYSCALL_H -# include -#endif +#include +#include +#include +#include DEAL_II_NAMESPACE_OPEN diff --git a/deal.II/source/base/timer.cc b/deal.II/source/base/timer.cc index 04a4211eaa..c7fd69fada 100644 --- a/deal.II/source/base/timer.cc +++ b/deal.II/source/base/timer.cc @@ -24,24 +24,18 @@ // these includes should probably be properly // ./configure'd using the AC_HEADER_TIME macro: -#ifndef DEAL_II_MSVC +#if defined(HAVE_SYS_TIME_H) && defined(HAVE_SYS_RESOURCE_H) # include # include -#else -# include #endif -// on SunOS 4.x, getrusage is stated in the man pages and exists, but -// is not declared in resource.h. declare it ourselves -#ifdef NO_HAVE_GETRUSAGE -extern "C" { - int getrusage(int who, struct rusage* ru); -} +#ifdef DEAL_II_MSVC +# include #endif -DEAL_II_NAMESPACE_OPEN +DEAL_II_NAMESPACE_OPEN // in case we use an MPI compiler, need // to create a communicator just for the @@ -116,11 +110,7 @@ void Timer::start () MPI_Barrier(mpi_communicator); #endif -#ifdef DEAL_II_MSVC - start_wall_time = windows::wall_clock(); - start_time = windows::cpu_clock(); - start_time_children = start_time; -#else +#if defined(HAVE_SYS_TIME_H) && defined(HAVE_SYS_RESOURCE_H) //TODO: Break this out into a function like the functions in //namespace windows above @@ -135,6 +125,13 @@ void Timer::start () rusage usage_children; getrusage (RUSAGE_CHILDREN, &usage_children); start_time_children = usage_children.ru_utime.tv_sec + 1.e-6 * usage_children.ru_utime.tv_usec; + +#elif defined(DEAL_II_MSVC) + start_wall_time = windows::wall_clock(); + start_time = windows::cpu_clock(); + start_time_children = start_time; +#else +# error unsupported platform. Porting not finished. #endif } @@ -146,10 +143,7 @@ double Timer::stop () { running = false; -#ifdef DEAL_II_MSVC - double time = windows::wall_clock() - start_wall_time; - cumulative_time += windows::cpu_clock() - start_time; -#else +#if defined(HAVE_SYS_TIME_H) && defined(HAVE_SYS_RESOURCE_H) //TODO: Break this out into a function like the functions in //namespace windows above rusage usage; @@ -167,6 +161,11 @@ double Timer::stop () gettimeofday(&wall_timer, NULL); double time = wall_timer.tv_sec + 1.e-6 * wall_timer.tv_usec - start_wall_time; +#elif defined(DEAL_II_MSVC) + double time = windows::wall_clock() - start_wall_time; + cumulative_time += windows::cpu_clock() - start_time; +#else +# error Unsupported platform. Porting not finished. #endif #ifdef DEAL_II_COMPILER_USE_MPI if (sync_wall_time && Utilities::System::job_supports_mpi()) @@ -189,10 +188,7 @@ double Timer::operator() () const { if (running) { -#ifdef DEAL_II_MSVC - const double running_time = windows::cpu_clock() - start_time + cumulative_time; - return running_time; -#else +#if defined(HAVE_SYS_TIME_H) && defined(HAVE_SYS_RESOURCE_H) rusage usage; getrusage (RUSAGE_SELF, &usage); const double dtime = usage.ru_utime.tv_sec + 1.e-6 * usage.ru_utime.tv_usec; @@ -215,6 +211,11 @@ double Timer::operator() () const return Utilities::MPI::sum (running_time, mpi_communicator); else return running_time; +#elif defined(DEAL_II_MSVC) + const double running_time = windows::cpu_clock() - start_time + cumulative_time; + return running_time; +#else +# error unsupported platform. Porting not finished. #endif } else @@ -232,16 +233,16 @@ double Timer::wall_time () const { if (running) { -#ifdef DEAL_II_MSVC -//TODO[BG]: Do something useful here - return 0; -#else +#if defined(HAVE_SYS_TIME_H) && defined(HAVE_SYS_RESOURCE_H) struct timeval wall_timer; gettimeofday(&wall_timer, NULL); return (wall_timer.tv_sec + 1.e-6 * wall_timer.tv_usec - start_wall_time + cumulative_wall_time); +#else +//TODO[BG]: Do something useful here + return 0; #endif } else diff --git a/deal.II/source/base/utilities.cc b/deal.II/source/base/utilities.cc index 3c25ba69b2..6996f21d2d 100644 --- a/deal.II/source/base/utilities.cc +++ b/deal.II/source/base/utilities.cc @@ -14,29 +14,25 @@ #include #include -#include -#include +#include + #include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include -#ifdef HAVE_UNISTD_H -# include -#endif #ifdef DEAL_II_MSVC # include #endif -#include - -#include -#include -#include -#include #ifdef DEAL_II_USE_TRILINOS # ifdef DEAL_II_COMPILER_SUPPORTS_MPI diff --git a/deal.II/source/lac/sparse_direct.cc b/deal.II/source/lac/sparse_direct.cc index 98ec51a194..47139fc874 100644 --- a/deal.II/source/lac/sparse_direct.cc +++ b/deal.II/source/lac/sparse_direct.cc @@ -19,40 +19,11 @@ #include #include +#include #include #include #include -// this is a weird hack: on newer linux systems, some system headers -// include /usr/include/linux/compiler.h which explicitly checks which -// gcc is in use. in that file is also a comment that explains that -// the check for gcc version also applies to icc since icc identifies -// itself as gcc via __GNUC__; if the gcc major version is not >=2, it -// aborts. -// -// now, only icc8 and later identify themselves as gcc, so older icc -// versions fail to compile this file on such systems. to avoid this -// failure, we allow icc to identify itself as gcc if it doesn't -// already do so by itself: -#if defined(__INTEL_COMPILER) && !defined(__GNUC__) -# define __GNUC__ 3 -#endif - -#ifndef DEAL_II_MSVC -# include -# include -#ifndef DEAL_II_USE_DIRECT_ERRNO_H -# include -#else -# include -#endif -#include -#endif - -#include -#include -#include - DEAL_II_NAMESPACE_OPEN -- 2.39.5