mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-11 19:29:02 +08:00
various MSVC fixes in BTL
This commit is contained in:
parent
22875683b9
commit
8679d895d3
@ -86,9 +86,9 @@ public :
|
|||||||
}
|
}
|
||||||
|
|
||||||
BTL_DONT_INLINE void calculate( void ) {
|
BTL_DONT_INLINE void calculate( void ) {
|
||||||
asm("#begin atv");
|
BTL_ASM_COMMENT("begin atv");
|
||||||
Interface::atv_product(A,B,X,_size);
|
Interface::atv_product(A,B,X,_size);
|
||||||
asm("#end atv");
|
BTL_ASM_COMMENT("end atv");
|
||||||
}
|
}
|
||||||
|
|
||||||
void check_result( void )
|
void check_result( void )
|
||||||
|
@ -85,9 +85,9 @@ public :
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline void calculate( void ) {
|
inline void calculate( void ) {
|
||||||
asm("#mybegin axpby");
|
BTL_ASM_COMMENT("mybegin axpby");
|
||||||
Interface::axpby(_alpha,X,_beta,Y,_size);
|
Interface::axpby(_alpha,X,_beta,Y,_size);
|
||||||
asm("#myend axpby");
|
BTL_ASM_COMMENT("myend axpby");
|
||||||
}
|
}
|
||||||
|
|
||||||
void check_result( void ){
|
void check_result( void ){
|
||||||
|
@ -96,9 +96,9 @@ public :
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline void calculate( void ) {
|
inline void calculate( void ) {
|
||||||
asm("#mybegin axpy");
|
BTL_ASM_COMMENT("mybegin axpy");
|
||||||
Interface::axpy(_coef,X,Y,_size);
|
Interface::axpy(_coef,X,Y,_size);
|
||||||
asm("#myend axpy");
|
BTL_ASM_COMMENT("myend axpy");
|
||||||
}
|
}
|
||||||
|
|
||||||
void check_result( void ){
|
void check_result( void ){
|
||||||
|
@ -103,9 +103,9 @@ public :
|
|||||||
}
|
}
|
||||||
|
|
||||||
BTL_DONT_INLINE void calculate( void ) {
|
BTL_DONT_INLINE void calculate( void ) {
|
||||||
asm("#begin matrix_vector_product");
|
BTL_ASM_COMMENT("#begin matrix_vector_product");
|
||||||
Interface::matrix_vector_product(A,B,X,_size);
|
Interface::matrix_vector_product(A,B,X,_size);
|
||||||
asm("#end matrix_vector_product");
|
BTL_ASM_COMMENT("end matrix_vector_product");
|
||||||
}
|
}
|
||||||
|
|
||||||
BTL_DONT_INLINE void check_result( void ){
|
BTL_DONT_INLINE void check_result( void ){
|
||||||
|
@ -117,9 +117,7 @@ int main( int argc , char *argv[] )
|
|||||||
cout << " <TH ALIGN=CENTER> comments </TH>" << endl ;
|
cout << " <TH ALIGN=CENTER> comments </TH>" << endl ;
|
||||||
cout << " </TR>" << endl ;
|
cout << " </TR>" << endl ;
|
||||||
|
|
||||||
set<Lib_Mean>::iterator is ;
|
multiset<Lib_Mean>::iterator is = s_lib_mean.begin();
|
||||||
|
|
||||||
is=s_lib_mean.begin();
|
|
||||||
Lib_Mean best(*is);
|
Lib_Mean best(*is);
|
||||||
|
|
||||||
|
|
||||||
|
@ -38,7 +38,13 @@
|
|||||||
#define BTL_DONT_INLINE
|
#define BTL_DONT_INLINE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __INTEL_COMPILER
|
#if (defined __GNUC__)
|
||||||
|
#define BTL_ASM_COMMENT(X) asm("#"X)
|
||||||
|
#else
|
||||||
|
#define BTL_ASM_COMMENT(X)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (defined __GNUC__) && (!defined __INTEL_COMPILER)
|
||||||
#define BTL_DISABLE_SSE_EXCEPTIONS() { \
|
#define BTL_DISABLE_SSE_EXCEPTIONS() { \
|
||||||
int aux; \
|
int aux; \
|
||||||
asm( \
|
asm( \
|
||||||
|
@ -26,10 +26,6 @@
|
|||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <sys/time.h>
|
|
||||||
#include <sys/resource.h>
|
|
||||||
#include <unistd.h>
|
|
||||||
#include <sys/times.h>
|
|
||||||
|
|
||||||
|
|
||||||
#define USEC_IN_SEC 1000000
|
#define USEC_IN_SEC 1000000
|
||||||
@ -38,38 +34,65 @@
|
|||||||
// timer -------------------------------------------------------------------//
|
// timer -------------------------------------------------------------------//
|
||||||
|
|
||||||
// A timer object measures CPU time.
|
// A timer object measures CPU time.
|
||||||
|
#ifdef _MSC_VER
|
||||||
|
|
||||||
// class Portable_Timer
|
#define NOMINMAX
|
||||||
// {
|
#include <windows.h>
|
||||||
// public:
|
|
||||||
//
|
/*#ifndef hr_timer
|
||||||
// Portable_Timer( void )
|
#include "hr_time.h"
|
||||||
// {
|
#define hr_timer
|
||||||
// }
|
#endif*/
|
||||||
//
|
|
||||||
//
|
class Portable_Timer
|
||||||
// void start() { m_val = getTime(); }
|
{
|
||||||
//
|
public:
|
||||||
// void stop() { m_val = getTime() - m_val; }
|
|
||||||
//
|
typedef struct {
|
||||||
// double elapsed() { return m_val; }
|
LARGE_INTEGER start;
|
||||||
//
|
LARGE_INTEGER stop;
|
||||||
// double user_time() { return elapsed(); }
|
} stopWatch;
|
||||||
//
|
|
||||||
//
|
|
||||||
// private:
|
Portable_Timer()
|
||||||
//
|
{
|
||||||
// static inline double getTime(void)
|
startVal.QuadPart = 0;
|
||||||
// {
|
stopVal.QuadPart = 0;
|
||||||
// struct timeval tv;
|
QueryPerformanceFrequency(&frequency);
|
||||||
// struct timezone tz;
|
}
|
||||||
// gettimeofday(&tv, &tz);
|
|
||||||
// return (double)tv.tv_sec + 1.e-6 * (double)tv.tv_usec;
|
void start() { QueryPerformanceCounter(&startVal); }
|
||||||
// }
|
|
||||||
//
|
void stop() { QueryPerformanceCounter(&stopVal); }
|
||||||
// double m_val;
|
|
||||||
//
|
double elapsed() {
|
||||||
// }; // Portable_Timer
|
LARGE_INTEGER time;
|
||||||
|
time.QuadPart = stopVal.QuadPart - startVal.QuadPart;
|
||||||
|
return LIToSecs(time);
|
||||||
|
}
|
||||||
|
|
||||||
|
double user_time() { return elapsed(); }
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
double LIToSecs(LARGE_INTEGER& L) {
|
||||||
|
return ((double)L.QuadPart /(double)frequency.QuadPart) ;
|
||||||
|
}
|
||||||
|
|
||||||
|
LARGE_INTEGER startVal;
|
||||||
|
LARGE_INTEGER stopVal;
|
||||||
|
LARGE_INTEGER frequency;
|
||||||
|
|
||||||
|
|
||||||
|
}; // Portable_Timer
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <sys/resource.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <sys/times.h>
|
||||||
|
|
||||||
class Portable_Timer
|
class Portable_Timer
|
||||||
{
|
{
|
||||||
@ -137,5 +160,6 @@ private:
|
|||||||
|
|
||||||
}; // Portable_Timer
|
}; // Portable_Timer
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif // PORTABLE_TIMER_HPP
|
#endif // PORTABLE_TIMER_HPP
|
||||||
|
@ -40,5 +40,5 @@ if (EIGEN2_FOUND)
|
|||||||
set_target_properties(btl_tiny_eigen2_novec PROPERTIES COMPILE_FLAGS "-DEIGEN_DONT_VECTORIZE")
|
set_target_properties(btl_tiny_eigen2_novec PROPERTIES COMPILE_FLAGS "-DEIGEN_DONT_VECTORIZE")
|
||||||
endif(BUILD_btl_tiny_eigen2_novec)
|
endif(BUILD_btl_tiny_eigen2_novec)
|
||||||
ENDIF(NOT BTL_NOVEC)
|
ENDIF(NOT BTL_NOVEC)
|
||||||
|
|
||||||
endif (EIGEN2_FOUND)
|
endif (EIGEN2_FOUND)
|
||||||
|
@ -109,7 +109,7 @@ public :
|
|||||||
X = (A*A.transpose()).lazy();
|
X = (A*A.transpose()).lazy();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void matrix_vector_product(const gene_matrix & __restrict__ A, const gene_vector & __restrict__ B, gene_vector & __restrict__ X, int N){
|
static inline void matrix_vector_product(const gene_matrix & A, const gene_vector & B, gene_vector & X, int N){
|
||||||
X = (A*B)/*.lazy()*/;
|
X = (A*B)/*.lazy()*/;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
if(CMAKE_MINOR_VERSION GREATER 4)
|
if(CMAKE_MINOR_VERSION GREATER 4)
|
||||||
enable_language(Fortran)
|
if(NOT MSVC)
|
||||||
|
enable_language(Fortran)
|
||||||
|
endif(NOT MSVC)
|
||||||
btl_add_bench(btl_f77 main.cpp dmxv.f smxv.f dmxm.f smxm.f daxpy.f saxpy.f data.f sata.f daat.f saat.f OFF)
|
btl_add_bench(btl_f77 main.cpp dmxv.f smxv.f dmxm.f smxm.f daxpy.f saxpy.f data.f sata.f daat.f saat.f OFF)
|
||||||
endif(CMAKE_MINOR_VERSION GREATER 4)
|
endif(CMAKE_MINOR_VERSION GREATER 4)
|
Loading…
x
Reference in New Issue
Block a user