defs.h 2.71 KB
Newer Older
1 2 3
#ifndef BIOEM_DEFS_H
#define BIOEM_DEFS_H

David Rohr's avatar
David Rohr committed
4
//#define BIOEM_USE_DOUBLE
5

Pilar Cossio's avatar
Pilar Cossio committed
6 7
//#define PILAR_DEBUG

8
#ifndef BIOEM_USE_DOUBLE
9
typedef float myfloat_t;
10 11 12 13
#define myfftw_malloc fftwf_malloc
#define myfftw_free fftwf_free
#define myfftw_destroy_plan fftwf_destroy_plan
#define myfftw_execute fftwf_execute
14
#define myfftw_execute_dft fftwf_execute_dft
15 16
#define myfftw_execute_dft_r2c fftwf_execute_dft_r2c
#define myfftw_execute_dft_c2r fftwf_execute_dft_c2r
17
#define myfftw_plan_dft_2d fftwf_plan_dft_2d
18 19
#define myfftw_plan_dft_r2c_2d fftwf_plan_dft_r2c_2d
#define myfftw_plan_dft_c2r_2d fftwf_plan_dft_c2r_2d
20
#define myfftw_plan fftwf_plan
21
#define myfftw_cleanup fftwf_cleanup
David Rohr's avatar
David Rohr committed
22
#define MY_CUFFT_C2R CUFFT_C2R
23 24
#define mycufftExecC2R cufftExecC2R
#define mycuComplex_t cuComplex
David Rohr's avatar
David Rohr committed
25
#define MY_MPI_FLOAT MPI_FLOAT
26 27 28 29 30 31
#else
typedef double myfloat_t;
#define myfftw_malloc fftw_malloc
#define myfftw_free fftw_free
#define myfftw_destroy_plan fftw_destroy_plan
#define myfftw_execute fftw_execute
32
#define myfftw_execute_dft fftw_execute_dft
33 34
#define myfftw_execute_dft_r2c fftw_execute_dft_r2c
#define myfftw_execute_dft_c2r fftw_execute_dft_c2r
35
#define myfftw_plan_dft_2d fftw_plan_dft_2d
36 37
#define myfftw_plan_dft_r2c_2d fftw_plan_dft_r2c_2d
#define myfftw_plan_dft_c2r_2d fftw_plan_dft_c2r_2d
38
#define myfftw_plan fftw_plan
39
#define myfftw_cleanup fftw_cleanup
40 41
#define mycufftExecC2R cufftExecZ2D
#define mycuComplex_t cuDoubleComplex
David Rohr's avatar
David Rohr committed
42
#define MY_CUFFT_C2R CUFFT_Z2D
David Rohr's avatar
David Rohr committed
43
#define MY_MPI_FLOAT MPI_DOUBLE
44 45
#endif
typedef myfloat_t mycomplex_t[2];
46 47 48 49 50

#define BIOEM_FLOAT_3_PHYSICAL_SIZE 3	//Possible set to 4 for GPU

struct myfloat3_t
{
51
	myfloat_t pos[BIOEM_FLOAT_3_PHYSICAL_SIZE];
52
        myfloat_t quat4;
53
   //     myfloat_t prior;
54 55 56 57 58 59 60 61 62
};

#ifdef BIOEM_GPUCODE
#define myThreadIdxX threadIdx.x
#define myThreadIdxY threadIdx.y
#define myBlockDimX blockDim.x
#define myBlockDimY blockDim.y
#define myBlockIdxX blockIdx.x
#define myBlockIdxY blockIdx.y
63
#define myGridDimX gridDim.x
64 65 66 67 68 69 70 71 72 73 74 75 76 77
#else
#define __device__
#define __host__
#define myThreadIdxX 0
#define myThreadIdxY 0
#define myBlockDimX 1
#define myBlockDimY 1
#define myBlockIdxX 0
#define myBlockIdxY 0
#endif

#define CUDA_THREAD_COUNT 256
#define CUDA_BLOCK_COUNT 1024 * 16
#define CUDA_MAX_SHIFT_REDUCE 1024
78
#define CUDA_FFTS_AT_ONCE 1024
79
//#define BIOEM_USE_NVTX
80

81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
static inline void* mallocchk(size_t size)
{
	void* ptr = malloc(size);
	if (ptr == 0)
	{
		std::cout << "Memory allocation error\n";
		exit(1);
	}
	return(ptr);
}

static inline void* reallocchk(void* oldptr, size_t size)
{
	void* ptr = realloc(oldptr, size);
	if (ptr == 0)
	{
		std::cout << "Memory allocation error\n";
		exit(1);
	}
	return(ptr);
}

103 104 105 106 107
#ifndef WITH_OPENMP
#define omp_get_max_threads() 1
#define omp_get_thread_num() 0
#endif

108 109 110
extern int mpi_rank;
extern int mpi_size;

111
#endif