[arrayfire] 22/248: Changed default backend enum to point to zero
Ghislain Vaillant
ghisvail-guest at moszumanska.debian.org
Tue Nov 17 15:53:50 UTC 2015
This is an automated email from the git hooks/post-receive script.
ghisvail-guest pushed a commit to branch dfsg-clean
in repository arrayfire.
commit cc26908514fb3f3b0db7ee5d6cd4cc98c68e0288
Author: pradeep <pradeep at arrayfire.com>
Date: Mon Aug 31 13:27:23 2015 -0400
Changed default backend enum to point to zero
also cleaned up some constants used in symbol manager class
---
include/af/defines.h | 8 ++++----
src/api/hapi/symbol_manager.cpp | 31 +++++++++++++++++--------------
src/api/hapi/symbol_manager.hpp | 9 ++++++++-
3 files changed, 29 insertions(+), 19 deletions(-)
diff --git a/include/af/defines.h b/include/af/defines.h
index ba2aea9..8d6dbd0 100644
--- a/include/af/defines.h
+++ b/include/af/defines.h
@@ -322,10 +322,10 @@ typedef enum {
} af_image_format;
typedef enum {
- AF_BACKEND_CPU = 0, ///< CPU a.k.a sequential algorithms
- AF_BACKEND_CUDA = 1, ///< CUDA Compute Backend
- AF_BACKEND_OPENCL = 2, ///< OpenCL Compute Backend
- AF_BACKEND_DEFAULT = 3 ///< Default backend order: OpenCL -> CUDA -> CPU
+ AF_BACKEND_DEFAULT = 0, ///< Default backend order: OpenCL -> CUDA -> CPU
+ AF_BACKEND_CPU = 1, ///< CPU a.k.a sequential algorithms
+ AF_BACKEND_CUDA = 2, ///< CUDA Compute Backend
+ AF_BACKEND_OPENCL = 3, ///< OpenCL Compute Backend
} af_backend;
// Below enum is purely added for example purposes
diff --git a/src/api/hapi/symbol_manager.cpp b/src/api/hapi/symbol_manager.cpp
index a2cd701..2ce323a 100644
--- a/src/api/hapi/symbol_manager.cpp
+++ b/src/api/hapi/symbol_manager.cpp
@@ -10,10 +10,10 @@
#include "symbol_manager.hpp"
#if defined(OS_WIN)
-static const char* LIB_AF_BKND_NAME[] = {"afcpu.dll", "afcuda.dll", "afopencl.dll"};
+static const char* LIB_AF_BKND_NAME[NUM_BACKENDS] = {"afcpu.dll", "afcuda.dll", "afopencl.dll"};
#define RTLD_LAZY 0
#else
-static const char* LIB_AF_BKND_NAME[] = {"libafcpu.so", "libafcuda.so", "libafopencl.so"};
+static const char* LIB_AF_BKND_NAME[NUM_BACKENDS] = {"libafcpu.so", "libafcuda.so", "libafopencl.so"};
#endif
AFSymbolManager& AFSymbolManager::getInstance()
@@ -46,14 +46,13 @@ void closeDynLibrary(LibHandle handle)
}
AFSymbolManager::AFSymbolManager()
- : backendBitFlag(0x0000), activeHandle(NULL), defaultHandle(NULL)
+ : backendBitFlag(NO_BACKEND_LOADED), activeHandle(NULL), defaultHandle(NULL)
{
- // AF_BACKEND_DEFAULT enum value is 1 + last valid compute
- // backend in af_backend enum, hence it represents the number
- // of valid backends in ArrayFire framework
- unsigned bkndFlag = 0x0001;
- for(int i=0; i<AF_BACKEND_DEFAULT; ++i) {
+ unsigned bkndFlag = CPU_BACKEND_MASK;
+ for(int i=0; i<NUM_BACKENDS; ++i) {
+ printf("backend %d %s \n", i, LIB_AF_BKND_NAME[i]);
bkndHandles[i] = openDynLibrary(LIB_AF_BKND_NAME[i]);
+ printf("backend handle %p\n", bkndHandles[i]);
if (bkndHandles[i]) {
backendBitFlag |= bkndFlag;
activeHandle = bkndHandles[i];
@@ -64,26 +63,30 @@ AFSymbolManager::AFSymbolManager()
// inorder to use it in ::setBackend when
// the user passes AF_BACKEND_DEFAULT
defaultHandle = activeHandle;
+ printf("backend bit flag %x\n", backendBitFlag);
}
AFSymbolManager::~AFSymbolManager()
{
- unsigned bkndFlag = 0x0001;
- for(int i=0; i<AF_BACKEND_DEFAULT; ++i) {
+ unsigned bkndFlag = CPU_BACKEND_MASK;
+ for(int i=0; i<NUM_BACKENDS; ++i) {
if (bkndFlag & backendBitFlag)
closeDynLibrary(bkndHandles[i]);
bkndFlag = bkndFlag << 1;
}
- backendBitFlag = 0x0000;
+ backendBitFlag = NO_BACKEND_LOADED;
}
af_err AFSymbolManager::setBackend(af::Backend bknd)
{
if (bknd==AF_BACKEND_DEFAULT) {
- activeHandle = defaultHandle;
- return AF_SUCCESS;
+ if (defaultHandle) {
+ activeHandle = defaultHandle;
+ return AF_SUCCESS;
+ } else
+ return AF_ERR_LOAD_LIB;
}
- unsigned bkndFlag = 0x0001;
+ unsigned bkndFlag = CPU_BACKEND_MASK;
if((bkndFlag << bknd) & backendBitFlag) {
activeHandle = bkndHandles[bknd];
return AF_SUCCESS;
diff --git a/src/api/hapi/symbol_manager.hpp b/src/api/hapi/symbol_manager.hpp
index 848bf31..ff6e7df 100644
--- a/src/api/hapi/symbol_manager.hpp
+++ b/src/api/hapi/symbol_manager.hpp
@@ -18,6 +18,10 @@ typedef HMODULE LibHandle;
typedef void* LibHandle;
#endif
+const unsigned NUM_BACKENDS = 3;
+const unsigned NO_BACKEND_LOADED = 0x0000;
+const unsigned CPU_BACKEND_MASK = 0x0001;
+
class AFSymbolManager {
public:
static AFSymbolManager& getInstance();
@@ -52,9 +56,12 @@ class AFSymbolManager {
void operator=(AFSymbolManager const&);
private:
+ /* The following bit flag represents which
+ * backends are available. 32-bits and 32 backends
+ * LSB - CPU, next one CUDA, next one OpenCL and so on. */
unsigned backendBitFlag;
- LibHandle bkndHandles[3];
+ LibHandle bkndHandles[NUM_BACKENDS];
LibHandle activeHandle;
LibHandle defaultHandle;
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/arrayfire.git
More information about the debian-science-commits
mailing list