33#elif (defined AMD_BLAS||defined OPENBLAS)
40#include <gsl/gsl_cblas.h>
44#include <cuda_runtime_api.h>
53#define cudaDeviceSynchronise() cudaDeviceSynchronize()
57#include <thrust/reduce.h>
58#include <thrust/device_vector.h>
62#define Complex_f float complex
64#define Complex double complex
74#error "nx is expected it to be greater than or equal to 1"
82#error "ny is expected it to be greater than or equal to 1"
88#error "nz is expected it to be greater than or equal to 1"
94#error "nt is expected it to be greater than or equal to 1"
98#define gvol (nx*ny*nz*nt)
100#define gvol3 (nx*ny*nz)
105#error "npx is expected it to be greater than or equal to 1"
107#error "npx should be a divisor of nx"
116#error "npy is expected it to be greater than or equal to 1"
118#error "npy should be a divisor of ny"
124#error "npz is expected it to be greater than or equal to 1"
126#error "npz should be a divisor of nz"
132#error "npt is expected it to be greater than or equal to 1"
134#error "npt should be a divisor of nt"
138#define nproc (npx*npy*npz*npt)
139#if (defined USE_GPU && nproc>1)
140#error "Multi-GPU is not yet supported"
148#define ksizex (nx/npx)
150#define ksizey (ny/npy)
152#define ksizez (nz/npz)
158#define ksizet (nt/npt)
163#define kvol (ksizet*ksizez*ksizey*ksizex)
165#define kvol3 (ksizez*ksizey*ksizex)
170#if (nx*ny*nz*nt<=16384)
178#define niterc (gvol/4)
193#define kmom (ndim*nadj*kvol)
195#define kferm (nc*ngorkov*kvol)
197#define kferm2 (nc*ndirac*kvol)
208#define halox (ksizey*ksizez*ksizet)
214#define haloy (ksizex*ksizez*ksizet)
220#define haloz (ksizex*ksizey*ksizet)
226#define halot (ksizex*ksizey*ksizez)
231#define halo (2*(halox+haloy+haloz+halot))
234#define kvolHalo (kvol+halo)
236#define kfermHalo (nc*ngorkov*kvolHalo)
238#define kferm2Halo (nc*ndirac*kvolHalo)
240#define kmomHalo (ndim*nadj*kvolHalo)
251#define rescgg 2.26E-5
253#define rescga 2.26E-8
258#warning AVX512 detected
259#elif (defined WIN32||_WIN32)
260#pragma message("AVX512 detected")
266#warning AVX or AVX2 detected
267#elif (defined WIN32||_WIN32)
268#pragma message("AVX or AVX2 detected")
274#warning No AVX detected, assuming SSE is present
275#elif (defined WIN32||_WIN32)
276#pragma message("No AVX detected, assuming SSE is present")
cudaMemPool_t mempool
Memory pool for Async allocations.
cublasStatus_t cublas_status
Status of cuBLAS for error reporting.
dim3 dimBlockOne
block size of one
dim3 dimGridOne
Grid size of one.
cublasHandle_t cublas_handle
Handle for cuBLAS.
dim3 dimGrid
Default grid size. First component is normally nt. Second and third depend whatever is needed to get ...
dim3 dimBlock
Default block size. Usually 128.
Complex Header for CUDA. Sets macros for C compatability.