"...ssh:/git@developer.sourcefind.cn:2222/tsoc/openmm.git" did not exist on "6186c0679e4eefaab8630c7a70c2d8f6dfeeb08f"
Commit f12cb008 authored by Peter Eastman's avatar Peter Eastman
Browse files

Unified names of platform properties

parent 95584c96
...@@ -82,17 +82,12 @@ def runOneTest(testName, options): ...@@ -82,17 +82,12 @@ def runOneTest(testName, options):
properties = {} properties = {}
initialSteps = 5 initialSteps = 5
if options.device is not None: if options.device is not None:
if platform.getName() == 'CUDA': if platform.getName() in ('CUDA', 'OpenCL'):
properties['CudaDeviceIndex'] = options.device properties['DeviceIndex'] = options.device
elif platform.getName() == 'OpenCL':
properties['OpenCLDeviceIndex'] = options.device
if ',' in options.device or ' ' in options.device: if ',' in options.device or ' ' in options.device:
initialSteps = 250 initialSteps = 250
if options.precision is not None: if options.precision is not None and platform.getName() in ('CUDA', 'OpenCL'):
if platform.getName() == 'CUDA': properties['Precision'] = options.precision
properties['CudaPrecision'] = options.precision
elif platform.getName() == 'OpenCL':
properties['OpenCLPrecision'] = options.precision
# Run the simulation. # Run the simulation.
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for * * Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. * * Medical Research, grant U54 GM072970. See https://simtk.org. *
* * * *
* Portions copyright (c) 2008-2012 Stanford University and the Authors. * * Portions copyright (c) 2008-2016 Stanford University and the Authors. *
* Authors: Peter Eastman * * Authors: Peter Eastman *
* Contributors: * * Contributors: *
* * * *
...@@ -236,7 +236,9 @@ protected: ...@@ -236,7 +236,9 @@ protected:
*/ */
const ContextImpl& getContextImpl(const Context& context) const; const ContextImpl& getContextImpl(const Context& context) const;
std::vector<std::string> platformProperties; std::vector<std::string> platformProperties;
std::map<std::string, std::string> deprecatedPropertyReplacements;
private: private:
friend class ContextImpl;
std::map<std::string, KernelFactory*> kernelFactories; std::map<std::string, KernelFactory*> kernelFactories;
std::map<std::string, std::string> defaultProperties; std::map<std::string, std::string> defaultProperties;
static std::vector<Platform*>& getPlatforms(); static std::vector<Platform*>& getPlatforms();
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for * * Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. * * Medical Research, grant U54 GM072970. See https://simtk.org. *
* * * *
* Portions copyright (c) 2008-2012 Stanford University and the Authors. * * Portions copyright (c) 2008-2016 Stanford University and the Authors. *
* Authors: Peter Eastman * * Authors: Peter Eastman *
* Contributors: * * Contributors: *
* * * *
...@@ -89,15 +89,21 @@ void Platform::setPropertyValue(Context& context, const string& property, const ...@@ -89,15 +89,21 @@ void Platform::setPropertyValue(Context& context, const string& property, const
} }
const string& Platform::getPropertyDefaultValue(const string& property) const { const string& Platform::getPropertyDefaultValue(const string& property) const {
map<string, string>::const_iterator value = defaultProperties.find(property); string propertyName = property;
if (deprecatedPropertyReplacements.find(property) != deprecatedPropertyReplacements.end())
propertyName = deprecatedPropertyReplacements.find(property)->second;
map<string, string>::const_iterator value = defaultProperties.find(propertyName);
if (value == defaultProperties.end()) if (value == defaultProperties.end())
throw OpenMMException("getPropertyDefaultValue: Illegal property name"); throw OpenMMException("getPropertyDefaultValue: Illegal property name");
return value->second; return value->second;
} }
void Platform::setPropertyDefaultValue(const string& property, const string& value) { void Platform::setPropertyDefaultValue(const string& property, const string& value) {
string propertyName = property;
if (deprecatedPropertyReplacements.find(property) != deprecatedPropertyReplacements.end())
propertyName = deprecatedPropertyReplacements.find(property)->second;
for (int i = 0; i < (int) platformProperties.size(); i++) for (int i = 0; i < (int) platformProperties.size(); i++)
if (platformProperties[i] == property) { if (platformProperties[i] == propertyName) {
defaultProperties[property] = value; defaultProperties[property] = value;
return; return;
} }
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for * * Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. * * Medical Research, grant U54 GM072970. See https://simtk.org. *
* * * *
* Portions copyright (c) 2008-2013 Stanford University and the Authors. * * Portions copyright (c) 2008-2016 Stanford University and the Authors. *
* Authors: Peter Eastman * * Authors: Peter Eastman *
* Contributors: * * Contributors: *
* * * *
...@@ -84,15 +84,20 @@ ContextImpl::ContextImpl(Context& owner, const System& system, Integrator& integ ...@@ -84,15 +84,20 @@ ContextImpl::ContextImpl(Context& owner, const System& system, Integrator& integ
// Validate the list of properties. // Validate the list of properties.
const vector<string>& platformProperties = platform->getPropertyNames(); const vector<string>& platformProperties = platform->getPropertyNames();
map<string, string> validatedProperties;
for (map<string, string>::const_iterator iter = properties.begin(); iter != properties.end(); ++iter) { for (map<string, string>::const_iterator iter = properties.begin(); iter != properties.end(); ++iter) {
string property = iter->first;
if (platform->deprecatedPropertyReplacements.find(property) != platform->deprecatedPropertyReplacements.end())
property = platform->deprecatedPropertyReplacements[property];
bool valid = false; bool valid = false;
for (int i = 0; i < (int) platformProperties.size(); i++) for (int i = 0; i < (int) platformProperties.size(); i++)
if (platformProperties[i] == iter->first) { if (platformProperties[i] == property) {
valid = true; valid = true;
break; break;
} }
if (!valid) if (!valid)
throw OpenMMException("Illegal property name: "+iter->first); throw OpenMMException("Illegal property name: "+iter->first);
validatedProperties[property] = iter->second;
} }
// Find the list of kernels required. // Find the list of kernels required.
...@@ -139,7 +144,7 @@ ContextImpl::ContextImpl(Context& owner, const System& system, Integrator& integ ...@@ -139,7 +144,7 @@ ContextImpl::ContextImpl(Context& owner, const System& system, Integrator& integ
for (int i = candidatePlatforms.size()-1; i >= 0; i--) { for (int i = candidatePlatforms.size()-1; i >= 0; i--) {
try { try {
this->platform = platform = candidatePlatforms[i].second; this->platform = platform = candidatePlatforms[i].second;
platform->contextCreated(*this, properties); platform->contextCreated(*this, validatedProperties);
break; break;
} }
catch (...) { catch (...) {
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for * * Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. * * Medical Research, grant U54 GM072970. See https://simtk.org. *
* * * *
* Portions copyright (c) 2013 Stanford University and the Authors. * * Portions copyright (c) 2013-2016 Stanford University and the Authors. *
* Authors: Peter Eastman * * Authors: Peter Eastman *
* Contributors: * * Contributors: *
* * * *
...@@ -64,7 +64,7 @@ public: ...@@ -64,7 +64,7 @@ public:
* This is the name of the parameter for selecting the number of threads to use. * This is the name of the parameter for selecting the number of threads to use.
*/ */
static const std::string& CpuThreads() { static const std::string& CpuThreads() {
static const std::string key = "CpuThreads"; static const std::string key = "Threads";
return key; return key;
} }
/** /**
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for * * Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. * * Medical Research, grant U54 GM072970. See https://simtk.org. *
* * * *
* Portions copyright (c) 2013-2014 Stanford University and the Authors. * * Portions copyright (c) 2013-2016 Stanford University and the Authors. *
* Authors: Peter Eastman * * Authors: Peter Eastman *
* Contributors: * * Contributors: *
* * * *
...@@ -59,6 +59,7 @@ extern "C" OPENMM_EXPORT_CPU void registerPlatforms() { ...@@ -59,6 +59,7 @@ extern "C" OPENMM_EXPORT_CPU void registerPlatforms() {
map<const ContextImpl*, CpuPlatform::PlatformData*> CpuPlatform::contextData; map<const ContextImpl*, CpuPlatform::PlatformData*> CpuPlatform::contextData;
CpuPlatform::CpuPlatform() { CpuPlatform::CpuPlatform() {
deprecatedPropertyReplacements["CpuThreads"] = "Threads";
CpuKernelFactory* factory = new CpuKernelFactory(); CpuKernelFactory* factory = new CpuKernelFactory();
registerKernelFactory(CalcForcesAndEnergyKernel::Name(), factory); registerKernelFactory(CalcForcesAndEnergyKernel::Name(), factory);
registerKernelFactory(CalcHarmonicAngleForceKernel::Name(), factory); registerKernelFactory(CalcHarmonicAngleForceKernel::Name(), factory);
...@@ -83,7 +84,10 @@ CpuPlatform::CpuPlatform() { ...@@ -83,7 +84,10 @@ CpuPlatform::CpuPlatform() {
const string& CpuPlatform::getPropertyValue(const Context& context, const string& property) const { const string& CpuPlatform::getPropertyValue(const Context& context, const string& property) const {
const ContextImpl& impl = getContextImpl(context); const ContextImpl& impl = getContextImpl(context);
const PlatformData& data = getPlatformData(impl); const PlatformData& data = getPlatformData(impl);
map<string, string>::const_iterator value = data.propertyValues.find(property); string propertyName = property;
if (deprecatedPropertyReplacements.find(property) != deprecatedPropertyReplacements.end())
propertyName = deprecatedPropertyReplacements.find(property)->second;
map<string, string>::const_iterator value = data.propertyValues.find(propertyName);
if (value != data.propertyValues.end()) if (value != data.propertyValues.end())
return value->second; return value->second;
return ReferencePlatform::getPropertyValue(context, property); return ReferencePlatform::getPropertyValue(context, property);
......
...@@ -58,35 +58,35 @@ public: ...@@ -58,35 +58,35 @@ public:
* This is the name of the parameter for selecting which CUDA device or devices to use. * This is the name of the parameter for selecting which CUDA device or devices to use.
*/ */
static const std::string& CudaDeviceIndex() { static const std::string& CudaDeviceIndex() {
static const std::string key = "CudaDeviceIndex"; static const std::string key = "DeviceIndex";
return key; return key;
} }
/** /**
* This is the name of the parameter that reports the CUDA device or devices being used. * This is the name of the parameter that reports the CUDA device or devices being used.
*/ */
static const std::string& CudaDeviceName() { static const std::string& CudaDeviceName() {
static const std::string key = "CudaDeviceName"; static const std::string key = "DeviceName";
return key; return key;
} }
/** /**
* This is the name of the parameter for selecting whether CUDA should sync or spin loop while waiting for results. * This is the name of the parameter for selecting whether CUDA should sync or spin loop while waiting for results.
*/ */
static const std::string& CudaUseBlockingSync() { static const std::string& CudaUseBlockingSync() {
static const std::string key = "CudaUseBlockingSync"; static const std::string key = "UseBlockingSync";
return key; return key;
} }
/** /**
* This is the name of the parameter for selecting what numerical precision to use. * This is the name of the parameter for selecting what numerical precision to use.
*/ */
static const std::string& CudaPrecision() { static const std::string& CudaPrecision() {
static const std::string key = "CudaPrecision"; static const std::string key = "Precision";
return key; return key;
} }
/** /**
* This is the name of the parameter for selecting whether to use the CPU based PME calculation. * This is the name of the parameter for selecting whether to use the CPU based PME calculation.
*/ */
static const std::string& CudaUseCpuPme() { static const std::string& CudaUseCpuPme() {
static const std::string key = "CudaUseCpuPme"; static const std::string key = "UseCpuPme";
return key; return key;
} }
/** /**
...@@ -107,21 +107,21 @@ public: ...@@ -107,21 +107,21 @@ public:
* This is the name of the parameter for specifying the path to the directory for creating temporary files. * This is the name of the parameter for specifying the path to the directory for creating temporary files.
*/ */
static const std::string& CudaTempDirectory() { static const std::string& CudaTempDirectory() {
static const std::string key = "CudaTempDirectory"; static const std::string key = "TempDirectory";
return key; return key;
} }
/** /**
* This is the name of the parameter for selecting whether to disable use of a separate stream for PME. * This is the name of the parameter for selecting whether to disable use of a separate stream for PME.
*/ */
static const std::string& CudaDisablePmeStream() { static const std::string& CudaDisablePmeStream() {
static const std::string key = "CudaDisablePmeStream"; static const std::string key = "DisablePmeStream";
return key; return key;
} }
/** /**
* This is the name of the parameter for requesting that force computations be fully deterministic. * This is the name of the parameter for requesting that force computations be fully deterministic.
*/ */
static const std::string& CudaDeterministicForces() { static const std::string& CudaDeterministicForces() {
static const std::string key = "CudaDeterministicForces"; static const std::string key = "DeterministicForces";
return key; return key;
} }
}; };
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for * * Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. * * Medical Research, grant U54 GM072970. See https://simtk.org. *
* * * *
* Portions copyright (c) 2009-2015 Stanford University and the Authors. * * Portions copyright (c) 2009-2016 Stanford University and the Authors. *
* Authors: Peter Eastman * * Authors: Peter Eastman *
* Contributors: * * Contributors: *
* * * *
...@@ -106,7 +106,7 @@ CudaContext::CudaContext(const System& system, int deviceIndex, bool useBlocking ...@@ -106,7 +106,7 @@ CudaContext::CudaContext(const System& system, int deviceIndex, bool useBlocking
useMixedPrecision = false; useMixedPrecision = false;
} }
else else
throw OpenMMException("Illegal value for CudaPrecision: "+precision); throw OpenMMException("Illegal value for Precision: "+precision);
char* cacheVariable = getenv("OPENMM_CACHE_DIR"); char* cacheVariable = getenv("OPENMM_CACHE_DIR");
cacheDir = (cacheVariable == NULL ? tempDir : string(cacheVariable)); cacheDir = (cacheVariable == NULL ? tempDir : string(cacheVariable));
#ifdef WIN32 #ifdef WIN32
...@@ -121,7 +121,7 @@ CudaContext::CudaContext(const System& system, int deviceIndex, bool useBlocking ...@@ -121,7 +121,7 @@ CudaContext::CudaContext(const System& system, int deviceIndex, bool useBlocking
string errorMessage = "Error initializing Context"; string errorMessage = "Error initializing Context";
CHECK_RESULT(cuDeviceGetCount(&numDevices)); CHECK_RESULT(cuDeviceGetCount(&numDevices));
if (deviceIndex < -1 || deviceIndex >= numDevices) if (deviceIndex < -1 || deviceIndex >= numDevices)
throw OpenMMException("Illegal value for CudaDeviceIndex: "+intToString(deviceIndex)); throw OpenMMException("Illegal value for DeviceIndex: "+intToString(deviceIndex));
vector<int> devicePrecedence; vector<int> devicePrecedence;
if (deviceIndex == -1) { if (deviceIndex == -1) {
......
...@@ -62,6 +62,14 @@ extern "C" OPENMM_EXPORT_CUDA void registerPlatforms() { ...@@ -62,6 +62,14 @@ extern "C" OPENMM_EXPORT_CUDA void registerPlatforms() {
#endif #endif
CudaPlatform::CudaPlatform() { CudaPlatform::CudaPlatform() {
deprecatedPropertyReplacements["CudaDeviceIndex"] = "DeviceIndex";
deprecatedPropertyReplacements["CudaDeviceName"] = "DeviceName";
deprecatedPropertyReplacements["CudaUseBlockingSync"] = "UseBlockingSync";
deprecatedPropertyReplacements["CudaPrecision"] = "Precision";
deprecatedPropertyReplacements["CudaUseCpuPme"] = "UseCpuPme";
deprecatedPropertyReplacements["CudaTempDirectory"] = "TempDirectory";
deprecatedPropertyReplacements["CudaDisablePmeStream"] = "DisablePmeStream";
deprecatedPropertyReplacements["CudaDeterministicForces"] = "DeterministicForces";
CudaKernelFactory* factory = new CudaKernelFactory(); CudaKernelFactory* factory = new CudaKernelFactory();
registerKernelFactory(CalcForcesAndEnergyKernel::Name(), factory); registerKernelFactory(CalcForcesAndEnergyKernel::Name(), factory);
registerKernelFactory(UpdateStateDataKernel::Name(), factory); registerKernelFactory(UpdateStateDataKernel::Name(), factory);
...@@ -144,7 +152,10 @@ bool CudaPlatform::supportsDoublePrecision() const { ...@@ -144,7 +152,10 @@ bool CudaPlatform::supportsDoublePrecision() const {
const string& CudaPlatform::getPropertyValue(const Context& context, const string& property) const { const string& CudaPlatform::getPropertyValue(const Context& context, const string& property) const {
const ContextImpl& impl = getContextImpl(context); const ContextImpl& impl = getContextImpl(context);
const PlatformData* data = reinterpret_cast<const PlatformData*>(impl.getPlatformData()); const PlatformData* data = reinterpret_cast<const PlatformData*>(impl.getPlatformData());
map<string, string>::const_iterator value = data->propertyValues.find(property); string propertyName = property;
if (deprecatedPropertyReplacements.find(property) != deprecatedPropertyReplacements.end())
propertyName = deprecatedPropertyReplacements.find(property)->second;
map<string, string>::const_iterator value = data->propertyValues.find(propertyName);
if (value != data->propertyValues.end()) if (value != data->propertyValues.end())
return value->second; return value->second;
return Platform::getPropertyValue(context, property); return Platform::getPropertyValue(context, property);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for * * Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. * * Medical Research, grant U54 GM072970. See https://simtk.org. *
* * * *
* Portions copyright (c) 2015 Stanford University and the Authors. * * Portions copyright (c) 2015-2016 Stanford University and the Authors. *
* Authors: Peter Eastman * * Authors: Peter Eastman *
* Contributors: * * Contributors: *
* * * *
...@@ -39,5 +39,5 @@ OpenMM::CudaPlatform platform; ...@@ -39,5 +39,5 @@ OpenMM::CudaPlatform platform;
void initializeTests(int argc, char* argv[]) { void initializeTests(int argc, char* argv[]) {
if (argc > 1) if (argc > 1)
platform.setPropertyDefaultValue("CudaPrecision", std::string(argv[1])); platform.setPropertyDefaultValue("Precision", std::string(argv[1]));
} }
...@@ -58,14 +58,14 @@ public: ...@@ -58,14 +58,14 @@ public:
* This is the name of the parameter for selecting which OpenCL device or devices to use. * This is the name of the parameter for selecting which OpenCL device or devices to use.
*/ */
static const std::string& OpenCLDeviceIndex() { static const std::string& OpenCLDeviceIndex() {
static const std::string key = "OpenCLDeviceIndex"; static const std::string key = "DeviceIndex";
return key; return key;
} }
/** /**
* This is the name of the parameter that reports the OpenCL device or devices being used. * This is the name of the parameter that reports the OpenCL device or devices being used.
*/ */
static const std::string& OpenCLDeviceName() { static const std::string& OpenCLDeviceName() {
static const std::string key = "OpenCLDeviceName"; static const std::string key = "DeviceName";
return key; return key;
} }
/** /**
...@@ -86,21 +86,21 @@ public: ...@@ -86,21 +86,21 @@ public:
* This is the name of the parameter for selecting what numerical precision to use. * This is the name of the parameter for selecting what numerical precision to use.
*/ */
static const std::string& OpenCLPrecision() { static const std::string& OpenCLPrecision() {
static const std::string key = "OpenCLPrecision"; static const std::string key = "Precision";
return key; return key;
} }
/** /**
* This is the name of the parameter for selecting whether to use the CPU based PME calculation. * This is the name of the parameter for selecting whether to use the CPU based PME calculation.
*/ */
static const std::string& OpenCLUseCpuPme() { static const std::string& OpenCLUseCpuPme() {
static const std::string key = "OpenCLUseCpuPme"; static const std::string key = "UseCpuPme";
return key; return key;
} }
/** /**
* This is the name of the parameter for selecting whether to disable use of a separate stream for PME. * This is the name of the parameter for selecting whether to disable use of a separate stream for PME.
*/ */
static const std::string& OpenCLDisablePmeStream() { static const std::string& OpenCLDisablePmeStream() {
static const std::string key = "OpenCLDisablePmeStream"; static const std::string key = "DisablePmeStream";
return key; return key;
} }
}; };
......
...@@ -84,7 +84,7 @@ OpenCLContext::OpenCLContext(const System& system, int platformIndex, int device ...@@ -84,7 +84,7 @@ OpenCLContext::OpenCLContext(const System& system, int platformIndex, int device
useMixedPrecision = false; useMixedPrecision = false;
} }
else else
throw OpenMMException("Illegal value for OpenCLPrecision: "+precision); throw OpenMMException("Illegal value for Precision: "+precision);
try { try {
contextIndex = platformData.contexts.size(); contextIndex = platformData.contexts.size();
std::vector<cl::Platform> platforms; std::vector<cl::Platform> platforms;
...@@ -105,7 +105,7 @@ OpenCLContext::OpenCLContext(const System& system, int platformIndex, int device ...@@ -105,7 +105,7 @@ OpenCLContext::OpenCLContext(const System& system, int platformIndex, int device
vector<cl::Device> devices; vector<cl::Device> devices;
platforms[j].getDevices(CL_DEVICE_TYPE_ALL, &devices); platforms[j].getDevices(CL_DEVICE_TYPE_ALL, &devices);
if (deviceIndex < -1 || deviceIndex >= (int) devices.size()) if (deviceIndex < -1 || deviceIndex >= (int) devices.size())
throw OpenMMException("Illegal value for OpenCLDeviceIndex: "+intToString(deviceIndex)); throw OpenMMException("Illegal value for DeviceIndex: "+intToString(deviceIndex));
for (int i = 0; i < (int) devices.size(); i++) { for (int i = 0; i < (int) devices.size(); i++) {
// If they supplied a valid deviceIndex, we only look through that one // If they supplied a valid deviceIndex, we only look through that one
......
...@@ -56,6 +56,11 @@ extern "C" OPENMM_EXPORT_OPENCL void registerPlatforms() { ...@@ -56,6 +56,11 @@ extern "C" OPENMM_EXPORT_OPENCL void registerPlatforms() {
#endif #endif
OpenCLPlatform::OpenCLPlatform() { OpenCLPlatform::OpenCLPlatform() {
deprecatedPropertyReplacements["OpenCLDeviceIndex"] = "DeviceIndex";
deprecatedPropertyReplacements["OpenCLDeviceName"] = "DeviceName";
deprecatedPropertyReplacements["OpenCLPrecision"] = "Precision";
deprecatedPropertyReplacements["OpenCLUseCpuPme"] = "UseCpuPme";
deprecatedPropertyReplacements["OpenCLDisablePmeStream"] = "DisablePmeStream";
OpenCLKernelFactory* factory = new OpenCLKernelFactory(); OpenCLKernelFactory* factory = new OpenCLKernelFactory();
registerKernelFactory(CalcForcesAndEnergyKernel::Name(), factory); registerKernelFactory(CalcForcesAndEnergyKernel::Name(), factory);
registerKernelFactory(UpdateStateDataKernel::Name(), factory); registerKernelFactory(UpdateStateDataKernel::Name(), factory);
...@@ -139,7 +144,10 @@ bool OpenCLPlatform::isPlatformSupported() { ...@@ -139,7 +144,10 @@ bool OpenCLPlatform::isPlatformSupported() {
const string& OpenCLPlatform::getPropertyValue(const Context& context, const string& property) const { const string& OpenCLPlatform::getPropertyValue(const Context& context, const string& property) const {
const ContextImpl& impl = getContextImpl(context); const ContextImpl& impl = getContextImpl(context);
const PlatformData* data = reinterpret_cast<const PlatformData*>(impl.getPlatformData()); const PlatformData* data = reinterpret_cast<const PlatformData*>(impl.getPlatformData());
map<string, string>::const_iterator value = data->propertyValues.find(property); string propertyName = property;
if (deprecatedPropertyReplacements.find(property) != deprecatedPropertyReplacements.end())
propertyName = deprecatedPropertyReplacements.find(property)->second;
map<string, string>::const_iterator value = data->propertyValues.find(propertyName);
if (value != data->propertyValues.end()) if (value != data->propertyValues.end())
return value->second; return value->second;
return Platform::getPropertyValue(context, property); return Platform::getPropertyValue(context, property);
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
* Biological Structures at Stanford, funded under the NIH Roadmap for * * Biological Structures at Stanford, funded under the NIH Roadmap for *
* Medical Research, grant U54 GM072970. See https://simtk.org. * * Medical Research, grant U54 GM072970. See https://simtk.org. *
* * * *
* Portions copyright (c) 2015 Stanford University and the Authors. * * Portions copyright (c) 2015-2016 Stanford University and the Authors. *
* Authors: Peter Eastman * * Authors: Peter Eastman *
* Contributors: * * Contributors: *
* * * *
...@@ -39,9 +39,9 @@ OpenMM::OpenCLPlatform platform; ...@@ -39,9 +39,9 @@ OpenMM::OpenCLPlatform platform;
void initializeTests(int argc, char* argv[]) { void initializeTests(int argc, char* argv[]) {
if (argc > 1) if (argc > 1)
platform.setPropertyDefaultValue("OpenCLPrecision", std::string(argv[1])); platform.setPropertyDefaultValue("Precision", std::string(argv[1]));
if (argc > 2) if (argc > 2)
platform.setPropertyDefaultValue("OpenCLPlatformIndex", std::string(argv[2])); platform.setPropertyDefaultValue("OpenCLPlatformIndex", std::string(argv[2]));
if (argc > 3) if (argc > 3)
platform.setPropertyDefaultValue("OpenCLDeviceIndex", std::string(argv[3])); platform.setPropertyDefaultValue("DeviceIndex", std::string(argv[3]));
} }
...@@ -329,7 +329,7 @@ int main(int argc, char* argv[]) { ...@@ -329,7 +329,7 @@ int main(int argc, char* argv[]) {
std::cout << "TestCudaAmoebaAngleForce running test..." << std::endl; std::cout << "TestCudaAmoebaAngleForce running test..." << std::endl;
registerAmoebaCudaKernelFactories(); registerAmoebaCudaKernelFactories();
if (argc > 1) if (argc > 1)
Platform::getPlatformByName("CUDA").setPropertyDefaultValue("CudaPrecision", std::string(argv[1])); Platform::getPlatformByName("CUDA").setPropertyDefaultValue("Precision", std::string(argv[1]));
testOneAngle(); testOneAngle();
testPeriodic(); testPeriodic();
......
...@@ -248,7 +248,7 @@ int main(int argc, char* argv[]) { ...@@ -248,7 +248,7 @@ int main(int argc, char* argv[]) {
std::cout << "TestCudaAmoebaBondForce running test..." << std::endl; std::cout << "TestCudaAmoebaBondForce running test..." << std::endl;
registerAmoebaCudaKernelFactories(); registerAmoebaCudaKernelFactories();
if (argc > 1) if (argc > 1)
Platform::getPlatformByName("CUDA").setPropertyDefaultValue("CudaPrecision", std::string(argv[1])); Platform::getPlatformByName("CUDA").setPropertyDefaultValue("Precision", std::string(argv[1]));
testTwoBond(); testTwoBond();
testPeriodic(); testPeriodic();
} catch(const std::exception& e) { } catch(const std::exception& e) {
......
...@@ -8460,7 +8460,7 @@ int main(int argc, char* argv[]) { ...@@ -8460,7 +8460,7 @@ int main(int argc, char* argv[]) {
std::cout << "TestCudaAmoebaGeneralizedKirkwoodForce running test..." << std::endl; std::cout << "TestCudaAmoebaGeneralizedKirkwoodForce running test..." << std::endl;
registerAmoebaCudaKernelFactories(); registerAmoebaCudaKernelFactories();
if (argc > 1) if (argc > 1)
Platform::getPlatformByName("CUDA").setPropertyDefaultValue("CudaPrecision", std::string(argv[1])); Platform::getPlatformByName("CUDA").setPropertyDefaultValue("Precision", std::string(argv[1]));
   
// test direct and mutual polarization cases and // test direct and mutual polarization cases and
// mutual polarization w/ the cavity term // mutual polarization w/ the cavity term
......
...@@ -395,7 +395,7 @@ int main(int argc, char* argv[]) { ...@@ -395,7 +395,7 @@ int main(int argc, char* argv[]) {
std::cout << "TestCudaAmoebaInPlaneAngleForce running test..." << std::endl; std::cout << "TestCudaAmoebaInPlaneAngleForce running test..." << std::endl;
registerAmoebaCudaKernelFactories(); registerAmoebaCudaKernelFactories();
if (argc > 1) if (argc > 1)
Platform::getPlatformByName("CUDA").setPropertyDefaultValue("CudaPrecision", std::string(argv[1])); Platform::getPlatformByName("CUDA").setPropertyDefaultValue("Precision", std::string(argv[1]));
testOneAngle(); testOneAngle();
testPeriodic(); testPeriodic();
} catch(const std::exception& e) { } catch(const std::exception& e) {
......
...@@ -3066,7 +3066,7 @@ int main(int argc, char* argv[]) { ...@@ -3066,7 +3066,7 @@ int main(int argc, char* argv[]) {
std::cout << "TestCudaAmoebaMultipoleForce running test..." << std::endl; std::cout << "TestCudaAmoebaMultipoleForce running test..." << std::endl;
registerAmoebaCudaKernelFactories(); registerAmoebaCudaKernelFactories();
if (argc > 1) if (argc > 1)
Platform::getPlatformByName("CUDA").setPropertyDefaultValue("CudaPrecision", std::string(argv[1])); Platform::getPlatformByName("CUDA").setPropertyDefaultValue("Precision", std::string(argv[1]));
// tests using two ammonia molecules // tests using two ammonia molecules
......
...@@ -490,7 +490,7 @@ int main(int argc, char* argv[]) { ...@@ -490,7 +490,7 @@ int main(int argc, char* argv[]) {
std::cout << "TestCudaAmoebaOutOfPlaneBendForce running test..." << std::endl; std::cout << "TestCudaAmoebaOutOfPlaneBendForce running test..." << std::endl;
registerAmoebaCudaKernelFactories(); registerAmoebaCudaKernelFactories();
if (argc > 1) if (argc > 1)
Platform::getPlatformByName("CUDA").setPropertyDefaultValue("CudaPrecision", std::string(argv[1])); Platform::getPlatformByName("CUDA").setPropertyDefaultValue("Precision", std::string(argv[1]));
testOneOutOfPlaneBend(); testOneOutOfPlaneBend();
testPeriodic(); testPeriodic();
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment