Commit 993b5138 authored by solomon's avatar solomon
Browse files

split out pmpi interface to include timer from offload and not need mpi

parent ef0b0a3b
......@@ -8,9 +8,44 @@
#include <stdio.h>
//#include "../shared/util.h"
#include "device_launch_parameters.h"
#include "util.h"
#include "timer.h"
#include "offload.h"
#ifndef LIBT_ASSERT
#if ENABLE_ASSERT
#define LIBT_ASSERT(...) \
do { if (!(__VA_ARGS__)) handler(); assert(__VA_ARGS__); } while (0)
#else
#define LIBT_ASSERT(...) do {} while(0 && (__VA_ARGS__))
#endif
#endif
#define ABORT \
do{ \
assert(0); } while (0)
template<typename dtype>
dtype get_zero(){
ABORT;
}
template<typename dtype>
dtype get_one(){
ABORT;
}
template<> inline
double get_zero<double>() { return 0.0; }
template<> inline
std::complex<double> get_zero< std::complex<double> >() { return std::complex<double>(0.0,0.0); }
template<> inline
double get_one<double>() { return 1.0; }
template<> inline
std::complex<double> get_one< std::complex<double> >() { return std::complex<double>(1.0,0.0); }
int initialized = 0;
cublasHandle_t cuhandle;
......
#ifndef __PMPI_H__
#define __PMPI_H__
#include "mpi.h"
void CTF_set_context(MPI_Comm ctxt);
#ifdef PMPI
#define MPI_Bcast(...) \
{ CTF_Timer __t("MPI_Bcast"); \
__t.start(); \
PMPI_Bcast(__VA_ARGS__); \
__t.stop(); }
#define MPI_Reduce(...) \
{ CTF_Timer __t("MPI_Reduce"); \
__t.start(); \
PMPI_Reduce(__VA_ARGS__); \
__t.stop(); }
#define MPI_Wait(...) \
{ CTF_Timer __t("MPI_Wait"); \
__t.start(); \
PMPI_Wait(__VA_ARGS__); \
__t.stop(); }
#define MPI_Send(...) \
{ CTF_Timer __t("MPI_Send"); \
__t.start(); \
PMPI_Send(__VA_ARGS__); \
__t.stop(); }
#define MPI_Allreduce(...) \
{ CTF_Timer __t("MPI_Allreduce"); \
__t.start(); \
PMPI_Allreduce(__VA_ARGS__); \
__t.stop(); }
#define MPI_Allgather(...) \
{ CTF_Timer __t("MPI_Allgather"); \
__t.start(); \
PMPI_Allgather(__VA_ARGS__); \
__t.stop(); }
#define MPI_Scatter(...) \
{ CTF_Timer __t("MPI_Scatter"); \
__t.start(); \
PMPI_Scatter(__VA_ARGS__); \
__t.stop(); }
#define MPI_Alltoall(...) \
{ CTF_Timer __t("MPI_Alltoall"); \
__t.start(); \
PMPI_Alltoall(__VA_ARGS__); \
__t.stop(); }
#define MPI_Alltoallv(...) \
{ CTF_Timer __t("MPI_Alltoallv"); \
__t.start(); \
PMPI_Alltoallv(__VA_ARGS__); \
__t.stop(); }
#define MPI_Gatherv(...) \
{ CTF_Timer __t("MPI_Gatherv"); \
__t.start(); \
PMPI_Gatherv(__VA_ARGS__); \
__t.stop(); }
#define MPI_Scatterv(...) \
{ CTF_Timer __t("MPI_Scatterv"); \
__t.start(); \
PMPI_Scatterv(__VA_ARGS__); \
__t.stop(); }
#define MPI_Waitall(...) \
{ CTF_Timer __t("MPI_Waitall"); \
__t.start(); \
PMPI_Waitall(__VA_ARGS__); \
__t.stop(); }
#define MPI_Barrier(...) \
{ CTF_Timer __t("MPI_Barrier"); \
__t.start(); \
PMPI_Barrier(__VA_ARGS__); \
__t.stop(); }
#endif
#endif
#ifndef __TIMER_H__
#define __TIMER_H__
#include "mpi.h"
#include "../../include/ctf.hpp"
void CTF_set_main_args(int argc, const char * const * argv);
void CTF_set_context(MPI_Comm ctxt);
#ifdef PROFILE
#define TAU
#endif
#ifdef TAU
#define TAU_FSTART(ARG) \
......@@ -32,73 +34,6 @@ void CTF_set_context(MPI_Comm ctxt);
else CTF_set_context((MPI_Comm)ARG);
#endif
#ifdef PMPI
#define MPI_Bcast(...) \
{ CTF_Timer __t("MPI_Bcast"); \
__t.start(); \
PMPI_Bcast(__VA_ARGS__); \
__t.stop(); }
#define MPI_Reduce(...) \
{ CTF_Timer __t("MPI_Reduce"); \
__t.start(); \
PMPI_Reduce(__VA_ARGS__); \
__t.stop(); }
#define MPI_Wait(...) \
{ CTF_Timer __t("MPI_Wait"); \
__t.start(); \
PMPI_Wait(__VA_ARGS__); \
__t.stop(); }
#define MPI_Send(...) \
{ CTF_Timer __t("MPI_Send"); \
__t.start(); \
PMPI_Send(__VA_ARGS__); \
__t.stop(); }
#define MPI_Allreduce(...) \
{ CTF_Timer __t("MPI_Allreduce"); \
__t.start(); \
PMPI_Allreduce(__VA_ARGS__); \
__t.stop(); }
#define MPI_Allgather(...) \
{ CTF_Timer __t("MPI_Allgather"); \
__t.start(); \
PMPI_Allgather(__VA_ARGS__); \
__t.stop(); }
#define MPI_Scatter(...) \
{ CTF_Timer __t("MPI_Scatter"); \
__t.start(); \
PMPI_Scatter(__VA_ARGS__); \
__t.stop(); }
#define MPI_Alltoall(...) \
{ CTF_Timer __t("MPI_Alltoall"); \
__t.start(); \
PMPI_Alltoall(__VA_ARGS__); \
__t.stop(); }
#define MPI_Alltoallv(...) \
{ CTF_Timer __t("MPI_Alltoallv"); \
__t.start(); \
PMPI_Alltoallv(__VA_ARGS__); \
__t.stop(); }
#define MPI_Gatherv(...) \
{ CTF_Timer __t("MPI_Gatherv"); \
__t.start(); \
PMPI_Gatherv(__VA_ARGS__); \
__t.stop(); }
#define MPI_Scatterv(...) \
{ CTF_Timer __t("MPI_Scatterv"); \
__t.start(); \
PMPI_Scatterv(__VA_ARGS__); \
__t.stop(); }
#define MPI_Waitall(...) \
{ CTF_Timer __t("MPI_Waitall"); \
__t.start(); \
PMPI_Waitall(__VA_ARGS__); \
__t.stop(); }
#define MPI_Barrier(...) \
{ CTF_Timer __t("MPI_Barrier"); \
__t.start(); \
PMPI_Barrier(__VA_ARGS__); \
__t.stop(); }
#endif
#endif
......@@ -32,10 +32,8 @@ volatile static long_int long_int_max = INT64_MAX;
//#include <inttypes.h>
#endif
#ifdef PROFILE
#define TAU
#endif
#include "timer.h"
#include "pmpi.h"
#ifndef __APPLE__
#ifndef OMP_OFF
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment