Tags  Date  Developer  Last 200 Commit Logs 

 20191213  johns  Added documentation for OPTIX_CACHE_PATH environment variable, and
removed old documentation for the old VCAspecific OptiX features.
* doc/ug_exec_env.tex 1.59 (changed +18 49)
OptiX 6.5.0 and driver 440.44 no longer crash upon deallocation of
the triangle geometry instance objects used in the RTXspecific code path.
Changed the workaround macro test to key on the OptiX version number.
* src/OptiXRenderer.C 1.362 (changed +4 2)

 20191205  johns  Added src comments to indicate that the CUDA char3 type is explicitly
declared as a signed type.
* src/CUDAQuickSurf.cu 1.88 (changed +3 2)
* src/CUDAMarchingCubes.cu 1.36 (changed +3 1)
Corrected function signatures of VMDinternal rendering APIs and
associated data structures to explicitly specify "signed char"
rather than "char" since signedness of the "char" type is left
by language specs as a compiler implementationdefined choice.
* src/OptiXRenderer.h 1.121 (changed +11 8)
* src/OptiXRenderer.C 1.361 (changed +12 12)
* src/OptiXDisplayDevice.h 1.27 (changed +3 3)
* src/OptiXDisplayDevice.C 1.78 (changed +7 4)
* src/OpenGLRenderer.C 1.471 (changed +2 2)
* src/OSPRayRenderer.h 1.25 (changed +3 3)
* src/OSPRayRenderer.C 1.72 (changed +7 7)
* src/OSPRayDisplayDevice.h 1.14 (changed +3 3)
* src/OSPRayDisplayDevice.C 1.13 (changed +3 3)
* src/FileRenderer.h 1.129 (changed +3 3)
* src/FileRenderer.C 1.185 (changed +2 2)
* src/DispCmds.h 1.116 (changed +7 7)
* src/DispCmds.C 1.116 (changed +2 2)
* src/CUDADispCmds.cu 1.10 (changed +2 2)

 20191117  johns  Added support for both buffered and direct I/O on the hostCPU code path,
and increased OOC I/O reporting messages to clarify which code path is active.
* src/CUDAMeasureQCP.cu 1.28 (changed +35 5)
Eliminated hardcoded file count limits and CPU fallback path.
* src/CUDAMeasureQCP.cu 1.26 (changed +20 6)
Improved OOC I/O strategy reporting further.
* src/CUDAMeasureQCP.cu 1.29 (changed +5 4)
Promoted more I/O paths to be controllable via runtime parameters.
* src/CUDAMeasureQCP.cu 1.27 (changed +154 141)

 20191116  johns  Added prototype for GPU threadpool worker affinity mapping setup routine.
* src/CUDAKernels.h 1.62 (changed +4 1)
Corrected comment text
* src/OptiXRenderer.C 1.360 (changed +5 5)
Emit messages indicating how many worker threads are being created
perGPU, etc. Eliminated excessive console output mesgs.
* src/CUDAMeasureQCP.cu 1.24 (changed +8 3)
Fixed hostside GDS alternate path.
* src/CUDAMeasureQCP.cu 1.25 (changed +73 6)

 20191115  johns  Added GPU worker thread affinitizing code, currently optimized for
the DGX2. This needs to perform runtime mapping and topology queries
using NVML rather than being hard coded, but this is useful at the outset.
* src/CUDAUtil.cu 1.55 (changed +57 1)
Added new vmd_cuda_devpool_enable_P2P() for use on the DGX2, and
vmd_cuda_devpool_setdeviceonly(), needed when building extralarge GPU
device management pools for GDS or other special case needs.
* src/CUDAUtil.cu 1.53 (changed +48 1)
* src/CUDAKernels.h 1.61 (changed +9 1)
Added support for initialization of fullyconnected NVLink P2P early on
in device initialization. The P2P flags need to be set once per VMD process
for each GPU device pair during startup.
* src/CUDAAccel.C 1.67 (changed +9 1)
Added verbose console message support to vmd_cuda_devpool_setdeviceonly()
* src/CUDAUtil.cu 1.54 (changed +4 1)
Continued generalization of the multifile GDS I/O path in
qcp_soa_gpu_ooc() and measure_rmsdmat_qcp_ooc_thread().
* src/CUDAMeasureQCP.cu 1.20 (changed +21 8)
Generalized the framecount hacks for multifile analysis calcs
* src/MeasureQCP.C 1.32 (changed +6 10)
Implemented a basic multiframe read optimization to improve performance
when processing smallsized atomic structures. Ideally we'd have a
readv() type API to allow gathers from a sparse atom selection etc,
but at present none exists, so the current multiframe strategy does
a contiguous read.
* src/CUDAMeasureQCP.cu 1.21 (changed +36 6)
Made multiframe I/O and multiple worker threads perGPU runtime controllable
for benchmarking purposes.
* src/CUDAMeasureQCP.cu 1.23 (changed +80 57)
Migrade GPU peertopeer initialization to separate thread pool
helper routine specifically for that purpose, since this is a
special devicespecific operation that shouldn't be performed more
than once per process, even if many threads are bound to the same devices.
* src/CUDAMeasureQCP.cu 1.22 (changed +31 17)

 20191114  johns  Added QCP reduction buffer allocation, various cleanup.
* src/CUDAMeasureQCP.cu 1.18 (changed +11 5)
Continued testing of CUDA QCP implementations.
* src/CUDAMeasureQCP.cu 1.19 (changed +71 12)
Remove debugging safety net
* src/MeasureQCP.C 1.31 (changed +1 2)
Updated rmsdmat_qcp_ooc() parameters to abstract some of the backend
implementation and keep the scripting language bindings free of
lowlevel I/O operations and GPU considerations.
* src/TclMeasure.C 1.181 (changed +31 24)
* src/MeasureQCP.C 1.30 (changed +21 4)
* src/Measure.h 1.75 (changed +3 3)
* src/CUDAMeasureQCP.h 1.2 (changed +3 3)
* src/CUDAMeasureQCP.cu 1.17 (changed +2 4)

 20191108  johns  Added CUDA kernels and async launches for singlepass AOS to SOA conversion,
atom selection compaction, and QCP inner product computation.
* src/CUDAMeasureQCP.cu 1.16 (changed +106 15)
Added LINUXARM64 target to make_distrib
* make_distrib 1.90 (changed +6 2)
Added a workaround for early NVIDIA ARM64 driver and toolkit combinations
where the driver version is lower than the toolkit version.
* src/CUDAUtil.cu 1.52 (changed +7 1)
Updated startup scripts to correctly identify ARM64 platforms
* bin/vmd.sh 1.19 (changed +3 3)
* bin/vmd.csh 1.108 (changed +3 3)

 20191107  johns  Added a static_cast to eliminate GCC 8/9 copy assignment warnings
* src/QMTimestep.C 1.74 (changed +2 2)
Added an extra NULL string safety check to please GCC 8/9.
* src/CUDAAccel.C 1.66 (changed +4 2)
Corrected QMTimestep max string length logic.
* src/QMTimestep.C 1.72 (changed +2 2)
Corrected max string length bounds for strncpy() calls that were off by one.
* src/QMTimestep.C 1.73 (changed +2 2)
* src/QMData.C 1.106 (changed +3 3)
* src/MolFilePlugin.C 1.197 (changed +2 2)
Eliminate the need for fastio.h for the moment
* src/CUDAMeasureQCP.cu 1.15 (changed +3 3)

 20191106  johns  Added Linux ARM64 macro tests.
* src/vmdsock.c 1.30 (changed +2 2)
Added static_cast to cope with GCC 8.x compiler warnings about shallow
copies in particular cases, e.g. Matrix4
* src/ResizeArray.h 1.55 (changed +6 2)
Corrected a potentially undersized string buffer.
* src/TclGraphics.C 1.50 (changed +2 2)
Corrected undersized string buffer in TclVolMap console output code.
* src/TclVolMap.C 1.123 (changed +2 2)

 20191102  johns  Updated QCP code with GDS benchmark case and some initial
hardcoded PCIe/NVME topology awareness for the DGX2.
* src/CUDAMeasureQCP.cu 1.14 (changed +143 33)

 20191101  johns  Commit of ongoing indevelopment outofcore QCP GPUDirect Storage code path
* src/TclMeasure.C 1.180 (changed +4 2)
* src/CUDAMeasureQCP.cu 1.9 (changed +200 12)
Fixed GDS handle cleanup
* src/CUDAMeasureQCP.cu 1.12 (changed +4 2)
Revised GPUDirect Storage code to avoid sharing file descriptors among
independent I/O worker threads, which is not allowed. We can instead
register the FDs and then share the cuFile handles that result, which IS
allowed.
* src/CUDAMeasureQCP.cu 1.10 (changed +61 54)
Updated QCP outofcore GPUDirect Storage implementation to allow worker
threads to share CUfileHandle_t objects, for greatly simplified setup,
management, and teardown of outofcore calculations.
* src/CUDAMeasureQCP.cu 1.13 (changed +70 66)
Use storagetopologyaware file index.
* src/CUDAMeasureQCP.cu 1.11 (changed +8 6)

 20191031  johns  Added an extra safety check to the Stride output parser.
* src/Stride.C 1.44 (changed +5 2)
Added more error checking to the NanoShaper output parser code.
* src/NanoShaperInterface.C 1.14 (changed +18 8)
Corrected long int format specifier in debugging console output code.
* src/CUDAQuickSurf.cu 1.87 (changed +2 2)
Corrected string buffer size in debugging code.
* src/MeasureSymmetry.C 1.66 (changed +2 2)
Ensure initialization of all elements in the spline matrix in all cases.
* src/DrawMolItemRibbons.C 1.153 (changed +2 2)
Rewrote the video streaming endianism handling code to use a union rather
than a typecast to eliminate compiler warnings.
Added a safety check to report errors on the console if we get a
VS_IMAGE message and decodesz ends up being zero.
* src/VideoStream.C 1.36 (changed +16 8)
Updated the QMData macros with a string format specifier for use
with the QM string buffers processed by TclMolInfo. This ensures
there aren't buffer overruns during sprintf() operations.
* src/TclMolInfo.C 1.98 (changed +2 2)
* src/QMData.h 1.89 (changed +5 3)

 20191030  johns  Added header for CUDA QCP algorithms
* src/CUDAMeasureQCP.h 1.1 (added +34 0)
Linked in out of core QCP matrix calc.
* src/TclMeasure.C 1.179 (changed +3 1)
Ongoing integration of CUDA QCP algorithms
* src/MeasureQCP.C 1.29 (changed +12 73)
* src/CUDAMeasureQCP.cu 1.8 (changed +44 1)

 20191029  johns  Added placeholder outofcore QCP implementation fctns for testing GDS.
* src/TclMeasure.C 1.178 (changed +112 2)
* src/MeasureQCP.C 1.28 (changed +185 1)
* src/Measure.h 1.74 (changed +11 1)
Silence various g++ 7.x compiler warnings with minor code tweaks
* src/OptiXRenderer.C 1.359 (changed +9 10)
Tweak EGL headers to make it simpler to build headless with no X11
* src/EGL/eglplatform.h 1.5 (changed +2 2)

 20191028  johns  Added braces to make if scope explicit vs. the Python macros that might
expand in an unprotected/dangerous way.
* src/VMDTkinterMenu.C 1.5 (changed +5 2)
Corrected bad if/break scoping in bonds rep
* src/DrawMolItem.C 1.369 (changed +5 3)
Corrected indentation to silence compiler warning
* src/DrawMolItem2.C 1.39 (changed +4 2)
Eliminated VCA checks from video streaming code path
* src/OptiXRenderer.C 1.358 (changed +4 6)
Eliminated compiler warnings about signed vs. unsigned comparisons
* src/VideoStream.C 1.35 (changed +4 3)
Eliminated unused variable
* src/VolumeTexture.C 1.28 (changed +1 2)
Eliminated warnings about use of boolean nonzero value test.
* src/VolMapCreate.C 1.125 (changed +2 2)
Ensure variable initialization to silence compiler warnings.
* src/DrawRingsUtils.C 1.42 (changed +2 2)
Tweaks to please g++ 7.x which has some minor brain damage when it
comes to forscoped variable initialization and error handling gotos.
* src/py_molecule.C 1.82 (changed +3 2)
* src/py_color.C 1.35 (changed +7 4)
Tweaks to please g++ 7.x which has some minor brain damage when it
comes to forscoped variagble initialization and error handling gotos.
* src/py_display.C 1.43 (changed +4 2)

 20191022  johns  Updated compilation notes to encompass Python 3.x as well.
* doc/pg_compiling.dox 1.12 (changed +3 3)

 20191017  johns  Added Turingspecific GPU compute capability 7.5 to build flags
* configure 1.1479 (changed +2 1)
Added Vulkan 1.x headers to the distribution for the time being.
* src/vulkan/vulkan_xlib_xrandr.h 1.1 (added +59 0)
* src/vulkan/vulkan_xlib.h 1.1 (added +71 0)
* src/vulkan/vulkan_xcb.h 1.1 (added +71 0)
* src/vulkan/vulkan_win32.h 1.1 (added +281 0)
* src/vulkan/vulkan_wayland.h 1.1 (added +70 0)
* src/vulkan/vulkan_vi.h 1.1 (added +63 0)
* src/vulkan/vulkan_mir.h 1.1 (added +70 0)
* src/vulkan/vulkan_macos.h 1.1 (added +63 0)
* src/vulkan/vulkan_ios.h 1.1 (added +63 0)
* src/vulkan/vulkan_core.h 1.1 (added +7339 0)
* src/vulkan/vulkan_android.h 1.1 (added +65 0)
* src/vulkan/vulkan.h 1.1 (added +84 0)
* src/vulkan/vk_platform.h 1.1 (added +97 0)
Starting updating feature list for recent changes
* README 1.410 (changed +3 1)
Tweak for local builders
* Makefile 1.123 (changed +3 3)

 20191016  johns  64bit MacOS X builds for Catalina and later don't support CUDA or OpenCL
since Apple has killed off both of them.
* Makefile 1.122 (changed +2 2)
Implemented a macro workaround for MacOS X failing to provide the C99
math routines such as sincosf() in their headers on MacOS X 10.10 and
earlier, when compiling in 64bit mode.
* src/utilities.h 1.113 (changed +9 1)

 20191011  johns  Began doxygen cleanup
* src/QMData.h 1.88 (changed +26 32)

 20191009  johns  Added User's Guide bib refs for various RMSD and clustering algorithms.
Revised the text in the "measure cluster" documentation to begin
addressing a critique on the description of the lineage of the
algorithm implementation in VMD to specify more clearly that it is
most closely a variant of Daura's algorithm.
* doc/ug_text_ui.tex 1.239 (changed +10 5)
* doc/ug.bib 1.13 (changed +145 1)

 20191008  johns  Applied the same optimizations from the point volume rendering method
to the lit points method, and improved various other bits of code.
* src/DrawMolItemVolume.C 1.175 (changed +39 21)
Began improvement of the volume gradient calculation loops
* src/VolumetricData.C 1.62 (changed +5 3)
Corrected voxel accessor methods to promote member variables to
long integer types for indexing calculations to prevent
integer wraparound with very large volumes.
* src/VolumetricData.h 1.50 (changed +4 4)
Optimized the volume gradient calculation
* src/VolumetricData.C 1.63 (changed +26 17)
Preextend pervertex color arrays for uniform color meshes to reduce
overhead. Added comments about eliminating pervertex color storage
to improve performance when we are using volumetric texturing or the like.
* src/Isosurface.C 1.52 (changed +12 3)
Updated comments about isosurface mesh generation and texturing.
* src/DrawMolItemVolume.C 1.176 (changed +8 5)
Updated the volume side length/axes assignment and scaling methods to
force recomputation of the volume gradient since the gradients are
computed with respect to the voxel side length ratios
* src/VolumetricData.h 1.51 (changed +22 4)

 20191007  johns  Added "mol voxaxes" and "mol volscale" commands to allow manipulation
of the volume orientation and scale. These commands do not affect any of
the statistics reported by methods in the VolumetricData class, but they
do require a call to mol>force_recalc(DrawMolItem::COL_REGEN) to ensure
reps referring to the volumes are drawn correctly after changes are made.
* src/cmd_mol.C 1.134 (changed +85 8)
* src/VolumetricData.h 1.48 (changed +34 2)
Continued streamlining "mol volXXX" implementations and added new
"volorigin" command to allow the user to overwrite the origin of
the volume.
* src/cmd_mol.C 1.135 (changed +41 7)
* src/VolumetricData.h 1.49 (changed +16 1)

 20191004  johns  Hoist some redundant work out of the ribbon extrusion template generation loop
* src/DrawMolItemRibbons.C 1.152 (changed +3 2)
Reduced ribbon loop control overhead and improved floating point constant
consistency.
* src/DrawMolItemRibbons.C 1.151 (changed +8 8)

 20191001  johns  Const correctness
* src/DrawMolItemVolume.C 1.174 (changed +2 2)
Corrected indexing arithmetic for 3D texture maps larger than 4 gigavoxels.
* src/VolumeTexture.C 1.24 (changed +41 20)
Don't call gridsize() method in loop bound test, use cached value instead.
* src/VolumetricData.C 1.61 (changed +30 23)
Improved color scale texture map generation performance by another 20%
* src/VolumeTexture.C 1.27 (changed +17 17)
Improved performance of colorbyvolume texture generation loops
* src/VolumeTexture.C 1.25 (changed +39 16)
Updated integer color index range clamping code to ensure branchless
code generation on most compilers and hardware platforms.
* src/VolumeTexture.C 1.26 (changed +11 1)

 20190930  johns  Improved efficiency of the "points" volume rendering methods with
an improved voxel value test criteria.
* src/DrawMolItemVolume.C 1.173 (changed +7 17)

 20190927  johns  Corrected test condition structure.
* src/VMDApp.C 1.565 (changed +2 2)
Eliminated unused display command object.
* src/MoleculeGraphics.C 1.79 (changed +1 2)
Eliminated unused variables.
* src/MeasureVolInterior.C 1.15 (changed +1 4)
Eliminated usage of the old "register" keyword deprecated in C++17 and beyond
* src/GeometryMol.C 1.58 (changed +4 4)
Make use of sincos() rather than separate sin() and cos() calls.
* src/VMDQuat.C 1.14 (changed +15 13)
* src/Timestep.C 1.73 (changed +3 3)
* src/QMData.C 1.105 (changed +3 3)
* src/MeasureSurface.C 1.11 (changed +4 3)
Make use of sincosf() rather than separate calls to sinf() and cosf().
* src/PSDisplayDevice.C 1.117 (changed +3 5)
* src/OpenGLRenderer.C 1.470 (changed +5 9)
* src/Measure.C 1.150 (changed +13 7)
* src/Matrix4.C 1.57 (changed +13 12)
* src/GelatoDisplayDevice.C 1.35 (changed +7 6)
* src/FileRenderer.C 1.184 (changed +4 7)
* src/DrawRingsUtils.C 1.41 (changed +9 6)
* src/DrawMolItemRings.C 1.28 (changed +4 7)
* src/DrawMolItemRibbons.C 1.150 (changed +2 3)
Make use of sincosf() rather than separate sinf() and cosf() calls.
* src/VolMapCreateILS.C 1.170 (changed +5 3)
Updated the measure volinterior code to the latest revision from Alex and
did updates for comments that have already been addressed, and further
revision and cleanup for a few of the easy issues that still needed
attention.
* src/utilities.h 1.112 (changed +10 1)
* src/utilities.C 1.174 (changed +196 2)
* src/TclMeasure.C 1.177 (changed +30 130)
* src/MeasureVolInterior.h 1.5 (changed +6 10)
* src/MeasureVolInterior.C 1.14 (changed +18 119)

 20190926  johns  Eliminated single DPICKPOINT primitives from all of the display command
processing loops.
* src/OpenGLRenderer.C 1.468 (changed +1 2)
* src/FileRenderer.C 1.182 (changed +1 7)
* src/DisplayDevice.C 1.148 (changed +1 69)
* src/DispCmds.h 1.113 (changed +2 2)
* src/DispCmds.C 1.114 (changed +1 12)
Eliminated use of individual pick point primitives in favor of
pick point arrays, so the individual pick point primitives can be
completely eliminated from VMD display command processing loops.
* src/MoleculeGraphics.C 1.77 (changed +14 3)
* src/DrawMolItem.h 1.185 (changed +1 2)
* src/DrawMolItem.C 1.368 (changed +7 2)
* src/Axes.h 1.42 (changed +1 2)
* src/Axes.C 1.73 (changed +20 8)
Pretty up the display command enumeration
* src/DispCmds.h 1.115 (changed +2 4)
Started eliminating individual pick point primitives in favor of
pick point arrays, so the individual pick point primitives can be
completely eliminated from VMD display command processing loops.
* src/Stage.h 1.42 (changed +1 2)
* src/Stage.C 1.54 (changed +14 2)
Streamlining and optimization of VMD display command tokens
and reduced dependence on persistent renderer state in favor of
selfcontained display command state. These changes will permit
higher performance backend renderer implementations and will
eventually allow independent parallel/concurrent rendering of
multiple display command tokens.
* src/VMDTitle.C 1.61 (changed +8 9)
* src/PSDisplayDevice.C 1.116 (changed +3 7)
* src/OpenGLRenderer.C 1.469 (changed +5 17)
* src/MoleculeGraphics.C 1.78 (changed +2 4)
* src/GeometryMol.C 1.57 (changed +3 8)
* src/FileRenderer.h 1.128 (changed +1 4)
* src/FileRenderer.C 1.183 (changed +8 20)
* src/FPS.C 1.20 (changed +1 1)
* src/DispCmds.h 1.114 (changed +19 20)
* src/DispCmds.C 1.115 (changed +8 22)
* src/Axes.C 1.74 (changed +4 4)

 20190925  johns  Fixed handling of trajectory reader plugins that require the special
MOLFILE_NUMATOMS_UNKNOWN flag to indicate that the trajectory format
does not include atom count information and that it must be paired with
a structure file that provides this information. The matching structure
file must be loaded first as always, and then the trajectory read code
path will allow the MOLFILE_NUMATOMS_UNKNOWN result to permit reading
of the trajectory.
* src/VMDApp.C 1.564 (changed +9 3)

 20190918  johns  Updated Win32 registry key string
* src/win32vmdstart.c 1.47 (changed +3 3)

 20190912  johns  Added comments about isosurface extraction for multigigavoxel volumes,
OpenGL triangle mesh indexing issues, multipass MC isosurface extraction,
and thread pool usage.
* src/DrawMolItemVolume.C 1.170 (changed +25 2)
Changed the VMD volume loading code to defer calculation of
volume gradient maps ondemand, when dealing with huge volumes where the
gradient map would consume more than 3GB of RAM.
* src/BaseMolecule.C 1.273 (changed +16 6)
Changed the pointbased volume rendering code to automatically break up
geometry batches into chunks of 10 million elements or less to avoid
various types of OpenGL vertex indexing and buffer size limits when
rendering multigigavoxel volumes.
* src/DrawMolItemVolume.C 1.171 (changed +50 15)
Substantial optimizations added to DrawMolItem::draw_volume_isosurface_points()
to enable visualization of large tomography volumes. Tested up to
33 gigavoxels so far. Revised the innermost loop memory traversal behavior
and improved the isovalue test logic to greatly reduce overheads. At this
point to get further performance we need a different display command that
assumes uniform point coloring so we can avoid generating colorpervertex
input arrays that presently double the required memory storage and bandwidth.
* src/DrawMolItemVolume.C 1.172 (changed +37 14)

 20190911  johns  Cleanup and optimization of CPU marching cubes isosurface extraction code
while working on improved handling for huge volumes.
* src/Isosurface.h 1.32 (changed +3 3)
* src/Isosurface.C 1.51 (changed +52 36)
* src/DrawMolItemVolume.C 1.169 (changed +13 7)
Corrected MolAtom forward declaration to be a class as it should be.
* src/PickModeForce.h 1.17 (changed +2 2)
Made the extend() method public so that performancecritical graphics
related loops can be optimized to use a zerocopy approach, eliminating
use of the appendX() methods in their innermost loops, and enabling
direct writes to the final buffer position. This is particularly
valuable for marching cubes, sphere, and pointbased rendering methods
where the appendX() methods can incur significant overhead relative to
the rest of the (simple) arithmetic in the innermost loops of such code.
* src/ResizeArray.h 1.54 (changed +21 20)

 20190910  johns  Corrected pointbased volume representation indexing arithmetic to handle
multibillion voxel volumes. Somehow the point methods weren't updated
when the others were.
* src/DrawMolItemVolume.C 1.167 (changed +13 10)
Improved the performance and volume size scalability for both the pointbased
volume representations and the FieldLines representation seed calculations.
* src/DrawMolItemVolume.C 1.168 (changed +45 20)

 20190827  johns  Cranked version
* configure 1.1477 (changed +1 1)
Switch optix rev for old targets
* configure 1.1478 (changed +5 5)

 20190816  johns  Added performance related source code comments for future improvements.
* src/TclMeasure.C 1.176 (changed +21 5)
Cleaned up various minor issues in the new volinterior code, removing
and/or annotating a few bogus constructs that had been left in the code,
marking functions that should be migrated out of this code which is
just meant to create bindings for the scripting language, and eliminated
poorly formatted code such as bad indentation and use of tab characters.
* src/TclMeasure.C 1.173 (changed +83 76)
Corrected various code formatting issues eliminating tabs etc.
Annoted poor conditional execution constructs and other weak areas
of implementation while correcting formatting transgressions.
* src/TclMeasure.C 1.174 (changed +176 175)
Eliminated all of the unnecessary (const VolumetricData *) casts.
* src/TclMeasure.C 1.175 (changed +28 28)
Hoisted and precalculated a few trivial quantities, and added significant
comments about places where we can further improve performance.
* src/MeasureVolInterior.C 1.13 (changed +46 22)
Pulled in U. Del team's revs for the volinterior code from their latest
version, including probability maps.
* src/TclMeasure.C 1.172 (changed +332 36)
* src/MeasureVolInterior.h 1.4 (changed +16 1)
* src/MeasureVolInterior.C 1.12 (changed +359 3)

 20190727  johns  A36 compiled with CUDA 9.2
* configure 1.1476 (changed +4 4)

 20190725  johns  Revised the recursive ray generation logic for the transparency peeling
implementation in the internal OptiX ray tracing engine.
For correct operation with the RTX runtime strategy and its
associated stack management scheme, we MUST increment the
ray recursion depth counter when performing transparent surface
peeling, otherwise we could go beyond the max ray recursion depth
that we previously requested from OptiX. This will work less well
than the former approach in terms of worstcase visual outcomes,
but we presently have no alternative and must avoid more serious
issues with runtime stack overruns. This may be a good time to
revisit whether or not we can more efficiently "continue" the
ray ignoring the current intersection by some other API, more like
we do for shadow handling for transparent surfaces with anyhit rays.
If we could perform a "continue" that would eliminate recursionrelated
stack management question for transparency peeling entirely.
* src/OptiXShaders.cu 1.172 (changed +11 2)

 20190722  ryanmcgreevy  Added check to make sure if vmd_cuda_calc_dens returns an error that we don't try to init_new_volume or write map to file with bad VolumetricData
* src/TclMDFF.C 1.31 (changed +6 4)
Moved write_file method for writing VolumetricData to file using MolFilePlugin from TclVoltool.C to Voltool.C since it is a general use method. Updated mdff_sim to use new write_file method instead of old volmap code, bringing it up to date with newer voltool commands.
* src/Voltool.h 1.10 (changed +4 1)
* src/Voltool.C 1.9 (changed +41 1)
* src/TclVoltool.C 1.7 (changed +1 41)
* src/TclMDFF.C 1.32 (changed +17 5)

 20190718  johns  Revised MDFF map simulation GPU call chain to correctly propagate
GPU runtime errors to ensure that CPU fallback is performed.
* src/CUDAMDFF.cu 1.80 (changed +26 12)

 20190710  johns  Added comments about the lack of recursion safety checks for shadow
feeler rays associating with lighting calculations. Since we don't
take this level of recursion into account in the renderer's internal
recursion tracking, we must ask OptiX to allow for one extra level of
recursion beyond the depth we're internally tracking to ensure that
there's enough stack space available.
* src/OptiXShaders.cu 1.171 (changed +8 2)
Improved both shading code and comments about the enforcement of
the maximum ray recursion depth since the interaction between the
renderer and the OptiX >= 6.x runtime system's memory allocation
for the recursion stack critically depends on absolute agreement
between what the renderer asks for and what it does during a run.
The way we had tracked the recursion depth previously was really
only tracking recursion of the last surface hit for shading and
it wasn't taking into account shadow feeler rays or the like, whereas
the OptiX runtime has to accurately compute the stack space for
any recursive rtTrace() call.
The recursion tracking logic in the renderer used zerobased counting
and also had an incorrect comparison test so the original code had
allowed one more recursion than requested in practice, which while
harmless in older OptiX APIs that used an applicationprovided
recursion stack memory request sizes, is intolerable with the new
implementation since it computes the necessary stack size directly
from the maximum recursion depth. The revised code now asks OptiX
for a maximum recursion depth one greater than the surface hit depth
to allow lighting calculations to complete, and the internal max recursion
counter tracking has been corrected for its use of zerobased indexing.
Further comments should probably be added to the lighting code about
the necessity for this extra level of recursion beyond what the shader
is tracking internally.
* src/OptiXShaders.cu 1.170 (changed +4 6)
* src/OptiXRenderer.C 1.357 (changed +14 6)

 20190629  johns  Modified the RTX accelerated ray tracing path to be extra conservative
