Suggested by Maureen Chew, of Oracle.
Change-Id: I5c3f868721944e7586b7001f3ffdf6ab17953526
``-DGMX_BUILD_SHARED_EXE=off``, and you may need to set the F77
environmental variable to ``ftn`` when compiling FFTW.
+Building on Solaris
+-------------------
+
+The built-in |Gromacs| processor detection does not work on Solaris,
+so it is strongly recommended that you build |Gromacs| with
+``-DGMX_HWLOC=on`` and ensure that the ``CMAKE_PREFIX_PATH`` includes
+the path where the hwloc headers and libraries can be found. At least
+version 1.11.8 of hwloc is recommended.
+
+Oracle Developer Studio is not a currently supported compiler (and
+does not currently compile |Gromacs| correctly, perhaps because the
+thread-MPI atomics are incorrectly implemented in |Gromacs|).
+
Building on BlueGene
--------------------
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2012,2013,2014,2015,2016, by the GROMACS development team, led by
+ * Copyright (c) 2012,2013,2014,2015,2016,2017, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
{ "AArch64", CpuInfo::Vendor::Arm },
{ "Fujitsu", CpuInfo::Vendor::Fujitsu },
{ "IBM", CpuInfo::Vendor::Ibm },
- { "POWER", CpuInfo::Vendor::Ibm }
+ { "POWER", CpuInfo::Vendor::Ibm },
+ { "Oracle", CpuInfo::Vendor::Oracle },
};
// For each label in /proc/cpuinfo, compare the value to the name in the
result.features_.insert(Feature::Arm_NeonAsimd); // ARMv8 always has Neon-asimd
# endif
+# if defined sun
+ result.vendor_ = CpuInfo::Vendor::Oracle;
+# endif
+
// On Linux we might be able to find information in /proc/cpuinfo. If vendor or brand
// is set to a known value this routine will not overwrite it.
detectProcCpuInfo(&result.vendor_, &result.brandString_, &result.family_,
{ CpuInfo::Vendor::Amd, "AMD" },
{ CpuInfo::Vendor::Fujitsu, "Fujitsu" },
{ CpuInfo::Vendor::Ibm, "IBM" },
- { CpuInfo::Vendor::Arm, "ARM" }
+ { CpuInfo::Vendor::Arm, "ARM" },
+ { CpuInfo::Vendor::Oracle, "Oracle" },
};
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2015,2016, by the GROMACS development team, led by
+ * Copyright (c) 2015,2016,2017, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
Fujitsu, //!< Only works on Linux (parsed from /proc/cpuinfo)
Ibm, //!< Only works on Linux (parsed from /proc/cpuinfo)
Arm, //!< Only works on Linux (parsed from /proc/cpuinfo)
+ Oracle, //!< Cannot detect anything else yet (no /proc/cpuinfo available)
};
/*! \brief List of CPU features
*
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* Copyright (c) 2001-2004, The GROMACS development team.
- * Copyright (c) 2013,2014,2015,2016, by the GROMACS development team, led by
+ * Copyright (c) 2013,2014,2015,2016,2017, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
/* Don't try to be more accurate on energy than the precision */
func_tol = std::max(func_tol, static_cast<double>(GMX_REAL_EPS));
- sc_func = std::cbrt(third_deriv_max/(6*12*sqrt(3)*func_tol))*x_scale;
+ sc_func = std::cbrt(third_deriv_max/(6*12*std::sqrt(3.0)*func_tol))*x_scale;
return std::max(sc_deriv, sc_func);
}
/*
* This file is part of the GROMACS molecular simulation package.
*
- * Copyright (c) 2014,2015,2016, by the GROMACS development team, led by
+ * Copyright (c) 2014,2015,2016,2017, by the GROMACS development team, led by
* Mark Abraham, David van der Spoel, Berk Hess, and Erik Lindahl,
* and including many others, as listed in the AUTHORS file in the
* top-level source directory and at http://www.gromacs.org.
buf[len-1] = '\0';
#elif (defined(__sun))
/*Solaris*/
- ctime_r(clock, buf, len);
+ ctime_r(clock, buf);
#else
char tmpbuf[30];
ctime_r(clock, tmpbuf);