First fixes towards compilation on Visual Studio 2013

pull/108/head
Cedric Nugteren 2016-10-10 20:37:45 +02:00
parent 39afc9543b
commit fcac81bfef
4 changed files with 66 additions and 11 deletions

View File

@ -48,6 +48,23 @@ const std::vector<Database::DatabaseEntry> Database::database = {
KernelSelectionHalf, KernelSelectionSingle, KernelSelectionDouble, KernelSelectionComplexSingle, KernelSelectionComplexDouble
};
// The OpenCL device types
const std::string Database::kDeviceTypeCPU = "CPU";
const std::string Database::kDeviceTypeGPU = "GPU";
const std::string Database::kDeviceTypeAccelerator = "accelerator";
const std::string Database::kDeviceTypeAll = "default";
// The OpenCL device vendors
const std::string Database::kDeviceVendorAll = "default";
// Alternative names for some OpenCL vendors
const std::unordered_map<std::string, std::string> Database::kVendorNames{
{ "Intel(R) Corporation", "Intel" },
{ "GenuineIntel", "Intel" },
{ "Advanced Micro Devices, Inc.", "AMD" },
{ "NVIDIA Corporation", "NVIDIA" },
};
// =================================================================================================
// Constructor, computing device properties and populating the parameter-vector from the database.

View File

@ -51,21 +51,16 @@ class Database {
};
// The OpenCL device types
static constexpr auto kDeviceTypeCPU = "CPU";
static constexpr auto kDeviceTypeGPU = "GPU";
static constexpr auto kDeviceTypeAccelerator = "accelerator";
static constexpr auto kDeviceTypeAll = "default";
static const std::string kDeviceTypeCPU;
static const std::string kDeviceTypeGPU;
static const std::string kDeviceTypeAccelerator;
static const std::string kDeviceTypeAll;
// The OpenCL device vendors
static constexpr auto kDeviceVendorAll = "default";
static const std::string kDeviceVendorAll;
// Alternative names for some OpenCL vendors
const std::unordered_map<std::string,std::string> kVendorNames {
{"Intel(R) Corporation", "Intel"},
{"GenuineIntel", "Intel"},
{"Advanced Micro Devices, Inc.", "AMD"},
{"NVIDIA Corporation", "NVIDIA"},
};
static const std::unordered_map<std::string, std::string> kVendorNames;
// The database consists of separate database entries, stored together in a vector
static const DatabaseEntry XaxpyHalf, XaxpySingle, XaxpyDouble, XaxpyComplexSingle, XaxpyComplexDouble;

39
src/msvc.hpp 100644
View File

@ -0,0 +1,39 @@
// =================================================================================================
// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This
// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max-
// width of 100 characters per line.
//
// Author(s):
// Cedric Nugteren <www.cedricnugteren.nl>
//
// This file provides macro's and definitions to make compilation work on Microsoft Visual Studio,
// in particular for versions older than 2015 with limited C++11 support.
// MSVC++ 14.0 _MSC_VER == 1900 (Visual Studio 2015)
// MSVC++ 12.0 _MSC_VER == 1800 (Visual Studio 2013)
// MSVC++ 11.0 _MSC_VER == 1700 (Visual Studio 2012)
// MSVC++ 10.0 _MSC_VER == 1600 (Visual Studio 2010)
// MSVC++ 9.0 _MSC_VER == 1500 (Visual Studio 2008)
//
// =================================================================================================
#ifndef CLBLAST_MSVC_HPP_
#define CLBLAST_MSVC_HPP_
namespace clblast {
// =================================================================================================
#ifdef _MSC_VER
// No support for constexpr prior to 2015. Note that this only works with constants, not with
// constexpr functions (unused in this project).
#if _MSC_VER < 1900
#define constexpr const
#endif
// _MSC_VER
#endif
// =================================================================================================
} // namespace clblast
// CLBLAST_MSVC_HPP_
#endif

View File

@ -25,6 +25,10 @@
#include "clblast_half.h"
#include "clpp11.hpp"
#ifdef _MSC_VER
#include "msvc.hpp"
#endif
namespace clblast {
// =================================================================================================