mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-07-21 12:24:25 +08:00
Add support for OSX in BTL and fix a few warnings
This commit is contained in:
parent
ce41b72eb8
commit
33ca9b4ee6
@ -48,6 +48,12 @@ include_directories(
|
|||||||
# set(DEFAULT_LIBRARIES ${MKL_LIBRARIES})
|
# set(DEFAULT_LIBRARIES ${MKL_LIBRARIES})
|
||||||
# endif (MKL_FOUND)
|
# endif (MKL_FOUND)
|
||||||
|
|
||||||
|
find_library(EIGEN_BTL_RT_LIBRARY rt)
|
||||||
|
# if we cannot find it easily, then we don't need it!
|
||||||
|
if(NOT EIGEN_BTL_RT_LIBRARY)
|
||||||
|
set(EIGEN_BTL_RT_LIBRARY "")
|
||||||
|
endif()
|
||||||
|
|
||||||
MACRO(BTL_ADD_BENCH targetname)
|
MACRO(BTL_ADD_BENCH targetname)
|
||||||
|
|
||||||
foreach(_current_var ${ARGN})
|
foreach(_current_var ${ARGN})
|
||||||
@ -70,7 +76,7 @@ MACRO(BTL_ADD_BENCH targetname)
|
|||||||
IF(BUILD_${targetname})
|
IF(BUILD_${targetname})
|
||||||
ADD_EXECUTABLE(${targetname} ${_sources})
|
ADD_EXECUTABLE(${targetname} ${_sources})
|
||||||
ADD_TEST(${targetname} "${targetname}")
|
ADD_TEST(${targetname} "${targetname}")
|
||||||
target_link_libraries(${targetname} ${DEFAULT_LIBRARIES} rt)
|
target_link_libraries(${targetname} ${DEFAULT_LIBRARIES} ${EIGEN_BTL_RT_LIBRARY})
|
||||||
ENDIF(BUILD_${targetname})
|
ENDIF(BUILD_${targetname})
|
||||||
|
|
||||||
ENDMACRO(BTL_ADD_BENCH)
|
ENDMACRO(BTL_ADD_BENCH)
|
||||||
|
@ -102,8 +102,8 @@ BTL_DONT_INLINE void bench( int size_min, int size_max, int nb_point )
|
|||||||
// merge the two data
|
// merge the two data
|
||||||
std::vector<int> newSizes;
|
std::vector<int> newSizes;
|
||||||
std::vector<double> newFlops;
|
std::vector<double> newFlops;
|
||||||
int i=0;
|
unsigned int i=0;
|
||||||
int j=0;
|
unsigned int j=0;
|
||||||
while (i<tab_sizes.size() && j<oldSizes.size())
|
while (i<tab_sizes.size() && j<oldSizes.size())
|
||||||
{
|
{
|
||||||
if (tab_sizes[i] == oldSizes[j])
|
if (tab_sizes[i] == oldSizes[j])
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
|
|
||||||
#if (defined __GNUC__) && (!defined __INTEL_COMPILER) && !defined(__arm__) && !defined(__powerpc__)
|
#if (defined __GNUC__) && (!defined __INTEL_COMPILER) && !defined(__arm__) && !defined(__powerpc__)
|
||||||
#define BTL_DISABLE_SSE_EXCEPTIONS() { \
|
#define BTL_DISABLE_SSE_EXCEPTIONS() { \
|
||||||
int aux; \
|
int aux = 0; \
|
||||||
asm( \
|
asm( \
|
||||||
"stmxcsr %[aux] \n\t" \
|
"stmxcsr %[aux] \n\t" \
|
||||||
"orl $32832, %[aux] \n\t" \
|
"orl $32832, %[aux] \n\t" \
|
||||||
|
@ -29,7 +29,7 @@ BTL_DONT_INLINE void init_row(Vector & X, int size, int row){
|
|||||||
|
|
||||||
X.resize(size);
|
X.resize(size);
|
||||||
|
|
||||||
for (int j=0;j<X.size();j++){
|
for (unsigned int j=0;j<X.size();j++){
|
||||||
X[j]=typename Vector::value_type(init_function(row,j));
|
X[j]=typename Vector::value_type(init_function(row,j));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -42,7 +42,7 @@ BTL_DONT_INLINE void init_row(Vector & X, int size, int row){
|
|||||||
template<double init_function(int,int),class Vector>
|
template<double init_function(int,int),class Vector>
|
||||||
BTL_DONT_INLINE void init_matrix(Vector & A, int size){
|
BTL_DONT_INLINE void init_matrix(Vector & A, int size){
|
||||||
A.resize(size);
|
A.resize(size);
|
||||||
for (int row=0; row<A.size() ; row++){
|
for (unsigned int row=0; row<A.size() ; row++){
|
||||||
init_row<init_function>(A[row],size,row);
|
init_row<init_function>(A[row],size,row);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -50,11 +50,11 @@ BTL_DONT_INLINE void init_matrix(Vector & A, int size){
|
|||||||
template<double init_function(int,int),class Matrix>
|
template<double init_function(int,int),class Matrix>
|
||||||
BTL_DONT_INLINE void init_matrix_symm(Matrix& A, int size){
|
BTL_DONT_INLINE void init_matrix_symm(Matrix& A, int size){
|
||||||
A.resize(size);
|
A.resize(size);
|
||||||
for (int row=0; row<A.size() ; row++)
|
for (unsigned int row=0; row<A.size() ; row++)
|
||||||
A[row].resize(size);
|
A[row].resize(size);
|
||||||
for (int row=0; row<A.size() ; row++){
|
for (unsigned int row=0; row<A.size() ; row++){
|
||||||
A[row][row] = init_function(row,row);
|
A[row][row] = init_function(row,row);
|
||||||
for (int col=0; col<row ; col++){
|
for (unsigned int col=0; col<row ; col++){
|
||||||
double x = init_function(row,col);
|
double x = init_function(row,col);
|
||||||
A[row][col] = A[col][row] = x;
|
A[row][col] = A[col][row] = x;
|
||||||
}
|
}
|
||||||
|
@ -29,7 +29,7 @@ void init_vector(Vector & X, int size){
|
|||||||
|
|
||||||
X.resize(size);
|
X.resize(size);
|
||||||
|
|
||||||
for (int i=0;i<X.size();i++){
|
for (unsigned int i=0;i<X.size();i++){
|
||||||
X[i]=typename Vector::value_type(init_function(i));
|
X[i]=typename Vector::value_type(init_function(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ public:
|
|||||||
// time measurement
|
// time measurement
|
||||||
action.calculate();
|
action.calculate();
|
||||||
_chronos.start();
|
_chronos.start();
|
||||||
for (int ii=0;ii<_nb_calc;ii++)
|
for (unsigned int ii=0;ii<_nb_calc;ii++)
|
||||||
{
|
{
|
||||||
action.calculate();
|
action.calculate();
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
// timer -------------------------------------------------------------------//
|
// timer -------------------------------------------------------------------//
|
||||||
|
|
||||||
// A timer object measures CPU time.
|
// A timer object measures CPU time.
|
||||||
#ifdef _MSC_VER
|
#if defined(_MSC_VER)
|
||||||
|
|
||||||
#define NOMINMAX
|
#define NOMINMAX
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
@ -87,6 +87,48 @@
|
|||||||
|
|
||||||
}; // Portable_Timer
|
}; // Portable_Timer
|
||||||
|
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
#include <CoreServices/CoreServices.h>
|
||||||
|
#include <mach/mach_time.h>
|
||||||
|
|
||||||
|
|
||||||
|
class Portable_Timer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
Portable_Timer()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void start()
|
||||||
|
{
|
||||||
|
m_start_time = double(mach_absolute_time())*1e-9;;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void stop()
|
||||||
|
{
|
||||||
|
m_stop_time = double(mach_absolute_time())*1e-9;;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
double elapsed()
|
||||||
|
{
|
||||||
|
return user_time();
|
||||||
|
}
|
||||||
|
|
||||||
|
double user_time()
|
||||||
|
{
|
||||||
|
return m_stop_time - m_start_time;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
double m_stop_time, m_start_time;
|
||||||
|
|
||||||
|
}; // Portable_Timer (Apple)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
@ -138,7 +180,7 @@ private:
|
|||||||
int m_clkid;
|
int m_clkid;
|
||||||
double m_stop_time, m_start_time;
|
double m_stop_time, m_start_time;
|
||||||
|
|
||||||
}; // Portable_Timer
|
}; // Portable_Timer (Linux)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -52,8 +52,8 @@ public :
|
|||||||
static BTL_DONT_INLINE void matrix_from_stl(gene_matrix & A, stl_matrix & A_stl){
|
static BTL_DONT_INLINE void matrix_from_stl(gene_matrix & A, stl_matrix & A_stl){
|
||||||
A.resize(A_stl[0].size(), A_stl.size());
|
A.resize(A_stl[0].size(), A_stl.size());
|
||||||
|
|
||||||
for (int j=0; j<A_stl.size() ; j++){
|
for (unsigned int j=0; j<A_stl.size() ; j++){
|
||||||
for (int i=0; i<A_stl[j].size() ; i++){
|
for (unsigned int i=0; i<A_stl[j].size() ; i++){
|
||||||
A.coeffRef(i,j) = A_stl[j][i];
|
A.coeffRef(i,j) = A_stl[j][i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -62,13 +62,13 @@ public :
|
|||||||
static BTL_DONT_INLINE void vector_from_stl(gene_vector & B, stl_vector & B_stl){
|
static BTL_DONT_INLINE void vector_from_stl(gene_vector & B, stl_vector & B_stl){
|
||||||
B.resize(B_stl.size(),1);
|
B.resize(B_stl.size(),1);
|
||||||
|
|
||||||
for (int i=0; i<B_stl.size() ; i++){
|
for (unsigned int i=0; i<B_stl.size() ; i++){
|
||||||
B.coeffRef(i) = B_stl[i];
|
B.coeffRef(i) = B_stl[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static BTL_DONT_INLINE void vector_to_stl(gene_vector & B, stl_vector & B_stl){
|
static BTL_DONT_INLINE void vector_to_stl(gene_vector & B, stl_vector & B_stl){
|
||||||
for (int i=0; i<B_stl.size() ; i++){
|
for (unsigned int i=0; i<B_stl.size() ; i++){
|
||||||
B_stl[i] = B.coeff(i);
|
B_stl[i] = B.coeff(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user