about its maximum recursion depth and associated stack size requirements,
and added a VMDOPTIXMAXSTACKSIZE environment variable that causes VMD
to set the RTX runtime for maximum supported recursion depth and associated
stack size allocation.
* src/OptiXRenderer.C 1.356 (changed +19 3)

 20190628  johns  Cranked version
* configure 1.1475 (changed +1 1)
Misc cleanup. Time to revisit whether it would be wise to pull the
bond data structures out of the atom class to permit them to be dynamically
resized for better averagecase memory efficiency while still permitting
loading of unusual molecular structures or models with huge perparticle
bond counts.
* src/Atom.h 1.71 (changed +6 8)
Revert default compilation to 12bondsperatom maximums for now.
* src/Atom.h 1.73 (changed +2 2)
Temporarily increase peratom bond storage to 256 for a special userrequested
build. While doing this, I've gone ahead and added comments about
rearchitecting the code to eliminate this limitation with dynamic
allocation outside of MolAtom in the containing molecule class,
resulting in a likelyacceptable performance tradeoff given the
propensity for an improved (reduced) average case memory use for bond
storage and traversal.
* src/Atom.h 1.72 (changed +13 2)
Updated format specifier for 64bit Python APIs that return longs.
* src/py_molecule.C 1.81 (changed +2 2)

 20190624  johns  Use calloc() rather than malloc() so we don't have to make an additional
subsequent memset() call to zero out the coordinate arrays.
* src/Timestep.C 1.72 (changed +5 4)

 20190621  johns  Cranked version
* configure 1.1474 (changed +1 1)

 20190606  johns  Added further URL references about Python 3 module initialization
practices that improve portability on recent compilers, particularly those
that support C++11.
* src/py_atomsel.C 1.46 (changed +7 1)
Changed the atom selection module initialization approach to address
problems that arise with Clang++ 8.x, which gets upset about
the use of PyObject_HEAD_INIT() and suggests adding braces etc.
This is discussed in significant detail as part of PEP 1323:
https://www.python.org/dev/peps/pep3123/
The discussion of PEP 1323 suggests the use of PyVarObject_HEAD_INIT()
instead of PyObject_HEAD_INIT().
* src/py_atomsel.C 1.45 (changed +9 3)
Eliminate duplicated extern "C" linkage type qualifier used to ensure that
name mangling is disabled.
* src/PythonTextInterp.C 1.74 (changed +5 1)
Eliminated warnings from clang++ related to potentially uninitialized
local variable state when the error handling branches are taken, by
improving locality of variable scoping for PyObject pointers so they
don't cross the boundary between normal execution and error condition cases.
* src/py_atomsel.C 1.41 (changed +3 4)
Further variable initialization changes to avoid compiler diagnostics
from Clang++
* src/py_atomsel.C 1.43 (changed +2 2)
Misc cleanup
* src/py_atomsel.C 1.44 (changed +72 71)
Perform allocation/initialization of the result Python list early enough
that it isn't undefined if subsequent errors occur, but we're already past
basic initialization phases for the method in question. This is required
to please Clang++ in its analysis of code initialization and exception handling.
* src/py_atomsel.C 1.42 (changed +6 2)

vmdfirstpython3
 20190605  johns  Const correctness fix for Python 3.x
* src/VMDTkinterMenu.C 1.4 (changed +1 1)
Elimiante trailing whitespace
* python/testdisplay.py 1.5 (changed +2 2)
Many more const correctness fixes for Python 3.x APIs, particularly
as fallout from the use of PyUnicode_AsUTF8().
* src/py_graphics.C 1.35 (changed +3 3)
* src/py_commands.h 1.49 (changed +2 2)
* src/py_commands.C 1.22 (changed +4 3)
* src/py_color.C 1.34 (changed +5 5)
* src/py_atomsel.C 1.40 (changed +8 8)
Merged Robin Betz's Python API changes to support both Python 2.x and 3.x,
changes to Python module initialization, and module naming.
* python/testMolecule.py 1.17 (changed +2 2)
* python/startvmd.py 1.5 (changed +2 2)
* python/hotkeys.py 1.2 (changed +2 2)
* python/VMD.py 1.16 (changed +24 41)
* python/Tkinter.py 1.5 (changed +78 72)
* python/Molecule.py 1.31 (changed +12 12)
* python/Material.py 1.5 (changed +2 2)
* python/Label.py 1.5 (changed +7 7)
* python/AtomSel.py 1.23 (changed +4 4)
Merged Robin Betz's Python API changes:
All functions take keyword arguments.
Clearer keyword arguments for some functions, but backwardscompatible, too.
All functions and modules have docstrings.
More comprehensive error checking of invalid input.
Careful reference counting of all Python objects to avoid memory leaks.
Test cases for all Python modulesĀ + bug fixes I found while writing
test cases in python/test.
Tested builds with address sanitizer and caught several memory leaks.
Compiled and tested with Python 2.7 and 3.6.
Greatly improved atomsel attribute access: instead of atomsel().get("x")
you can just say atomsel().x, etc.
Renamed atomsel module to selection to clarify difference between it and
atomsel type.
Python module initialization functions appear only in one spot
(py_commands.h), making it easier to add new modules.
* src/py_vmd.C 1.16 (changed +88 72)
* src/py_selection.C 1.1 (added +226 0)
* src/py_commands.h 1.47 (changed +1 9)
* src/py_commands.C 1.21 (changed +1 7)
* src/py_atomsel.C 1.36 (changed +1623 957)
* src/PythonTextInterp.C 1.72 (changed +121 68)
Merged Robin Betz's changes for keywordbased Python parameter parsing,
improved doc strings, and Python 3.x initialization.
* configure 1.1473 (changed +1 1)
Misc cleanup.
Merged Robin Betz's Python API changes to support both Python 2.x and 3.x,
changes to Python module initialization, and module naming hierarchy.
* src/py_molecule.C 1.80 (changed +1096 570)
Modify the VMDApp pointer checks to unify with the other implementations.
* src/py_selection.C 1.2 (changed +19 14)
Remerged the Python atom selection interface to make use of
firstsel/lastsel to improve atom selection traversal performance.
The Python 3.x changes led to a loss of this optimization, so this
revision puts it back in place.
* src/py_atomsel.C 1.37 (changed +6 6)
Removed the py_atomselection.C source file that contained the original
(Oct 2000) VMD python bindings for performing atom selections.
The original atomselection interface has been deprecated since 2007, so
at this point we can safely remove it altogether as part of modernization
for Python 3.x. The newer implementations have now been further
improved and this reduces the code we're maintaining going forward.
* src/py_atomselection.C 1.60 (removed +0 942)
Rewrote the build_set_values() helper in the Python atom selection
implementation to eliminate redundant passing of atom counts and
selection flag arrays in favor of passing a const pointer to the
atom selection itself, which allows the internal loops within
build_set_values() to make use of atom selection accelerator loop bounds.
* src/py_atomsel.C 1.39 (changed +12 18)
Set numvalues prior to the first error handling branch to prevent
compiler errors related to jumping past the initialization of numvalues,
even though we're not really using it within the error handling block.
* src/py_measure.C 1.11 (changed +3 3)
Updated Python 2.x/3.x initialization and fixes to prevent C++ name mangling.
* src/py_vmd.C 1.17 (changed +24 7)
* src/py_commands.h 1.48 (changed +8 6)
* src/PythonTextInterp.C 1.73 (changed +3 2)
We need to revise the build_set_values() helper before we can exploit
atom selection accelerators.
* src/py_atomsel.C 1.38 (changed +7 2)

 20190604  johns  Continued cleanup of the Python bindings.
