#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <cuda.h>
#include <float.h>
#include "Inform.h"
#include "utilities.h"
#include "WKFThreads.h"
#include "WKFUtils.h"
#include "CUDAKernels.h"
#include "CUDASpatialSearch.h"
#include "AtomSel.h"
#include "VMDApp.h"
#include "MoleculeList.h"
#include "VolumetricData.h"
#include "VolMapCreate.h"
#include "CUDAMDFF.h"
#include <tcl.h>
#include "TclCommands.h"
Go to the source code of this file.
Defines | |
#define | MIN(X, Y) (((X)<(Y))? (X) : (Y)) |
#define | MAX(X, Y) (((X)>(Y))? (X) : (Y)) |
#define | CUERR |
#define | RESTRICT |
#define | GGRIDSZ 8.0f |
#define | GBLOCKSZX 8 |
#define | GBLOCKSZY 8 |
#define | GBLOCKSZZ 2 |
#define | GUNROLL 4 |
#define | TOTALBLOCKSZ (GBLOCKSZX * GBLOCKSZY * GBLOCKSZZ) |
#define | MAINDENSITYLOOP |
#define | CKACCUM(a, b) a+=b; |
Functions | |
int | check_gpu_compute20 (cudaError_t &err) |
__host__ __device__ float2 | operator+ (float2 a, float2 b) |
__host__ __device__ void | operator+= (float2 &a, float2 b) |
__host__ __device__ float4 | operator+ (float4 a, float4 b) |
__host__ __device__ void | operator+= (float4 &a, float4 b) |
__device__ void | convert_density (float &df, float df2) |
__device__ void | convert_density (unsigned short &dh, float df2) |
__device__ void | reset_atomic_counter (unsigned int *counter) |
__device__ void | calc_ac_cell_ids (int3 &abmin, int3 &abmax, int3 acncells, float3 acoriginoffset, float gridspacing, float acgridspacing, float invacgridspacing) |
__device__ void | calc_densities (int xindex, int yindex, int zindex, const float4 *RESTRICT sorted_xyzr, int3 abmin, int3 abmax, int3 acncells, float3 acoriginoffset, const uint2 *RESTRICT cellStartEnd, float gridspacing, float &densityval1,float &densityval2,float &densityval3,float &densityval4) |
__global__ void | gaussdensity_fast (int natoms, const float4 *RESTRICT sorted_xyzr, int3 volsz, int3 acncells, float3 acoriginoffset, float acgridspacing, float invacgridspacing, const uint2 *RESTRICT cellStartEnd, float gridspacing, unsigned int z, float *RESTRICT densitygrid) |
__global__ void | gaussdensity_diff (int natoms, const float4 *RESTRICT sorted_xyzr, int3 volsz, int3 acncells, float3 acoriginoffset, float acgridspacing, float invacgridspacing, const uint2 *RESTRICT cellStartEnd, float gridspacing, unsigned int z, int3 refvolsz, int3 refoffset, const float *RESTRICT refmap, float *RESTRICT diffmap) |
__device__ float | sumabsdiff_sumreduction (int tid, int totaltb, float *sumabsdiffs_s, float *sumabsdiffs) |
__global__ void | gaussdensity_sumabsdiff (int totaltb, int natoms, const float4 *RESTRICT sorted_xyzr, int3 volsz, int3 acncells, float3 acoriginoffset, float acgridspacing, float invacgridspacing, const uint2 *RESTRICT cellStartEnd, float gridspacing, unsigned int z, int3 refvolsz, int3 refoffset, const float *RESTRICT refmap, float *RESTRICT sumabsdiff) |
__device__ float | calc_cc (float sums_ref, float sums_synth, float squares_ref, float squares_synth, int lsize, float lcc) |
__device__ void | cc_sumreduction (int tid, int totaltb, float4 &total_cc_sums, float &total_lcc, int &total_lsize, float4 *RESTRICT tb_cc_sums, float *RESTRICT tb_lcc, int *RESTRICT tb_lsize) |
__device__ void | thread_cc_sum (float ref, float density, float2 &thread_cc_means, float2 &thread_cc_squares, float &thread_lcc, int &thread_lsize) |
__global__ void | gaussdensity_cc (int totaltb, int natoms, const float4 *sorted_xyzr, int3 volsz, int3 acncells, float3 acoriginoffset, float acgridspacing, float invacgridspacing, const uint2 *RESTRICT cellStartEnd, float gridspacing, unsigned int z, float threshold, int3 refvolsz, int3 refoffset, const float *refmap, float4 *RESTRICT tb_cc_sums, float *RESTRICT tb_lcc, int *RESTRICT tb_lsize, float *RESTRICT tb_CC) |
int | vmd_cuda_build_accel (cudaError_t &err, const long int natoms, const int3 volsz, const float gausslim, const float radscale, const float maxrad, const float gridspacing, const float *xyzr_f, float4 *&xyzr_d, float4 *&sorted_xyzr_d, uint2 *&cellStartEnd_d, float &acgridspacing, int3 &accelcells) |
int | vmd_cuda_destroy_accel (float4 *&xyzr_d, float4 *&sorted_xyzr_d, uint2 *&cellStartEnd_d) |
void | vmd_cuda_kernel_launch_dims (int3 volsz, dim3 &Bsz, dim3 &Gsz) |
int | vmd_cuda_gaussdensity_calc (long int natoms, float3 acoriginoffset, int3 acvolsz, const float *xyzr_f, float *volmap, int3 volsz, float maxrad, float radscale, float gridspacing, float gausslim, int3 refvolsz, int3 refoffset, const float *refmap, float *diffmap, int verbose) |
int | vmd_cuda_cc_calc (long int natoms, float3 acoriginoffset, int3 acvolsz, const float *xyzr_f, int3 volsz, float maxrad, float radscale, float gridspacing, float gausslim, int3 refvolsz, int3 refoffset, const float *devrefmap, float ccthreshdensity, float &result_cc, const float *origin, VolumetricData **spatialccvol, int verbose) |
float | gausslim_quality (int quality) |
int | calc_density_bounds (const AtomSel *sel, MoleculeList *mlist, int verbose, int quality, float radscale, float gridspacing, float &maxrad, float *origin, float *xaxis, float *yaxis, float *zaxis, int3 &volsz) |
int | map_uniform_spacing (double xax, double yax, double zax, int szx, int szy, int szz) |
int | calc_density_bounds_overlapping_map (int verbose, float &gridspacing, float *origin, float *xaxis, float *yaxis, float *zaxis, int3 &volsz, int3 &refoffset, const VolumetricData *refmap) |
float * | build_xyzr_from_coords (const AtomSel *sel, const float *atompos, const float *atomradii, const float *origin) |
float * | build_xyzr_from_sel (const AtomSel *sel, MoleculeList *mlist, const float *origin) |
int | vmd_cuda_calc_density (const AtomSel *sel, MoleculeList *mlist, int quality, float radscale, float gridspacing, VolumetricData **synthvol, const VolumetricData *refmap, VolumetricData **diffvol, int verbose) |
int | vmd_cuda_compare_sel_refmap (const AtomSel *sel, MoleculeList *mlist, int quality, float radscale, float gridspacing, const VolumetricData *refmap, VolumetricData **synthvol, VolumetricData **diffvol, VolumetricData **spatialccvol, float *CC, float ccthreshdensity, int verbose) |
Variables | |
__device__ unsigned int | tbcatomic [3] = {0, 0, 0} |
"GPU-Accelerated Analysis and Visualization of Large Structures Solved by Molecular Dynamics Flexible Fitting" John E. Stone, Ryan McGreevy, Barry Isralewitz, and Klaus Schulten. Faraday Discussions, 169:265-283, 2014. http://dx.doi.org/10.1039/C4FD00005F
Definition in file CUDAMDFF.cu.
|
Definition at line 708 of file CUDAMDFF.cu. |
|
Value: { cudaError_t err; \ if ((err = cudaGetLastError()) != cudaSuccess) { \ printf("CUDA error: %s, %s line %d\n", cudaGetErrorString(err), __FILE__, __LINE__); \ printf("Thread aborting...\n"); \ return NULL; }} Definition at line 64 of file CUDAMDFF.cu. |
|
Definition at line 156 of file CUDAMDFF.cu. Referenced by vmd_cuda_kernel_launch_dims. |
|
Definition at line 157 of file CUDAMDFF.cu. Referenced by vmd_cuda_kernel_launch_dims. |
|
Definition at line 159 of file CUDAMDFF.cu. Referenced by vmd_cuda_kernel_launch_dims. |
|
Definition at line 155 of file CUDAMDFF.cu. |
|
Definition at line 160 of file CUDAMDFF.cu. Referenced by calc_ac_cell_ids, calc_densities, gaussdensity_cc, gaussdensity_diff, gaussdensity_fast, gaussdensity_sumabsdiff, vmd_cuda_cc_calc, and vmd_cuda_kernel_launch_dims. |
|
Value: float densityval1=0.0f; \ float densityval2=0.0f; \ float densityval3=0.0f; \ float densityval4=0.0f; \ calc_densities(xindex, yindex, zindex, sorted_xyzr, abmin, abmax, acncells, \ acoriginoffset, cellStartEnd, gridspacing, \ densityval1, densityval2, densityval3, densityval4); Definition at line 288 of file CUDAMDFF.cu. Referenced by gaussdensity_cc, gaussdensity_diff, gaussdensity_fast, and gaussdensity_sumabsdiff. |
|
|
|
Definition at line 148 of file CUDAMDFF.cu. Referenced by calc_densities, cc_sumreduction, gaussdensity_cc, gaussdensity_diff, gaussdensity_fast, and gaussdensity_sumabsdiff. |
|
Definition at line 162 of file CUDAMDFF.cu. Referenced by gaussdensity_cc, and gaussdensity_sumabsdiff. |
|
Definition at line 2075 of file CUDAMDFF.cu. References AtomSel::firstsel, AtomSel::lastsel, AtomSel::on, and AtomSel::selected. Referenced by build_xyzr_from_sel. |
|
Definition at line 2102 of file CUDAMDFF.cu. References build_xyzr_from_coords, AtomSel::coordinates, NameList< float * >::data, BaseMolecule::extraflt, MoleculeList::mol_from_id, and AtomSel::molid. Referenced by vmd_cuda_calc_density, and vmd_cuda_compare_sel_refmap. |
|
Definition at line 186 of file CUDAMDFF.cu. References acgridspacing, acncells, gridspacing, GUNROLL, and invacgridspacing. Referenced by gaussdensity_cc, gaussdensity_diff, gaussdensity_fast, and gaussdensity_sumabsdiff. |
|
Definition at line 555 of file CUDAMDFF.cu. References cc. |
|
Definition at line 212 of file CUDAMDFF.cu. References acncells, cellStartEnd, gridspacing, GUNROLL, RESTRICT, and sorted_xyzr. |
|
Definition at line 1896 of file CUDAMDFF.cu. References AtomSel::coordinates, NameList< float * >::data, BaseMolecule::extraflt, AtomSel::firstsel, BaseMolecule::get_radii_minmax, gridspacing, AtomSel::lastsel, MAX, minmax_selected_3fv_aligned, MoleculeList::mol_from_id, AtomSel::molid, AtomSel::num_atoms, AtomSel::on, vec_copy, vec_zero, VMD_PI, and volsz. Referenced by vmd_cuda_calc_density, and vmd_cuda_compare_sel_refmap. |
|
Definition at line 2002 of file CUDAMDFF.cu. References gridspacing, VolumetricData::origin, volsz, VolumetricData::xaxis, VolumetricData::xsize, VolumetricData::yaxis, VolumetricData::ysize, VolumetricData::zaxis, and VolumetricData::zsize. Referenced by vmd_cuda_calc_density, and vmd_cuda_compare_sel_refmap. |
|
Definition at line 633 of file CUDAMDFF.cu. References make_float4, and RESTRICT. Referenced by gaussdensity_cc. |
|
Definition at line 75 of file CUDAMDFF.cu. Referenced by vmd_cuda_cc_calc, and vmd_cuda_gaussdensity_calc. |
|
Definition at line 137 of file CUDAMDFF.cu. |
|
Definition at line 131 of file CUDAMDFF.cu. |
|
Definition at line 713 of file CUDAMDFF.cu. References acgridspacing, acncells, calc_ac_cell_ids, calc_cc, cc, cc_sumreduction, cellStartEnd, gridspacing, GUNROLL, invacgridspacing, MAINDENSITYLOOP, make_float2, make_float4, mask, NULL, reset_atomic_counter, RESTRICT, sorted_xyzr, tbcatomic, thread_cc_sum, threshold, TOTALBLOCKSZ, volsz, and z. |
|
Definition at line 351 of file CUDAMDFF.cu. References acgridspacing, acncells, calc_ac_cell_ids, cellStartEnd, gridspacing, GUNROLL, invacgridspacing, MAINDENSITYLOOP, RESTRICT, sorted_xyzr, volsz, and z. |
|
Definition at line 302 of file CUDAMDFF.cu. References acgridspacing, acncells, calc_ac_cell_ids, cellStartEnd, densitygrid, gridspacing, GUNROLL, invacgridspacing, MAINDENSITYLOOP, RESTRICT, sorted_xyzr, volsz, and z. |
|
Definition at line 436 of file CUDAMDFF.cu. References acgridspacing, acncells, calc_ac_cell_ids, cellStartEnd, gridspacing, GUNROLL, invacgridspacing, MAINDENSITYLOOP, reset_atomic_counter, RESTRICT, sorted_xyzr, sumabsdiff_sumreduction, tbcatomic, TOTALBLOCKSZ, volsz, and z. |
|
Definition at line 1876 of file CUDAMDFF.cu. Referenced by vmd_cuda_calc_density, and vmd_cuda_compare_sel_refmap. |
|
Definition at line 1977 of file CUDAMDFF.cu. Referenced by vmd_cuda_compare_sel_refmap. |
|
Definition at line 112 of file CUDAMDFF.cu. References make_float4. |
|
Definition at line 102 of file CUDAMDFF.cu. References make_float2. |
|
Definition at line 117 of file CUDAMDFF.cu. |
|
Definition at line 107 of file CUDAMDFF.cu. |
|
Definition at line 175 of file CUDAMDFF.cu. Referenced by gaussdensity_cc, and gaussdensity_sumabsdiff. |
|
Definition at line 407 of file CUDAMDFF.cu. Referenced by gaussdensity_sumabsdiff. |
|
Definition at line 677 of file CUDAMDFF.cu. Referenced by gaussdensity_cc. |
|
Definition at line 1182 of file CUDAMDFF.cu. References acgridspacing, gridspacing, NULL, vmd_cuda_build_density_atom_grid, and volsz. Referenced by vmd_cuda_cc_calc, and vmd_cuda_gaussdensity_calc. |
|
|
Definition at line 1598 of file CUDAMDFF.cu. References acgridspacing, cc, check_gpu_compute20, gridspacing, GUNROLL, NULL, vmd_cuda_build_accel, vmd_cuda_destroy_accel, vmd_cuda_kernel_launch_dims, volsz, wkf_timer_create, wkf_timer_destroy, wkf_timer_start, wkf_timer_stop, wkf_timer_time, wkf_timer_timenow, wkf_timerhandle, and z. Referenced by vmd_cuda_compare_sel_refmap. |
|
|
Definition at line 1245 of file CUDAMDFF.cu. References NULL. Referenced by vmd_cuda_cc_calc, and vmd_cuda_gaussdensity_calc. |
|
Definition at line 1279 of file CUDAMDFF.cu. References acgridspacing, cc, check_gpu_compute20, gridspacing, make_float4, NULL, vmd_cuda_build_accel, vmd_cuda_destroy_accel, vmd_cuda_kernel_launch_dims, volmap, volsz, wkf_timer_create, wkf_timer_destroy, wkf_timer_start, wkf_timer_stop, wkf_timer_time, wkf_timer_timenow, wkf_timerhandle, and z. Referenced by vmd_cuda_calc_density, and vmd_cuda_compare_sel_refmap. |
|
Definition at line 1266 of file CUDAMDFF.cu. References GBLOCKSZX, GBLOCKSZY, GBLOCKSZZ, GUNROLL, and volsz. Referenced by vmd_cuda_cc_calc, and vmd_cuda_gaussdensity_calc. |
|
Definition at line 173 of file CUDAMDFF.cu. Referenced by gaussdensity_cc, and gaussdensity_sumabsdiff. |