double cubic_anisotropy( const VectorMatrix &axis1, const VectorMatrix &axis2, const Matrix &k, const Matrix &Ms, const VectorMatrix &M, VectorMatrix &H) { const bool use_cuda = isCudaEnabled(); double energy_sum = 0.0; if (use_cuda) { #ifdef HAVE_CUDA CUTIC("cubic_anisotropy"); energy_sum = cubic_anisotropy_cuda(axis1, axis2, k, Ms, M, H, isCuda64Enabled()); CUTOC("cubic_anisotropy"); #else assert(0); #endif } else { TIC("cubic_anisotropy"); energy_sum = cubic_anisotropy_cpu(axis1, axis2, k, Ms, M, H); TOC("cubic_anisotropy"); } return energy_sum; }
double exchange( int dim_x, int dim_y, int dim_z, double delta_x, double delta_y, double delta_z, bool periodic_x, bool periodic_y, bool periodic_z, const Matrix &Ms, const Matrix &A, const VectorMatrix &M, VectorMatrix &H) { const bool use_cuda = isCudaEnabled(); double res = 0; if (use_cuda) { #ifdef HAVE_CUDA CUTIC("exchange"); res = exchange_cuda(dim_x, dim_y, dim_z, delta_x, delta_y, delta_z, periodic_x, periodic_y, periodic_z, Ms, A, M, H, isCuda64Enabled()); CUTOC("exchange"); #else assert(0); #endif } else { TIC("exchange"); res = exchange_cpu(dim_x, dim_y, dim_z, delta_x, delta_y, delta_z, periodic_x, periodic_y, periodic_z, Ms, A, M, H); TOC("exchange"); } return res; }
void minimize( const Matrix &f, const double h, const VectorMatrix &M, const VectorMatrix &H, VectorMatrix &M2) { const bool use_cuda = isCudaEnabled(); if (use_cuda) { #ifdef HAVE_CUDA CUTIC("minimize"); #ifdef HAVE_CUDA_64 if (isCuda64Enabled()) minimize_cu64(f, h, M, H, M2); else #endif minimize_cu32(f, h, M, H, M2); CUTOC("minimize"); #else assert(0); #endif } else { TIC("minimize"); minimize_cpu(f, h, M, H, M2); TOC("minimize"); } }