Merged the last parts of Robin Betz's Python 3 initialization changes
along with improved error handling and improved Python type checking for
atom selections in particular. A few of the changes have to be held back
via conditional compilation until the matching changes have been completed,
e.g., in the atom selection code.
* src/py_commands.h 1.46 (changed +28 2)
* src/py_commands.C 1.20 (changed +171 90)

 20190531  johns  Misc cleanup and improvements.
Merged Robin Betz's changes for keywordbased Python parameter parsing,
improved doc strings, and Python 3.x initialization.
* src/py_trans.C 1.24 (changed +432 187)
* src/py_topo.C 1.10 (changed +841 345)
* src/py_molrep.C 1.32 (changed +493 245)
* src/py_graphics.C 1.33 (changed +447 243)
* src/py_color.C 1.33 (changed +377 197)
Reeliminated duplicated registration of the _sphere method accidentally
reintroduced when merging in Robin Betz's changes which were based on
an older version of the code. Eliminated the "graphics_" prefix in favor
of just "py_" leading to shorter function names and improved code
readability.
* src/py_graphics.C 1.34 (changed +16 23)
Updated to latest colvars source with the STL algorithm fix
permanently implemented.
* src/colvars_version.h 1.12 (changed +1 1)
* src/colvarcomp_protein.C 1.11 (changed +2 1)
* src/colvarcomp.C 1.16 (changed +3 1)

 20190530  johns  Consistency among Python module init routines
* src/py_axes.C 1.21 (changed +4 5)
Merged Robin Betz's changes for keywordbased Python parameter parsing,
improved doc strings, and Python 3.x initialization.
* src/py_render.C 1.23 (changed +52 13)
* src/py_mouse.C 1.14 (changed +53 9)
* src/py_axes.C 1.20 (changed +57 21)
Merged Robin Betz's changes for keywordbased Python parameter parsing,
improved doc strings, and Python 3.x initialization.
Continued cleanup.
* src/py_menu.C 1.19 (changed +98 35)
Misc cleanup and comment improvements
* src/py_material.C 1.36 (changed +20 15)
Misc cleanup and improvements.
Merged Robin Betz's changes for keywordbased Python parameter parsing,
improved doc strings, and Python 3.x initialization.
* src/py_numeric.C 1.27 (changed +133 62)
* src/py_measure.C 1.10 (changed +102 50)
* src/py_material.C 1.37 (changed +194 88)
* src/py_label.C 1.31 (changed +390 208)
* src/py_imd.C 1.29 (changed +119 56)
* src/py_animate.C 1.30 (changed +122 71)
Misc cleanup and improvements.
Merged Robin Betz's changes for keywordbased Python parameter parsing,
improved doc strings, and Python 3.x initialization.
A noteworthy deficiency in our Python interface parsing implementations
arises in cases (as in py_display) when we need to match parsed keywords
against a long list of potential candidates, triggering the correct
assignments, type conversions, and subsequent VMD actions to be taken.
At present, the parsing code performs what boils down to a variant of
linear search through the series of candidate keywords, either by looping
and/or branching with string compares. This makes the code ugly and
slower than it should be. We should instead create persistent hash tables
(that live for the life of the Python module, interpreter, or application)
that contain all of the keywords, and associate them with enumerations or
function pointers to directly trigger the right actions. That would
eliminate the linear search behavior (both variants), and if properly
generalized, this pattern could be used in many other parts of the VMD
Tcl/Python bindings where we have to parse keywords from large lists of
candidates.
* src/py_display.C 1.42 (changed +279 122)
Renamed keyword arguments parameter from "keywds" to "kwargs" for clarity
and consistency with the rest of the python bindings that do keyword handling.
* src/py_material.C 1.35 (changed +12 12)
Renamed registered Python method fctns, adding py_ prefix for clarity
* src/py_trans.C 1.23 (changed +33 33)
* src/py_topo.C 1.9 (changed +33 33)
* src/py_numeric.C 1.26 (changed +8 8)
* src/py_molrep.C 1.31 (changed +43 43)
* src/py_molecule.C 1.79 (changed +74 69)
* src/py_measure.C 1.9 (changed +7 7)
* src/py_material.C 1.34 (changed +15 15)
* src/py_label.C 1.30 (changed +19 21)
* src/py_graphics.C 1.32 (changed +31 32)
* src/py_display.C 1.41 (changed +15 15)
* src/py_axes.C 1.19 (changed +5 5)
* src/py_atomsel.C 1.35 (changed +17 17)
* src/py_atomselection.C 1.59 (changed +23 23)
Revised all of the VMD Python initialization routines to match the
function signature needed for tabulated module initialization per
Robin Betz's patch to support Python 3.x.
* src/py_trans.C 1.22 (changed +4 3)
* src/py_topo.C 1.8 (changed +4 3)
* src/py_render.C 1.22 (changed +4 3)
* src/py_numeric.C 1.25 (changed +5 4)
* src/py_mouse.C 1.13 (changed +2 1)
* src/py_molrep.C 1.30 (changed +4 3)
* src/py_molecule.C 1.78 (changed +4 3)
* src/py_menu.C 1.18 (changed +3 2)
* src/py_measure.C 1.8 (changed +4 3)
* src/py_material.C 1.33 (changed +4 3)
* src/py_label.C 1.29 (changed +3 2)
* src/py_imd.C 1.28 (changed +4 3)
* src/py_graphics.C 1.31 (changed +4 3)
* src/py_display.C 1.40 (changed +5 2)
* src/py_commands.h 1.45 (changed +21 20)
* src/py_color.C 1.32 (changed +4 3)
* src/py_axes.C 1.18 (changed +8 2)
* src/py_atomsel.C 1.34 (changed +7 7)
* src/py_animate.C 1.29 (changed +4 3)
* src/PythonTextInterp.C 1.71 (changed +5 2)
* src/py_atomselection.C 1.58 (changed +4 3)

 20190529  johns  Added safety checks for VMDApp pointers
