common.h 3.67 KB
Newer Older
1 2
/**
 *
3 4
 * @copyright (c) 2009-2014 The University of Tennessee and The University
 *                          of Tennessee Research Foundation.
5
 *                          All rights reserved.
6
 * @copyright (c) 2012-2015 Inria. All rights reserved.
7
 * @copyright (c) 2012-2014 Bordeaux INP, CNRS (LaBRI UMR 5800), Inria, Univ. Bordeaux. All rights reserved.
8 9 10 11 12 13 14 15 16 17 18 19
 *
 **/

/**
 *
 * @file common.h
 *
 *  MORSE codelets kernel
 *  MORSE is a software package provided by Univ. of Tennessee,
 *  Univ. of California Berkeley and Univ. of Colorado Denver,
 *  and INRIA Bordeaux Sud-Ouest
 *
20
 * @version 0.9.0
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
 * @author Mathieu Faverge
 * @author Cedric Castagnede
 * @date 2012-09-15
 *
 **/

/*******************************************************************************
 *  MORSE facilities of interest to both MORSE core developer
 *  and also of interest to MORSE community contributor.
 **/
#ifndef _MORSE_COMMON_H_
#define _MORSE_COMMON_H_


#if defined( _WIN32 ) || defined( _WIN64 )
#include <io.h>
#else
#include <unistd.h>
#endif

/** ****************************************************************************
 * Implementation headers
 **/
44
#if defined(CHAMELEON_USE_CUDA) && !defined(CHAMELEON_SIMULATION)
45 46 47
#include <cuda.h>
#include <cuda_runtime.h>
#include <cuda_runtime_api.h>
48
#if defined(CHAMELEON_USE_CUBLAS_V2)
49
#include <cublas.h>
50 51
#include <cublas_v2.h>
#else
52 53
#include <cublas.h>
#endif
54
#endif
55

56
#if defined(CHAMELEON_USE_OPENCL) && !defined(CHAMELEON_SIMULATION)
57 58 59
#include <OpenCL/cl.h>
#endif

60
#if defined(CHAMELEON_USE_MPI)
61 62 63 64
#include <mpi.h>
#endif

/** ****************************************************************************
65 66
 *  Line to avoid conflict with other linear algebra libraries, because, we
 *  don't know why but lapacke provide a wrong interface of lapack in fortran
67 68 69 70
 **/
#ifndef LAPACK_NAME
#define LAPACK_NAME(a, b) lapackef77_##a
#endif
71 72 73 74 75 76

/** ****************************************************************************
 *  Chameleon header files
 **/
#include "morse.h"

77 78
#include "control/global.h"
#include "control/auxiliary.h"
79 80
#include "control/context.h"
#include "control/descriptor.h"
81
#include "control/async.h"
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97

/*******************************************************************************
 *  Global shortcuts
 **/
#define MORSE_RANK        morse_rank(morse)
#define MORSE_SIZE        morse->world_size
#define MORSE_GRPSIZE     morse->group_size
#define MORSE_NB          morse->nb
#define MORSE_IB          morse->ib
#define MORSE_NBNBSIZE    morse->nbnbsize
#define MORSE_IBNBSIZE    morse->ibnbsize
#define MORSE_SCHEDULING  morse->scheduling
#define MORSE_RHBLK       morse->rhblock
#define MORSE_TRANSLATION morse->translation
#define MORSE_PARALLEL    morse->parallel_enabled
#define MORSE_PROFILING   morse->profiling_enabled
98
#if defined(CHAMELEON_USE_MPI)
99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
#define MORSE_MPI_RANK    morse->my_mpi_rank
#define MORSE_MPI_SIZE    morse->mpi_comm_size
#endif

/*******************************************************************************
 *  IPT internal define
 **/
#define MorseIPT_NoDep   0
#define MorseIPT_Panel   1
#define MorseIPT_All     2

/*******************************************************************************
 *  Global array of LAPACK constants
 **/
extern char *morse_lapack_constants[];
114
#define morse_lapack_const(morse_const) morse_lapack_constants[morse_const][0]
115 116 117 118 119

#ifdef __cplusplus
extern "C" {
#endif

120 121
#include "control/compute_s.h"
#include "control/compute_d.h"
122
#define COMPLEX
123 124
#include "control/compute_c.h"
#include "control/compute_z.h"
125 126 127 128 129 130 131 132 133 134 135 136 137 138
#undef COMPLEX

/*
void morse_pdlag2s(MORSE_context_t *morse);
void morse_pzlag2c(MORSE_context_t *morse);
void morse_pslag2d(MORSE_context_t *morse);
void morse_pclag2z(MORSE_context_t *morse);
*/

#ifdef __cplusplus
}
#endif

#endif