Browse Source

tweaked headers

pull/338/head
Marcus Cuda 11 years ago
parent
commit
484cb758e8
  1. 79
      src/NativeProviders/Common/lapack_common.h
  2. 12
      src/NativeProviders/MKL/lapack.h
  3. 2
      src/NativeProviders/OpenBLAS/lapack.h

79
src/NativeProviders/Common/lapack_common.h

@ -1,63 +1,62 @@
#ifndef LAPACK_COMMON_H
#define LAPACK_COMMON_H
#pragma once
#include <string.h>
const int INSUFFICIENT_MEMORY = -999999;
#ifndef LAPACK_MEMORY
#define LAPACK_MEMORY
#include <memory>
template <typename T> using array_ptr = std::unique_ptr<T[]>;
void shift_ipiv_down(int m, int ipiv[]);
inline void shift_ipiv_down(int m, int ipiv[]){
for(int i = 0; i < m; ++i ){
template<typename T>
inline array_ptr<T> array_new(const int size)
{
return array_ptr<T>(new T[size]);
}
#endif
template<typename T>
inline array_ptr<T> array_clone(const int size, const T* array)
{
auto clone = array_new<T>(size);
memcpy(clone.get(), array, size * sizeof(T));
return clone;
}
inline void shift_ipiv_down(int m, int ipiv[])
{
for(auto i = 0; i < m; ++i )
{
ipiv[i] -= 1;
}
}
void shift_ipiv_up(int m, int ipiv[]);
inline void shift_ipiv_up(int m, int ipiv[]){
for(int i = 0; i < m; ++i ){
inline void shift_ipiv_up(int m, int ipiv[])
{
for(auto i = 0; i < m; ++i )
{
ipiv[i] += 1;
}
}
template<typename T>
inline T* Clone(const int m, const int n, const T* a){
T* clone = new T[m*n];
inline T* Clone(const int m, const int n, const T* a)
{
auto clone = new T[m*n];
memcpy(clone, a, m*n*sizeof(T));
return clone;
}
template<typename T>
inline void copyBtoX (int m, int n, int bn, T b[], T x[]){
for (int i = 0; i < n; ++i)
inline void copyBtoX (int m, int n, int bn, T b[], T x[])
{
for (auto i = 0; i < n; ++i)
{
for (int j = 0; j < bn; ++j)
for (auto j = 0; j < bn; ++j)
{
x[j * n + i] = b[j * m + i];
}
}
}
#ifndef LAPACK_MEMORY
#define LAPACK_MEMORY
#include <memory>
const int INSUFFICIENT_MEMORY = -999999;
const int ALIGNMENT = 64;
template <typename T> using array_ptr = std::unique_ptr<T[]>;
template<typename T>
inline array_ptr<T> array_new(const int size, int alignment = ALIGNMENT)
{
return array_ptr<T>(new T[size]);
}
#endif
template<typename T>
inline array_ptr<T> array_clone(const int size, const T* array) {
auto clone = array_new<T>(size);
memcpy(clone.get(), array, size * sizeof(T));
return clone;
}
#endif

12
src/NativeProviders/MKL/lapack.h

@ -1,15 +1,14 @@
#pragma once
#include <complex>
#include <memory>
#define MKL_Complex8 std::complex<float>
#define MKL_Complex16 std::complex<double>
#define LAPACK_MEMORY
#include "mkl.h"
#define LAPACK_MEMORY
#include <memory>
const int INSUFFICIENT_MEMORY = -999999;
const int ALIGNMENT = 64;
struct array_free
@ -20,9 +19,9 @@ struct array_free
template <typename T> using array_ptr = std::unique_ptr<T[], array_free>;
template<typename T>
inline array_ptr<T> array_new(const int size, int alignment = ALIGNMENT)
inline array_ptr<T> array_new(const int size)
{
auto ret = static_cast<T*>(mkl_malloc(size * sizeof(T), alignment));
auto ret = static_cast<T*>(mkl_malloc(size * sizeof(T), ALIGNMENT));
if (!ret)
{
@ -31,4 +30,3 @@ inline array_ptr<T> array_new(const int size, int alignment = ALIGNMENT)
return array_ptr<T>(ret);
}

2
src/NativeProviders/OpenBLAS/lapack.h

@ -7,3 +7,5 @@
#include "cblas.h"
#include "lapacke.h"

Loading…
Cancel
Save