* src/py_topo.C 1.6 (changed +54 18)
* src/py_molecule.C 1.77 (changed +147 34)
* src/py_atomsel.C 1.33 (changed +24 6)
* src/py_atomselection.C 1.57 (changed +62 14)
Added safety checks for VMDApp pointers.
* src/py_trans.C 1.21 (changed +66 17)
* src/py_numeric.C 1.24 (changed +18 4)
* src/py_molrep.C 1.29 (changed +91 21)
* src/py_material.C 1.31 (changed +34 8)
* src/py_label.C 1.28 (changed +35 9)
* src/py_imd.C 1.23 (changed +37 9)
* src/py_graphics.C 1.30 (changed +14 4)
* src/py_display.C 1.39 (changed +31 8)
Applied several doc string and src comment improvements from Robin Betz.
* src/py_measure.C 1.7 (changed +87 25)
Const correctness improvements for modern Python APIs.
* src/py_trans.C 1.20 (changed +35 35)
* src/py_topo.C 1.4 (changed +30 17)
* src/py_render.C 1.21 (changed +3 3)
* src/py_numeric.C 1.23 (changed +10 12)
* src/py_mouse.C 1.12 (changed +2 2)
* src/py_molrep.C 1.28 (changed +72 76)
* src/py_molecule.C 1.76 (changed +90 103)
* src/py_material.C 1.30 (changed +43 43)
* src/py_label.C 1.27 (changed +31 31)
* src/py_imd.C 1.27 (changed +2 2)
* src/py_imd.C 1.22 (changed +15 22)
* src/py_graphics.C 1.29 (changed +28 40)
* src/py_display.C 1.38 (changed +12 12)
* src/py_commands.C 1.19 (changed +9 9)
* src/py_color.C 1.31 (changed +2 2)
* src/py_atomsel.C 1.32 (changed +62 72)
* src/py_animate.C 1.28 (changed +2 2)
* src/py_atomselection.C 1.56 (changed +30 34)
Eliminated tabs in the source and misc other cleanup.
* src/py_topo.C 1.5 (changed +597 489)
Eliminated unnecessary calls to PyArg_ParseTuple() for Python methods
that don't need to accept any arguments, and changed their registration
to METH_NOARGS.
* src/py_material.C 1.32 (changed +2 5)
* src/py_imd.C 1.25 (changed +5 18)
Misc cleanup
* src/py_topo.C 1.7 (changed +2 2)
Renamed registered Python method fctns, adding py_ prefix for clarity
* src/py_imd.C 1.24 (changed +17 18)
Revised Python doc strings per Robin Betz's suggestions.
* src/py_imd.C 1.26 (changed +47 24)

 20190528  johns  Added missing revision control header
* src/py_measure.C 1.4 (changed +20 0)
Added new/improved Python doc strings from Robin Betz
* src/py_render.C 1.20 (changed +21 8)
Added safety checks for VMDApp pointers
Renamed registered Python method fctns, adding py_ prefix for clarity
* src/py_menu.C 1.16 (changed +24 8)
Added safety checks for VMDApp pointers.
* src/py_color.C 1.26 (changed +41 9)
Added safety checks for VMDApp pointers.
Added new/improved Python doc strings from Robin Betz
* src/py_mouse.C 1.11 (changed +12 4)
Added safety checks for VMDApp pointers.
Const correctness improvements for modern Python APIs.
Added new/improved Python doc strings from Robin Betz.
* src/py_vmd.C 1.15 (changed +40 12)
Added safety checks for VMDApp pointers.
Eliminated unnecessary calls to PyArg_ParseTuple() for Python methods
that don't need to accept any arguments, and changed their registration
to METH_NOARGS.
* src/py_color.C 1.28 (changed +20 31)
Began applying Robin Betz's Python doc string improvements and
improved error checking.
* src/py_animate.C 1.26 (changed +38 14)
Began detabbing src code
* src/py_measure.C 1.5 (changed +93 80)
Const correctness improvements for modern Python APIs.
* src/py_menu.C 1.15 (changed +10 10)
* src/py_color.C 1.29 (changed +16 20)
Const correctness improvements for modern Python APIs.
Improved Python doc strings from Robin Betz.
* src/py_animate.C 1.27 (changed +22 6)
Misc cleanup
* src/py_color.C 1.30 (changed +4 5)
More detabbing
* src/py_measure.C 1.6 (changed +46 47)
Renamed registered Python method fctns, adding py_ prefix for clarity
* src/py_color.C 1.27 (changed +30 27)
Revised Python doc strings per Robin Betz's suggestions.
* src/py_menu.C 1.17 (changed +34 8)

 20190524  johns  Added VMDApp pointer safety checks.
* src/py_axes.C 1.17 (changed +8 2)

Other commits are hidden... 