VMD 1.9.3 Development
VMD Development Status
- VMD 1.9.3 Final Release (November 30, 2016)
- doc: updated programmer's guide documentation for MPI builds of VMD to make specific mention of the ability to disable MPI at runtime to allow VMD to be run on login nodes or interactive visualization nodes without 'mpirun' etc.
- doc: updated programmer's guide CVS docs for VMD 1.9.3
- doc: Mention updates to support Cray XC50
- Updated build configuration for VS2005
- Centralized logic for threshold based enabling of block-based I/O, and added an environment variable to force block I/O off as well.
- jsplugin: Auto-enable SSD-optimized unbuffered block-based I/O for all structures with more than 50,000 atoms, for which alignment padding overhead for on-disk and in-memroy data structures are under 1% on average.
- Added default MPI-enabled build flags for CSCS Piz Daint to the top Makefile
- Added CUDA 8.0 paths for CSCS test machine 'dom'
- Updated the low-level implementation of the "parallel allgather" command so that no MPI API calls are made in the single-node case, which improves performance on single-node runs, and also implicitly handles the scenario where a user is running a VMD build that was compiled and linked with MPI enabled, but it is being run on a compute node or in another circumstance when MPI has not been initialized. This is needed to simplify deployment on systems like Blue Waters, Piz Daint, and Titan where the same binary could be run in a broad range of circumstances.
- Updated CSCS Piz Daint configuration to use OptiX 4.0.1 required for the new Tesla P100 compute nodes.
- Added CUDA 8.0 compile flags for the recently upgraded CSCS Piz Daint Cray XC50 supercomputer.
- Commented out code associated with selection of quad-buffered stereoscopic OpenGL visuals since the EGL standard doesn't incorporate support for stereoscopic rendering surfaces at present.
- doc: Updated list of molfile plugin changes/improvements/bug fixes
- doc: Updated User's Guide paper references for recent work with application of various CPU vectorization and GPU acceleration techniques on analysis and visualization algorithms in VMD.
- doc: Removed details that pertained to anachronistic OpenGL implementations on specific commercial Unix distributions.
- doc: Eliminated anachronistic comment about Sun and SGI OpenGL implementations.
- doc: Updated the VMD User's Guide bibliography with recent work.
- doc: Added documentation of the VR headlight in the OptiX renderer.
- doc: Updated VMD User's Guide text with details that describe all of the new environment variables that support new or special rendering features of the OptiX and OSPRay renderers, such as selecting special projection modes, stereoscopic output, remote NVIDIA VCA cluster access, and so on.
- doc: Updated User's Guide text related to the various built-in ray tracing engines to account for recent improvements.
- Allow user-override of larger-than-screen image sizes for OptiX and OSPRay batch renderings via environment variable until the GUIs permit this internally.
- Updated copyright headers for UIUC-written molfile plugins
- jsplugin: Cranked minor version number to account for code accomodations to handle very large atom indices, up to 2B atoms.
- Commented out unused kernels for AOS-structured memory layouts. Eliminated compiler warnings about unreferenced runtime CPU-specific vector instruction set enable/disable flags by separation of flag declarations into separate conditionally-compiled code blocks.
- Eliminated compiler warnings for CPU threadcounts variables only used for the old non-threadpool-based QM orbital calculations.
- Eliminated compiler warnings about unreferenced CPU-specific vector instruction set enable/disable runtime flags by separation of flag declarations into conditionally-compiled code blocks for SSE2, AVX2, AVX512, VSX, etc.
- Eliminated compiler warning about unused text thickness variable caused by the lack of a line thickness implementation for VRML2 indexed line sets.
- Eliminated compiler warnings about a few now-unused SSE2 helper routines developed for early prototyping and previous implementations.
- Avoid redeclaration of counter variable with compilers that absorb inline declarations into the outer scope.
- Enable environment variable-enabled timing and diagnostics on ring finding analysis and overall structure analysis performance.
- Eliminate compiler warnings for dangling user-specified per-residue tube width modulation implementation.
- Updated special-case OptiX shader Makefile for latest revs of CUDA/OptiX
- Updated copyright headers across the board.
- Eliminated compiler warning about h_orbitalgrid_zerocopy when the CUDA kernels are compiled with zero-copy memory use disabled.
- Changed OptiX PTX generation to target compute_30 rather than compute_20 since compute_20 is deprecated now.
- Normalized pdbxplugin console messages so they are easily identified as eminating from the plugin rather than VMD or other tools. Updated ABI version warning message to refer to the ABI rather than VMD since other tools also use our plugins.
- pdbxplugin: changed pdbxplugin exception handler block to avoid compilation issues on Android devices, e.g., for the ANDROIDARMV7A compilation target.
- pdbxplugin: Added special handling of '?' or '.' characters that might arise in the insertion code fields, to ensure that they do not propagate into VMD itself.
- pdbxplugin: Corrected forward declaration of create_pdbxWriter();
- docs: remove deprecated guidance on old operating systems that are no longer supported by current VMD builds.
- docs: Eliminate mention of ancient OS variants.
- Removed old architectures from the main configure script, since nobody is running old IRIX, HP-UX, or TRU64 machines except as part of museum displays.
- Workaround sqrt() type ambiguity for old Solaris compilers in MeasureQCP.
- Updated OSPRay version check error string to specify OSPRay 1.1.2 or later due to cylinder rendering bugs in previous versions. The version number macro test isn't updated to check the minor and patch versions until we're past builds using the custom patched version of OSPRay 1.1.1 for builds.
- Added more comments about details of the OSPRay vers <= 1.1.1 cylinder rendering bugs and the macro definitions to comment out when compiling VMD against versions that contain the bugs. The source release of VMD 1.9.3 will be made such that an error will be thrown for builds against OSPRay 1.1.1 since normal users would not be able to get access to a bug-fixed version of OSPRay 1.1.1 that was manually-patched.
- Updated the OpenPOWER build flags to ensure we compile for SM 5.x and SM 6.x by default, otherwise the binaries won't run on Pascal GPUs such as Tesla P100.
- Added PSG cluster x86 target
- Updated plugin build host recognition for NVIDIA PSG cluster
- qwikmd: Remove the possibility to choose the location of qwikmd library. Use the home directory and the folder name qwikmd. Avoid confusion by new users.
- vmd.sh: Added missing "then" to OpenPOWER "elif" block
- Added source code comment about OSPRay black cylinder issue. OSPRay version 1.1.1 and earlier versions have code that computes bad surface normals for cylinders when the cylinders have a small radius, which can result in black-colored cylinders. Subsequent versions of OSPRay should cure the problem.
- Significant rewrite of cylinder rendering code to eliminate the colorID arrays, per suggestions from Jeff Amstutz. With the rewrite, some of the cases that previously yielded black cylinders now render correctly, but others still do not. At present, there is no obvious explanation of the cases that still don't render correctly, so there may be a sensitivity to array alignment or some other tricky issue affecting the outcome.
- Ensure that material properties that get modified across RT renderer invocations are updated by destroying previously created material caches.
- Added runtime environment variable check to allow users to enable OSPRay single-threaded debugging mode.
- Eliminate pre-multiplication of light scaling factors for use of per-light "intensity" factor, per Johannes' comment. Use "scivis" renderer rather than "raytracer" since that's what the new docs advocate.
- Use ospSet3fv() preferentially, and corrected a bad light index in the interactive RT loop.
- Use ospSet1f() rather than ospSetf() for clarity's sake
- Use "distant" light name rather than the "DirectionalLight" name used by older revs of OSPRay, since this is what the current docs advise.
- Corrected OSPRay "Ns" material parameter to be handled as a scalar since that is the correct behavior with current revs and materials.
- readcharmmtop: Ensure that top_all36_hybrid.inp is included in the distribution.
- Disable display of the BioCoRE related plugins in the Extensions menu since BioCoRE is not being actively developed now.
- Added AVX512ER implementation of orbital density sign propagation code path.
- Updated the AVX-512ER molecular orbital wavefunction loops to make greater use of FMA instructions.
- Switch the CPU molecular orbitals to use a app-wide persisent pool of worker threads rather than launching on demand due to massive OS/runtime overheads for POSIX thread creation/destruction on platforms like Xeon Phi KNL.
- Added a global VMD CPU thread pool that is (strongly) needed by platforms like Xeon Phi KNL where the cost of creating and destroying threads is massive (both due to sheer numbers, and due to OS overheads) when compared with a more conventional quad-core CPU. Use of a persistent thread pool increases the per-iteration calculation speed for the AVX-512ER molecular orbital kernel by a factor of over 30x. We will also want to tune the compilation of the threading implementation to tune the barrier and scheduler implementations carefully for KNL hardware, but this is already a substantial improvement.
- Corrected exponent sign for hand-coded AVX512ER molecular orbital kernel.
- xsfplugin: minor coding style consistency fixes, eliminate tabs, etc.
- pdbxplugin: code style tweaks, adding spaces between if and the "(" char.
- offplugin: Misc code style cleanup, removal of tabs, and indendation consistency improvement.
- Corrected an inappropriate space in a format specifier for mol2plugin output code and corrected several minor code style deficiencies.
- cubeplugin: eliminated tabs in src.
- raster3dplugin: major cleanup of tabs, ragged indentation and other stylistic deficiencies in the Raster3D plugin, also updated the minor version number after the previously applied patch.
- raster3dplugin: Patch to correct the Raster3D reader plugin for some Molscript output files that previously didn't work right, from Thomas Holder, Schrodinger.
- molfile plugins: Only invoke the unicode-aware code path when UNICODE is defined during compilation, regardless of the compiler toolchain version.
- psfgen: Fix uninitialized pointer bug.
- pdbxplugin: Began a code cleanup campaign on pdbxplugin, since it contained a variety of minor style issues ranging from tabs in the code and ragged indentation to indented conditional compilation #ifdefs and other issues.
- lammpsplugin: eliminated compiler warnings on missing return value from internal id_merge() function.
- babelplugin: Updated minor version number to reflect alternate code paths added to the VMD directory/path traversal code in vmddir.h
- Updated plugin directory/path traversal helper routines to handle multi-byte characters in paths. Patch provided by Thomas Holder, Schrodinger. I have also added #ifdef checks for MS compiler versions new enough to support the new code.
- dtrplugin: Added format handling for old non-C99 compilers back in.
- dtrplugin: Applied patch from Thomas Holder to cause the dtrplugin code to use macros rather than hard-coded format conversion specifiers when scanning or printing 64-bit values for various internal quantities. The new code uses a macro for PRIu64 to deal with differences in types, thereby preventing compiler warnings etc.
- graspplugin: Eliminated test for negative value on an unsigned integer type. Patch provided by Thomas Holder, Schrodinger.
- parmplugin, parm7plugin: Prevent code injection attacks on auto-decompression code path. Patch provided by Thomas Holder, Schrodinger. Originally reported to Schrodinger by Yousef Saed.
- gamessplugin: Corrected uninitialized pointer. Patch provided by Thomas Holder, Schrodinger.
- offplugin: Add support for handling of Windows line breaks and a suspicious index check. Patch submitted by Thomas Holder, Schrodinger.
- vaspxmlplugin: Correction for null termination of string. Patch submitted by Thomas Holder, Schrodinger.
- maeffplugin: Correction to console exception reporting case. Patch submitted by Thomas Holder, Schrodinger.
- moldenplugin: Correct an uninitialized pointer. Patch submitted by Thomas Holder, Schrodinger.
- Corrected the X inner loop increment for the 16-element AVX512ER vector size
- Added ifdefs for text and cylinder implementations still waiting on a color tracking bug fix as of OSPRay 1.1.1.
- Added cylinder_array() implementation needed for rendering text.
- Allow OSPRayDisplayDevice() to directly handle trimesh_n3f_v3f()
- Eliminated secondary triangle buffering now that the OSPRay implementation is more complete. The trimesh_n3f_v3f() method is still suboptimal due to the need to fully populate a per-vertex color array, but this should go away in the future.
- Removed CUDA build flags for SM 2.0 hardware since CUDA 8.0 emits deprecation warnings, and the latst GPU drivers required for CUDA 8.0 no longer support old Fermi-class GPUs like the Tesla C2050.
- Added references to associated research papers in OptiX and OSPRay source file headers.
- topotools: Applied Axel's patch to bring topotools up to v1.7.
- topotools: Eliminated obsolete parameters and scripts for update to topotools v1.7.
- Culled #ifdef tests on OptiX versions prior to OptiX 3.5.1, since we've moved way beyond that now and we're never going back.
- Eliminated old #ifdefed code paths for versions of OSPRay before 1.0, and emit an error that VMD now requires OSPRay version 1.1 or greater if a compilation is tried on the old revs.
- Added OSPRay maxdepth and scene epsilon override handling.
- Added in OSPRay handling of on-the-fly shadow, AO, and DoF state changes. Eliminated many of the old/ugly workarounds for bugs or limitations that are no longer needed with recent revs of OSPRay.
- Added OSPRay code to handle depth of field state changes during rendering
- Eliminate old OSPRay code, work toward elimination of old triMesh object
- Eliminated OSPRay console debugging output, updated various source comments
- Updated plugin build script for ORNL Crest test system.
- Ensure that the interactive ray tracing engines are only compiled in when OpenGL is also enabled.
- VMD 1.9.3 beta 4 (October 28, 2016)
- Updated OpenPOWER builds so that X11 libs etc are skipped when compiling VMD for EGL with the OpenGL dispatch libraries.
- Added compute_60 and sm_60 targets for CUDA 8.x builds.
- Updated the builds to assume OSPRay version 1.1.1 by default, and eliminated extraneous linkage and include paths that aren't actually needed if one compiles against one of the pre-built OSPRay libs available on the web.
- Eliminated OSPRay old console debugging messages.
- Corrected sphere material setup for OSPRay 1.1.x
- Corrected OSPRay light scaling factor for non-AO rendering modes Removed older code branch for very early versions of OSPRay
- Updated OSPRayRenderer to use new enums and constructors needed by OSPRay 1.1.x
- In testing, OptiX 4.0.x incurs significantly more runtime for JIT compilation of all of the closest-hit, any-hit, and material shaders. The performance impact going from OptiX 3.x to 4.x incurs up to 20x more time during VMD startup if we use the complete 256-combination expansion of the template-specialized material shader. This would be an unacceptable amount of startup time for VMD, so in the short-term until a better solution is available, the code that controls compile-time and run-time JIT of template-specialized shaders has been re-worked so that in OptiX 3.x VMD still uses the full expansion, but in OptiX 4.0.x the expansion is disabled. A more desirable compromise would be to prioritize a small handful of template-specialized shaders for OptiX 4.x, but that remains as subsequent work.
- Added timing collection for OptiX JIT phases during VMD startup since this can take a long time with OptiX 4.0.1
- Updated configure script to emulate the version macros found in the later revs of OSPRay when compiling for OSPRay 0.x.
- Updated Intel C/C++ linkage flag for 64-bit builds
- Changed default OptiX context management behavior to preserve the context unless the user has set the VMDOPTIXDESTROCONTEXT environment variable. This provides a very significant performance gain for the most recent OptiX 4.0.x releases that are comparatively slow at shader compilation relative to previous versions.
- Misc updates for OSPRay 1.1.x and updates to return types for the ResizeArray num() method and related functions.
- Current OSPRay headers are no longer including assert by default so it's time to remove the checks in VMD too.
- Linux builds now default to CUDA 8.0 and OptiX 4.0.1
- Changed startup initialization to redefine the Tk file chooser procs to call the underlying Tk-based chooser in place of the MacOS X native-system file dialog which creates issues with recent revs of MacOS X.
- Corrected include files needed for Intel C/C++ CPU ID feature test macros when compiling for lower-range SSE2 targets.
- Eliminated compiler warning about printf long int parms for OptiX stats.
- Corrected an (overly paranoid) uninitialized variable warning for pdb_field_index in colvarproxy_vmd::load_atoms().
- Eliminated compiler warnings about reordering of member initialization in the default constructor for colvarproxy.
- Fixed an old mismatched "delete" vs. "delete []" in molname_error()
- Fixed an old mismatched "delete" vs. "delete []" in the mobile phone interface
- Applied latest updates to the colvars module, and re-fixed excess const qualifiers on two APIs.
- Applied latest updates to the colvars docs
- Fixed small typo in plugins Make-arch for OPENPOWER target
- Added startup CPU instruction set feature/extension reporting
- Imported CPU ID API from current Tachyon code
- Updated colvars headers to eliminate compiler warnings associated with excess "const" qualifiers on new collective variables function return types.
- qwikmd: Hide progress bar in the background simulations to avoid misunderstanding from the users
- qwikmd: Hide the Render Frame until new developments of the VMD Render GUI
- Added implementations of QuickSurf inner loops for CPUs with AVX512ER exponential instructions (e.g. Xeon Phi KNL).
- Added an environment variable check to allow GLSL to be disabled for debugging on early POWER8 OpenGL EGL drivers.
- Added OPENPOWER runtime launch checks
- Added MLOG2EF scaling factor to convert from base e to base 2 for AVX512 exponential hardware instruction-based molecular orbital kernel
- qwikmd: Stability improvement in the creation of the restraints. Now, only the SMD pdb file is created by namd, otherwise all pdbs are created in the preparation file and use the *.coor file as coordinates reference for the restraints.
- qwikmd: Bug fix for the render Options. Migrated the "Easy Run" MD options to the basicGui array, instead of the individual variables.
- qwikmd: Avoid "Syntax Error" message when listing the outliers/marginal by only check the atom selections with one or more atoms(indexes)
- qwikmd: Migrated the "Easy Run" MD options to the basicGui array, instead of the individual variables. Initialize the checkbutton of the load simulation options. Centralize the lock gui options.
- propka: More online help URL updates for ProPKA GUI plugin
- fftk: fixed a bug in TorExplore to protect log file paths containing spaces
- fftk: preemptively handle future parsing issues for other aspects of CGenFF STR output when using PDB input
- fftk: fixed a bug parsing CGenFF STR output when using PDB input
- Disable use of POWER8 VSX intrinsics for the MO kernel on GCC 4.8.5 due to issues with that specific GCC version. XLC still works fine. Most likely this will need to be addressed long-term by cleaning up some namespace collisions between our routines and the VSX intrinsics.
- propka: Updated the ProPKA GUI online help URL to point to the VMD plugin documentation page since the Jensen Group plugin page has been offline for some time and their migration to a new web server is still ongoing according to the notes posted at the new propka.org site.
- Added initial orbital kernel for KNL AVX512ER instructions.
- Continued cleanup of the hand-coded intrinsic loops for the QCP inner product calculations, particularly on POWER8 VSX and AVX512.
- Corrected missing AVX512 check in configure script
- Added KNL AVX512F code path for QCP structure alignment
- removed interactive GUI from KNL text build
- mdff: Removed redundant code that was copying the pdb/psf over itself, which fails on windows.
- exectool: Append ".exe" in case of Windows platform if the first iteration of searching for the executable fails in the ::ExecTool::get_path proc
- Updated Colvars docs in the VMD User's Guide.
- Updated to the latest version of the collective variables module.
- qwikmd: Bug fix when setting the env(QWIKMDFOLDER) variable when QwikMD is opened for the first time.
- qwikmd: Correction in the surface area calculation information. The probe sphere radius is 1.4 and not 1.5
- qwikmd: Print analysis information for the human readable lg file
- VMD 1.9.3 beta 3 (October 7, 2016)
- qwikmd: Changes on the warning box when the simulation is executed in the background
- qwikmd: Remove dielectric constant definition from the text log file
- qwikmd: SMD initial distance definition
- qwikmd: Bug Fix for SMD anchor and pulling residues definition PDBs generation
- chirality: Bug Fix to select only one hydrogen of the chiral center, if more than one is defined
- ccp4plugin: Added support for a variety of extended cryo-electron tomography data formats associated with IMOD to the CCP4/MRC density map plugin. The new plugin can handle a much broader range of voxel datatypes, including 1-, 2-, and 4-byte integer voxels and floating point voxels. The plugin also does on-the-fly endianness detection and conversion where applicable. The IMOD FFT phase/amplitude image formats are not yet supported, but they could be added if there ends up being a need for them within VMD or related tools.
- qwikmd: Bug Fix in energy plotting for "easy run" simulations
- qwikmd: Correction for the number of steps in the progress bar
- qwikmd: Correction in the labeling of the progress bar for background simulations
- qwikmd: change wording of the message box when the simulation finished
- qwikmd: Make sure the restraints are not turn off in SMD conf files
- qwikmd: Assume selective load of protocol steps in SMD forces plotting
- qwikmd: unnecessary modification in protocol table for SMD
- qwikmd: Missing information for the log file for SMD protocols in basic run
- qwikmd: Check routine for editions on SMD protocols in Advanced mode, and its extensions Open plots when created
- multiplot: Change the default color of the Canvas background to white. The background can also be changed by the flag -bkgcolor in the command line
- qwikmd: Time analysis series of multiple saving frequency
- qwikmd: Correction of the table name "Select Trajectories"
- qwikmd: Bug fix in the template creation in the advance run
- qwikmd: update namd configuration file comment on the temperature (conversion from C to K 273 instead of 273.15)
- qwikmd: Update the number of steps in the protocol table only if necessary (mod 20) != 0
- qwikmd: Allow multiple Minimization, Annealing and Equilibration steps in Advanced Run
- qwikmd: Delete the initial structure when it is not selected to load
- Migrated the code for generating OptiX GPU enumeration info messages out of VMDApp and into FileRenderList, where we are able to keep track of renderer instantiation progress and print status messages about runtime compilation of shaders. By printing shader compilation status at instantiation, users will be informed about the number of GPUs in use, the number of shaders being compiled, and the associated startup cost will be more clearly associated with OptiX as opposed to things like Tcl plugins that load shortly thereafter. The startup JIT compilation cost tends to be noticably longer on machines with large GPU counts, so the new status messages address that.
- Added NaN-in-bounding-box check to other atom selection helper routines, and updated the comments and error message for the bond determination code since it is okay to have zero volume (planar) molecules, but not to have all atoms at a point. More safety checks will need to be added for the second case.
- qwikmd: Add new protocolos after loading QwikMD input file
- qwikmd: Improvements on saving qwikmd input file without preparing the system
- Allow the OSPRay and OptiX renderers to be supressed during startup if an environment variable is set.
- Added OPENPOWER synonym to the SUMMIT config for the time being. They may diverge later on.
- netcdf: Added support for NetCDF format AMBER restart files and improved diagnostics. Added '.ncrst' filename extension recognition for AMBER NetCDF restart files.
- pdbxplugin: Portability corrections, ensuring consistent use of bool, and misc cleanup.
- Added startup check for user-specified flags for OSPRay to use the optional MPI renderer back-end.
- qwikmd: Bug Fix: RMSD first value 0 after clear the plot
- qwikmd: Ensure compatibility between the qwikmd input files of new versions and VMD 1.9.3b1
- autopsf: Bug fix on user defined patches through command line
- pdbxplugin: Updated pdbxplugin to latest development version which now supports writes, and has been tested for interoperability with various other programs.
- qwikmd: Fix unrecognized characters
- qwikmd: Bug Fix to delete topology+parameter files
- qwikmd: Bug fixes for temperature quench calculation
- qwikmd: Change initial output energy freq in the analysis to 1 Bug fix in the replication of protocols table, temperature value overwritten by pressure
- qwikmd: Bug Fix for membrane generation requiring rotations of the box Add the patch frame Enable change the residues names in the Advance mode. Important for cases where special protein residues are present. Possibility of deleting atoms in "Edit Atoms" window Bug fix in residues renaming process Collapse membrane frame by default
- autopsf: When invoked by QwikMD, use qwikmd_* macros during segment split Bug fix for autopsf use through the GUI. Glycan without segname could not be built using the gui
- VMD 1.9.3 beta 2 (August 12, 2016)
- cranked version for MDFF workshop in Germany
- structurecheck: Big fix on the chirality and cispeptide check. listerror was not initialized when the chirality or cispeptide fails.
- qwikmd: Use qwikmd macro for heteroatoms in the structure check instead of the VMD hetero
- qwikmd: Minor correction on showing and hiding the selection entry of the Structure Manipulation window
- autopsf: Add the comment stating the inability of autopsf to read CONECT info from local pdb files after the proc preformat_pdb. This creates new temp pdb files that not contain CONECT section
- autopsf: apply the same evaluation for bonded non-consecutive residues on proteins residues to nucleic residues
- structurecheck: Add cispeptide check back in. Check for bonds on residues not consecutive but in the same chain/fragment to evaluate if they are bonded or not.
- qwikmd: Renumber residues when loading a PDB to account the several different insertion codes. Add Cispeptide check procs to find the cispeptide bonds not found by torsionplot. Fix a mismatch of Live pressure and volume plotting. New ignore function on the structure check. New rules for warnings.
- qwikmd: Change MDFF tab default values. Set numProcs in MDFF.
- qwikmd: Add dcd load information: catdcd operations, which dcd was loaded and stride info
- qwikmd: Connect QwikMD to MDFFGui Add atomselection entries in protocol, Structure Manipulation, MDFF protocol Bug Fix on Contacting area calculation atom selections Bug fix of open topologies to read Selective load of the output dcd files and stride Add catdcd operations to remove waters, ions or hydrogens
- structurecheck: Structure check sign as yellow outliers and marginal when percentage is above 0
- cranked version
- VMD 1.9.3 beta 1 (July 21, 2016)
- Updated MSVC project settings for new source files in the default build.
- Added default config for 64-bit Linux text+EGL Pbuffer builds.
- Prevent interactive RT engines from being compiled when VMD is compiled without interactive OpenGL support.
- Roll forward to CUDA 7.5 since both Blue Waters and Titan are now also on CUDA 7.5 finally. This means that RHEL 5.x is now too old for the default Linux makefile options.
- Updated OptiX library directories on the Cray XK and XC machines including Blue Waters, Piz Daint, and Titan
- qwikmd: bug fix on a sel deletion out of place
- qwikmd: delete atomselection that were left active unnecessarily. Avoid tablelist celledition and atom representation triggered by the code. Special important for explicit solvent systems. Redo macros when topology added.
- qwikmd: avoid tablelist cell edition triggered by the code itself. CellEdition makes all procs slower. Create representation only when requested by the user and not when loading the structure.
- autopsf: Add quotes to atomselection containing chainIDs to prevent the error generated by the lower case x,y,z
- qwikmd: Edit protocol proc was not checking in the tmpdir
- qwikmd: Load previous edited protocol file (if exists) make sure that multitext can open the protocol file to be edited only locking protocol editing after generating the file to be edited (in case of save as template and template lock variable = 0)
- qwikmd: previous winfo exists command syntax was wrong. bind the main notbook tab event in the end of the GUI construction
- qwikmd: bug fix when trying to disable the pressure and volume radiobutton in the basic analysis according to the solvent bug fix when canceling protocol edition, values were still be changing.
- qwikmd: correct restraints selection in the protocol table
- qwikmd: Account for user defined macros when deleting and adding residues in the Structure Manipulation window
- qwikmd: Water molecules don't have a dedicated macro like qwikmd_protein. Corrected code that was preventing adding and deleting water residues from working properly.
- qwikmd: quotes in atomselection containing chain keyword to account for lower case x,y,z. Fix bug in the creation of the qwikmd lib folder when open for the first time. Change the last "qwikMD" to "QwikMD" render proc clean for unsued variables allow user to type the name of the atoms in the "Edit Atoms" window
- qwikmd: use quotes in the atomselection of chains
- qwikmd: Fix render frame and proc for missing variables. Change the name of structurecheck plugin. Add quotes to atomselection containing chains to account for lowercase x,y or z which are otherwise interpreted as coordinates in a selection
- structurecheck: change the name used by the Tcl package commands to structurecheck instead of strctcheck
- Added new structurecheck plugin required by QwikMD.
- qwikmd: Updated to QwikMD 1.1 and added new source and config files to the build.
- torsionplot: Applied Joao's updates to torsionplot which add a text scripting interface so that it can be used in QwikMD workflows, along with updates to check for Ramachandran outliers and marginals in PDBs without segnames.
- autopsf: Applied Joao's patch to update the list of glycan residues and provide residue sorting functionality required for QwikMD
- chirality: Applied Joao's patch to change the behavior of chirality text commands to return the same information available via the GUI so that it can be used as part of automated workflows such as within QwikMD or other plugins.
- cispeptide: Applied Joao's patch to change the behavior of cispeptide text commands to return the same information available via the GUI so that it can be used as part of automated workflows such as within QwikMD or other plugins.
- membrane: Applied Joao's patch to cause the membrane plugin to load the necessary water and ions topologies for charmm 36
- multitext: Applied Joao's patch to allow QwikMD to call multitext with a flag to wall-in the user so that they cannot change the filename via "save as" when multitext is being driven as part of a workflow. The patch also makes the window resizable and uses ttk for layout rather than legacy pack for now.
- Use OpenACC vector size of 256 which reduces runtime for the 1000x1000 matrix from 12.2 sec down to 3.047 sec, yielding a speedup of 4.0x over the perf achieved solely by compiler heuristics
- Implemented 1-D loop scheme for OpenACC necessary to avoid conflicts with complex loop carried dependencies in the i,j loops
- Misc cleanup, migrated Theobald's solver routine to the end of the file and added OpenACC directive-based variant of the key loops.
- Converted QCP matrix code to use a single array allocation for all frames, making it straightforward to implement host-device copies for GPUs and to simplify NUMA-aware data placement.
- Added ifdefs to protect PGCC from some hand-vectorized x86 intrinsics that cause it some trouble.
- Added basic support for PGI compilers on Linux
- Revised Tcl interface to use a multi-dimensional list structure to avoid max list length limitations with very large RMSD matrices (over 1 billion elements).
- use long ints for linear indexing computations in the multithreaded load balancer and in the dissimilarity matrix, to avoid problems that start to arise around for matrices dimensions of 30,000 or more. The Tcl interface still needs to be adjusted to accomodate similarly large problem sizes.
- Added code path to use hand-vectorized kernels if needed
- Coarsened the RMSD matrix work scheduling granularity to 8 work items per scheduler iteration so that each worker thread operates on 8 consecutive work item indices, which promotes much greater L2/L3 cache performance that is particularly important for modern NUMA hardware. Consecutive work items are generally spatially coherent since they will be neighbors in the triangular matrix until they reach the diagonal or an edge.
- Added multithreaded RMSD matrix implementation
- removed some testing code from the QCP dissimilarity matrix routine
- Implemented the QCP RMSD dissimilarity matrix calculation
- Added measure command for testing of developmental QCP-based RMSD solver
- Added an initial implementation of the Quaternion Characteristic Polynomial method for determining the minimum RMSD and optimal least-squares rotation matrix for a pair of atom selections. Variations of this code will be used for fast trajectory clustering analyses that require computation of very large dissimilarity (distance) matrices for use with Partition Around Medoids, k-medoids, and other clustering methods. Since clustering analyses require dissimilarity (distance) values for all N^2 structure pairs arising fron N MD simulation trajectory frames, the API will evolve to facilitate blocked/tiled computation of the the dissimilarity matrix given one or two atom selections and a range of frames.
- Use only the multiply-add QuickSurf code path for POWER8 VSX
- Added POWER8 VSX implementation for orbital density calculations, from the wavefunction amplitude.
- Added initial hand-vectorized MO kernel for POWER8 VSX machine instructions
- Completed hand-coded QuickSurf density map kernel based on POWER8 VSX vector instructions. This version avoids computing the integral power component using bit shifts and masking and instead uses the vec_expte() intrinsic which has no error for exact integer powers of two. The new code runs 20% faster overall than with xlC's autovectorized loops.
- fftk: added hand tuning of dih parameters
- fftk: documentation updated to include the Save MM Traj. feature
- fftk: fixed an atomselection leak; added ability to keep the MM scan conformations
- fftk: fixed gui sizing issue when console is turned off
- fftk: added buttons to reorder dih scan log files
- fftk: rearranged and updated fftk doc website
- readcharmmtop: added new hybrid topologies from Chris Chipot
- membrane: change default from c27 to c36
- mutator: update to use new Charmm36 topology files
- Applied patch from Robin Betz that corrects the parm7 plugin so that AMBER prmtop files with CHARMM parameters are parsed correctly. The prmtop files contain both comment lines and different format flags than expected by the original code. This patch allows this type of prmtop to be read in correctly.
- fastio: Change the default I/O write strategy on Linux to limit writes to 1GB or less per call, to avoid problems with some kernel versions.
- jsplugin: Emit more debugging information in cases where the Linux kernel returns errors and does not do partial writes
- jsplugin: added more debugging info useful when testing with massive structures
- Corrected PDBx plugin use of inthash
- Upgrade integer indexing math to use long type constants
- Upgrade internal counter types from int to long to allow 2-billion-atom selections and min/max calculations without overflow.
- psfgen: Implement the "rename" function (although maybe it should be "renameAtom") that changes the atom name field in PDB output. Also topo_mol_set_vel() and topo_mol_set_bfactor(), both available in the Tcl interpreter as "vel" and "bfactor", in analogue to "coord".
- Ensure that JS plugin uses long typed constants everywhere that buffer size logic is done.
- Replaced internal indexes with long types so we don't encounter problems with arrays containing billions of atoms
- Promote IntStack internal types to longs so we don't encounter problems past 2 billion items.
- Added typecasts so that format specifiers work correctly with both 32-bit and 64-bit index sizes for various internal data structures.
- Minor refactoring of BaseMolecule to streamline some of the routines involved in the initial structure analysis process after a file is loaded or "mol new atoms" has been called. Changed the code to reuse the same stack data structure across multiple iterative functions that traverse the molecular graph, so that we don't needlessly create and destroy stacks that have memory space for billions of atoms. Similarly revised some code that had been using new[]/memset/delete[] syntax in favor of old school calls to calloc() as that gives a performance boost when the OS has a large number of already-zero-cleared memory pages available for an allocation, and it pushes the clearing operation outside of our process, as something the OS could be doing itself on other CPUs while we're otherwise busy. These and similar optimizations are worth a 10% speed gain for some of the billion atom test cases run recently.
- psfgen: Include line number and content when printing topology file errors.
- psfgen: Support 2 billion atoms.
- namdbinplugin: Support 2 billion atoms, reduce transient memory usage.
- Enable rendering of structures with 2 billion atoms
- Rewrote BaseMolecule::add_atom() to accept a count parameter that allows an arbitrary number of atoms of identical properties to be added consecutively. This provides a tremendous speed boost for the "mol new atoms" case with large atom counts in the billion range, but should not harm normal performance.
- Rewrote the atom/residue type classification loops to achieve much higher performance which is critical when loading structures with atom counts in the billions. Added various early-exit opportunities in the analysis code which are employed in some common cases related to the use of "mol new atoms".
- Updated BaseMolecule::find_subfragments_topologically() and BaseMolecule::find_subfragments_topologically() to allow short-circuit fast paths in the (very unusual) case when none of the NameList typecodes that we're going to search for actually exist. This is a big time saver when doing the "mol reanalyze" step after building a partial structure using "mol new atoms", particularly for hundreds of millions to billions of particles.
- Added code to short-circuit BaseMolecule::find_waters() when we know that none of the residue names VMD looks for exist in the molecule.
- Updated indexing arithmetic to use long typed integral constants so VMD can load systems with 2 billion atoms without trouble.
- Define the MAXATOMBONDS macro as a long integer type so we don't encounter 32-bit integer wraparound for systems with 2 billion atoms.
- Corrections to the Timestep class so VMD can load structures with 2 billion atoms without problems.
- cranked version
- VMD 1.9.3 alpha 8 (Apr 23, 2016)
- QuickSurf: Revised hand-coded AVX2 kernels to exploit _mm256_fmadd_ps() and 8-wide on-the-fly conversion between AOS and SOA texture map representations.
- Migrated the hand-coded SIMD algorithms based on intrinsics and inline assembly out into a new util_simd.C source file to cure namespace conflicts between IBM OpenPOWER / POWER8 VSX compiler built-ins and intrinsics, and the VMD vec_xxx() routines.
- QuickSurf: Added faster x86 SSE4.x and AVX2 code paths that exploit FMADD instructions where applicable, and did some housekeeping on old union type components that are no longer needed.
- QuickSurf: Began rewrite of AVX loop for AVX2 instructions
- Corrected a flaw in the QuickSurf GPU memory management logic for the spatial acceleration grid. The previous code prevented the CUDA version of QuickSurf from running on a huge 200nm diameter minimal cell with a GPU that otherwise contained sufficient physical memory to do it. The new code does the buffer size calculations for the spatial acceleration data structures separately from the others, so that the decomposition of the calculation into multiple slabs doesn't impact the spatial acceleration structure build.
- Added comment about using the POWER8 VSX vec_expte() instruction as a potential alternative to our hand-coded polynomial approximation approach.
- Added draft version of hand-vectorized Power8 VSX density map loop
- dcdplugin: eliminate compiler warning on Power8
- Massive update to pdbxplugin with significant performance updates and rewriting of low-level parsing strategy.
- chirality: turned missing atom check back on which was mistakenly turned off
- Improve startup messages for runs on large supercomputers with nodes containing large CPU counts and memory capacity in the TB range.
- Marching cubes: implemented a correction to the logic to prevent out-of-bounds accesses during voxel occupancy compaction.
- alascanfep: added new alascanfep alanine scanning plugin by Chris Chipot's group.
- vmdlite: correction to vmdlite.tcl to work with new guiProcs
- Fix typo in Linux joystick event I/O ifdef
- Added code to emit messages when first opening Linux event I/O device nodes so it is clear what device node is in use at runtime.
- vmdlite plugin: a new version that makes adding new lessons easier
- Updated launch script comments for 64-bit ARM (aarch64). We may wish to rename the Linux CARMA target to ARMv7 or something more generic since the same build system and binaries work across several generations of 32-bit ARM v7 processors, e.g. CARMA, KAYLA, Jetson TK1.
- Updated VMD startup scripts to handle AppliedMicro X-Gene and Jetson TX1 hosts ARM-64 (aarch64)
- dlpolyplugin: Updated dlpoly plugin with Alin M. Elena's patch to correctly read DLPOLY V4 history files, and to make a distinction between classic DLPOLY files and those produced by DLPOLY V4.
- Added missing #ifdef for Linux event I/O API
- molfile_plugin: Prepare the molfile plugin ABI to accept longer 3-char chain names required by some of the largest PDBx/mmCIF structures in the PDB.
- mdffplugin: changed mol selecter menubutton to ttk
- plyplugin: Misc cleanup and bug fixes for the PLY plugin
- viewchangerender: Updated version number of viewchangerender due to recent bug fix for cases with molecules containing only volumetric data.
- viewchangerender: Updated the ViewChangeRender plugin so that it doesn't try and set to the trajectory frame to -1 if a movie is created when the top molecule is a volumetric dataset that contains no trajectory frames. This can happen when making a movie with a density map loaded in one molecule and an atomic structure loaded in another, with the density map molecule set top at the time the viewpoints are saved and the movie sequence is defined.
- Correctly handle the scenario where streamline particle advection goes out-of-bounds (an atypical scenario) and/or we get a gradient vector of NaNs as the particle position update goes outside the grid or hits a critical point.
- Updated version number of molefacture after applying file closure bug fix.
- molefacture: Applied molefacture_builder file closure fixes from Maxim Belkin.
- Added initial support for use of the Linux input device event API to combine joystick control of the camera position in combination with an HMD.
- Updated EGL-related context creation source comments regarding stereo, and improved a few tests. Removed the old hard-coded framebuffer config.
- Made EGL context creation code more robust and added loop-based framebuffer configuration tests to achieve the best combination of MSAA sample depth, depth-buffer precision, and stencil buffer support. The EGL API doesn't currently seem to support quad-buffered stereo, so all of the tests and optimizations for handling stereo have been omitted in the current EGL implementation.
- Use conditional compilation for OSPRay cylinder code until last bugs are dealt with.
- Added LIBPNG configuration flag to enable saving to PNG files, which becomes valuable when rendering images/movies at 8K resolution where formats such as Targa or PPM would be 100MB per frame.
- Imported correction to make the cylinder code work with the existing revs of ospray
- Added a number of fixes for Intel C++ linkage and runtime dispatch needed by later revs of libospray
- minor corrections for LIBOSPRAY config flag
- Updated VMD PNG image I/O code with small portability fix from Tachyon, and normalized the conditional compilation macros so it can be enabled in the configure script.
- psfgen: Updated psfgen Makefile so it emits console output during the build like it should have been all along.
- Report system memory in units of whole GB rather than MB when the host contains more than 8GB of memory.
- Round GPU physical memory capacity we report when reporting in units of whole GB.
- Added plugin compilation rules that recognize builds done on Amazon EC2 compute nodes.
- Added template paths and linkage for MPICH, OpenMPI, and MVAPICH into the default configure script.
- More XLC compiler flag tweaks for ORNL 'crest' Power8 box
- Improved compilation flags for GCC builds on IBM Power8 machines.
- Updated the configuration for the ORNL Summit test systems to use xlC with opt flags for Power8 for the time being.
- Added Summit to the distrib scripts
- Added PowerPC64LE platforms to the VMD startup scripts in support of the ORNL 'crest' Summit precursor machine
- Updated VMD builds to support testing on the ORNL 'crest' machine
- Improve multi-GPU EGL console messages for parallel rendering runs
- Improved compilation of the VMD EGL-based OpenGL code on systems without X11
- Added additional compile-time EGL extension header version checks so the code can still be compiled with older headers.
- Revised the EGL context creation logic to accomodate multi-GPU nodes and MPI-based VMD runs. The new context creation logic uses round-robin GPU device assignment based on the MPI node rank.
- psfgen; Increase version to 1.6.4.
- psfgen: Fix bugs in topo_mol_del_cmap(), which is used to delete crossterms.
- psfgen: Patch from Andrey Alekseenko to support explicit exclusions, which are needed for CHARMM19 force field.
- Corrected handling of volumetric data loading when we have a NULL pointer for read_volumetric_data_ex() in ABI 17+
- Updated to the latest EGL headers
- Hacked EGL window creation to begin testing multisample antialiasing.
- The EGL code path has been tested with a few different driver versions. With 358.16 the current code works. With the current 361.x series, various things go wrong, but those may likely be driver issues.
- Improved GLSL shader compilation logging when verbose flag is set, to help sort out weird issues with beta EGL drivers
- Moved HMD warp destruction into compile-time ifdef block so it doesn't get compiled-in when we're building a non-interactive build, e.g. with the EGL Pbuffer/FBO rendering mode.
- cranked version
- VMD 1.9.3 alpha 7 (Jan 21, 2016)
- fftk: fixed a typo
- fftk: fixed error in target data during multiple runs; commented old line as a reminder
- psfgen: Fix buffer overflow segfault on long topology file path in psf file.
- Updated the configure script to support EGL-based OpenGL Pbuffer without any dependencies on X11 or other windowing systems. This allows VMD to be compiled for HPC machines that don't have an X11 server, but retains OpenGL rendering capability. The EGL-based VMD has to link against the vendor-neutral OpenGL dispatch form of the OpenGL library (libOpenGL.so rather than libGL.so) and extensions are dealt with a bit differently. The compute nodes must have OpenGL drivers installed, but there is no need for X11 or other windowing system components to be on the compute nodes. Up to now, the EGL code has been tested with NVIDIA driver version 358.13 on 64-bit Linux without an X11 server running. In principle, the same functionality should/could in principle be available on other non-Linux OSes and potentially with OpenGL libs from other vendors, but I'm not presently aware of any other available implementations.
- Updated OpenGL-related ifdefs to enable EGL-based OpenGL Pbuffer rendering without an X server for HPC systems.
- fftk: comment out debugging puts statements, reincorporate topotools line
- fftk: fixed error cleaning up variables associated with impropers; identified an error in topotools
- fftk: turn gui event log off by default to help people with limited vertical resolutions
- fftk: updated accept/cancel symbols to work on linux
- Added environment variable check to allow inversion of SpaceNavigator inputs for "flying", e.g. with an HMD, instead of manipulating the atomic structure.
- Corrected query of VCA configurations when multiple configs are available. Added code to allow the user to specify which VCA config to use at runtime via the VMDOPTIXVCACONFIG environment variable. Added support for runtime initialization of the user-defined HMD distortion correction coefficient set with user-provided values assigned via the VMDOPTIXHMDUSERWARPCOEFF environment variable. The coefficients are loaded in sets of 5, with one coefficient for each term in the r^0 + r^1 + r^2 + r^3 + r^4 lens distortion correction equation. Normally we would only set values for the even powers of r since these are the only powers required by optical physics, but this method allows us to accept coefficient sets that work with other programs too.
- Implemented interactive RT Spacenavigator scaling mode and corrected a typo that was in the prototype.
- autopsf: Applied Joao's fix to the behavior of the 'regenall' flag by correctly initializing it to 1.
- autopsf: Joao and Tristan's autopsf bug fixes and improvements related to recent updates needed for qwikmd. Added DNA residue names to be recognized and patched correctly.
- Added code to allow user-override of animation interpolant scaling factors
- Added comments about the need to match GCC 4.9.3 w/ CUDA 7.0 on the current Cray XK/XC machines, and added an example module swap command to prevent default Cray GCC 5.x compilers from being used by accident.
- Updated default CUDA toolkit versions for Cray XK and Cray XC machines, and added the new CUDA 7.0 toolkit paths in test for Titan and Blue Waters
- fftk: changed charge group guessing routine to explicitly load molecule rather than assume TOP, which resulted in segfaults with bad input
- fftk: document the ability to use additional arguments for controling graphic objects
- fftk: changed atom match method for processing CGenFF Program data from name to atomic order
- qwikmd: more bug fixes from Joao.
- autopsf: Applied corrections to handling of temporary molecules and log files that were creating difficulties in the qwikmd plugin. Latest rev includes corrections from Tristan Croll and Joao Ribeiro.
- qwikmd: applied Joao's latest qwikmd updates and bug fixes following the Odense workshop.
- Cranked plugin ABI version to 17 since early tests of the new volumetric loader APIs is looking good so far.
- Reimplemented the sphere array primitives using the color-per-sphere primitives in the latest dev branch of ospray. This closes one of the big holes in the renderer implementation, though much cleanup still needs to be done.
- Call __saturatef() to clamp the computation of edge outlines so that minor numerical imprecision can't cause negative values or similar issues. This prevents a visible artifact from showing up when rendering spheres with high res images and large sample counts, where a dot can sometimes show up on the sphere and for some reason it can create a NaN or some similarly damaging value that appears to poison the accumulation buffer. Oddly, this has never been observed w/ OpenGL GLSL, nor in the original Tachyon implementation, nor with prior revs of OptiX, so it may be a minor compiler behavior issue. A little more digging may turn up a more satisfactory solution than this one, but it does appear to make the problem go away in the short term.
- Updated the VTK plugin so it reads both volume data stored using either FIELD or VECTORS formatting. At present it only reads vector fields and not scalar fields, and it ignores any grids other than the first, but we can gradually add to the implementation so it will parse VTK files containing multiple datasets, a wider variety of formats, and ideally both ASCII and BINARY format files.
- Fixed a bug in live movie recording frame symlink index tracking.
- plumed: Updated the VMD plumed plugin with the latest version 2.5 from Toni Giorgino. The new version also includes an experimental GUI for use with the VMD colvars module, which can be enabled at runtime by setting the environment variable PLUMED_GUI_EXPERIMENTAL
- Emit redraw events for state changes and query operations that would otherwise halt progressive rendering, when the 'A' key (animation) and 'h' key (help) are pressed.
- Use an anim_interp sentinel value of -1 to indicate that animation is disabled, and field lines are shown without any animation.
- Added short-term field line animation hack for use in demos until we're able to run on Titan/BW with no holds barred.
- Removed old ifdef blocks that are no longer needed. It's probably time to start thinking about removing support for GPUs older than Fermi so we can simplify the code.
- Added short-term hacks to allow streamline trace sphere animation for use in interactive RT. Disabled by conditional compilation by default.
- Implemented the AO direct scaling factor by multiplying the scaling factor into the light colors before they are (re)defined to the OSPRay renderer.
- Continued implementing features that required the new OSPRay uber-renderer.
- Added field lines mode that renders only spheres/particles without the connecting cylinders.
- Added in a performance workaround for the field lines rep when rendered via interactive ray tracing engines that don't implement single spheres very efficiently.
- Updated CUDA compiler and linkage paths for system software on ORNL titan.
- Added environment variable-controlled user-defined scaling factor for VTK volumetric datasets. This provides an easy mechanism of scaling the magnitudes of scalar or gradient voxel data during loading.
- Corrected high-precision max value string printing for volumetric data sets.
- timeline: added user selectable grid spacing option
- Corrected memory deallocation for volumetric data sets and new ABI
- corrected allocation type for rgb3u volume texture
- changed basemolecule add_volume_xxx() param names for clarity.
- Updated the ABI 17+ code to use the new read_volumetric_data_ex() plugin functions.
- vtkplugin: updated VTK data description text
- Added variance map pointer and corrected the type of the rgb3u image type.
- Added initial implementation of support for the new volumetric data loading routines for plugin ABI versions 17+.
- Added parameters to BaseMolecule::add_volume_data() to support new VMD plugins that can read volumetric fields composed of combinations of scalar, gradient, variance, and various color/texture data formats.
- Added new VolumetricData::set_volume_gradient() method to support plugins that are capable of loading either or both of scalar and gradient volumetric maps, etc.
- ensure volumetric data metadata is cleared to zero
- Started refactoring the MolFilePlugin code to prepare for supporting the new read_volumetric_data_ex() interfaces added as part of plugin ABI version 17.
- Added alternative console output approach for higher precision reporting of min/max/range data for volumetric datasets.
- Added vtkplugin to the build
- Fixed missing declaration of plugin registration block. It appears that the inclusion of the conio header can cause this type of error to persist silently.
- vtkplugin: First draft version of VTK grid data reader plugin structured similarly to the OpenDX reader. The VTK plugin supports the new extended volumetric data reading interfaces first added in ABI version 17
- Updated the Gromacs plugins to the modern method of initializing the molfile_plugin_t function pointer table. By using memset() and explicitly writing the assignments for each function pointer, there's much less chance for problems when the ABI is changed and the number or order of items in the function pointer is changed.
- Updated molfile plugin interface with new volumetric data read/write parameter structs, and callback functions. The new design will allow plugins to read not only scalar volume data but also gradient maps, texture maps, variance maps, and other related information.
- Since the shipping VMD releases have been at plugin ABI version 16 for over four years, it is time to completely flatten all of the old #ifdef blocks related to previous molfile plugin ABI updates. This will greatly reduce confusion for developers of new plugins that read the headers for documentation. By eliminating the old ifdefs, I can begin with a new round of revisions to interfaces that are being extended for VMD 1.9.3+.
- Cranked version
- VMD 1.9.3 alpha 6 (Oct 12, 2015)
- Enable linking psfgen module statically in NAMD.
- psfgen: Increase version to 1.6.3 due to new features.
- psfgen: Add new command "topology alias" to provide alternate (e.g., shorter) residue names that are used in output files, unlike "pdbalias residue" that only translates residue names on input during segment-building. Add binary coordinate option to coordpdb and binary velocity options to readpsf and writenamdbin.
- qwikmd: Updated qwikmd GUI code w/ Joao's corrections for handling of filename extensions etc.
- Updated comments on NVENC hardware encoder initialization strategy
- Added placeholder initialization for NVENC video streaming. This should likely be migrated a little farther down in the code. NVENC requires a special "floating" CUDA context for successful initialization, so it makes the most sense to put this somewhere following the main VMD CUDA initialization sequence. It may be desirable to relocate the video streaming initialization after OpenGL initialization has completed so that we have access to window handles and OpenGL context info at the point where video streaming is setup. At present, there don't appear to be any special APIs for OpenGL interop w/ NVENC, which likely indicates that we may need to use the NVIDIA IFR library for best performance when streaming OpenGL. For the purpose of streaming ray traced images, NVENC-CUDA interop is supported and inherent since NVENC depends on CUDA. The only special step required there is during NVENC input buffer allocation. The remaining question is whether or not we will need three-way-interop to build a fully performant OptiX-CUDA-NVENC pipeline when rendering high resolution images.
- Added NVENC configuration build config flag to allow the use of entirely-VMD-internal GPU hardware-accelerated H.264/H.265 video streaming for remote visualization.
- Initial class to encapsulate details of GPU-hardware-accelerated H.264 and HEVC (H.265) video encoding using the NVENC library.
- psfgen: Add new command "topology alias" to provide alternate (e.g., shorter) residue names that are used in output files, unlike "pdbalias residue" that only translates residue names on input during segment-building.
- Corrected conditional compilation tests for HMD-specific distortion correction code in the OptiX RT code.
- Updated the interactive HMD lens distortion adjustment UI to allow switching between hard-coded and user-defined lens distortion correction coefficient sets, and to allow editing of coefficient sets with larger numbers of radial terms. Revised the low-level lens distortion correction code to include 5 radial terms and to add initial approximate distortion correction coefficients for use with the custom DK2 lens design by Sun et al. w/ Lens Factory.
- Added qwikmd to the build
- Added qwikmd plugin
- Added tablelist to the build
- Added tablelist Tk widget as a VMD plugin
- Fixed r^6 term in the code for handling user-defined HMD distortion correction coefficients.
- Added basic sample count arithmetic in the short term until there is a full-featured renderer implementation that will support arbitrary AA/AO sample counts.
- Implemented several triangle mesh formats with basic material implementation, greatly reducing the utilization of fall-back code paths. Still need to free allocations upon context destruction.
- qmtool: added Hessian scaling factor for BP86 method
- Updated the HMD management code for changes in the HMD distortion correction APIs that allow the use of caller-provided HMD lens distortion correction coefficients, etc. Added new key controls in the interactive RT interface to allow interactive adjustment of the two major HMD distortion coefficients.
- Minor improvement to HMD distortion constants for properly-fullscreened windows with no border pixels and without interference from window manager docks and similar. Very slight improvement to the chromatic aberration constant for the blue channel.
- Improved handling of fullscreen mode switching for HMDs, changed default startup behavior to automatically use fullscreen when an HMD is in use.
- Updated glwin routines from Tachyon, with improved fullscreen mode switching and various cleanup to eliminate C++ style comments etc.
- Changed the material code so the headlight works when the reduced table size workaround is enabled.
- Updated HMD warping routines with resize handling.
- print window size and add HMD window resize handling for the warp corrections.
- Added code to query remote VCA cluster to determine the number of nodes and GPUs in the obtained reservation. The results of the query are printed upon completion of the reservation.
- Pulled in changes from Louis Feng that incorporate multiple directional lights, and began implementation of basic material properties.
- Implemented a hack for AO rendering inside large enclosed spaces wherein the user can set a maximum occlusion distance for the AO shadow rays that's less than RT_DEFAULT_MAX, thereby ignoring occluding geometry farther away than the user-specified distance.
- Removed buffer swaps from HMD spheremap display and image warping routines and and made this the caller's responsibility. This allows drawing to the front buffer if desirable, and most importantly it prevents unintentional buffer swaps when they should be avoided, making them explicit to the caller. For the case of HMDs is clearly most desirable since they have a potentially profound performance impact.
- Updated the HMD FBO warped rendering routine to correctly reset the OpenGL texturing state so that the caching and interleaved update modes work in the interactive RT loops.
- Updated the HMD FBO warped rendering routine to correctly reset the OpenGL texturing state so that the caching and interleaved update modes work in the interactive RT loops.
- Improved the default chromatic aberration correction coefficients for the Oculus DK2 HMD. Fixed the mesh line drawing code which was using the red channel X-coordinates on the blue and green channels too. With the line drawing code correct, I was able to fine-tune the default coefficients so that the Oculus DK2 image quality is primarily limited by off-axis coma or spherical aberration leading to blurring.
- Pulled in Tachyon HMD chromatic aberration correction and added controls to the interactive RT loop.
- Implemented runtime mode switch for HMD lens distortion correction code, enabling it to be enabled/disabled at runtime, along with a mode to draw the distortion mesh as lines superimposed over the image. Corrected an old piece of code that was using a hard-coded division count when drawing the lens distortion mesh itself.
- Updated the interactive RT loops to use the new mesh-based HMD multi-pass FBO lens distortion correction implementation.
- Pulled in newest glwin code from Tachyon, with some new APIs that streamline FBO-based HMD lens distortion corrections using a very general mesh-based distortion that avoids the need for a GLSL pixel shader.
- Flip Y-axis for HMD FBO draw code.
- Pulled in latest Tachyon HMD FBO draw code w/ new mesh-based distortion correction implementation.
- Changed the default spheremap projection surface tessellation resolution from 25 to 72. At a resolution of 25 divisions on the lat/long axes, there is some visible texture interpolation error at the two poles of the sphere, and when wearing an HMD, there is also some lateral shift error visible when panning the head up and down, likely also due to texture interpolation behaviour with some video drivers. Increasing the geometric resolution to 50 divisions on each axis makes both of these artifacts vanish, and has a completely negligible impact on OpenGL HMD draw rates. With the expectation of HMDs with 2560x1440 or 3840x2160 resolution arriving in just a few months, and working with the assumption that an even finer geometric tessellation will improve things further, we set the default resolution to 72 divisions on both the latitudinal and longitudal axes.
- A round of new code and corrections that enable runtime toggle of shadows, directional light orientation transformations, and window aspect ratio updates for OSPRay. Runtime toggle of shadows doesn't work with the AO renderers since they appear to be hard-coded.
- Added runtime control of HMD panoramic texture caching vs. a forced output buffer map/tex upload/draw/unmap sequence for every frame. The impact of this mode is independent of the HMD interleaved update/drawing mode.
- Added a flag to HMDMgr::quat_get_rot() to specify that the HMD pose should be updated. This results in simpler client code.
- Added code and controls to enable/disable interleaving of HMD updates and draw calls between individual steps required for updating the panoramic texture map with the most recently received OptiX subframe.
- Pulled in Tachyon glwin code after various FBO handling corrections.
- Updated VMD using the latest glwin code from Tachyon, with improved optimality and function naming for the spheremap rendering functions.
- Switched the VR HMD display loop to use the new glwin spheremap APIs for better performance.
- Updated the glwin code from Tachyon, so that the OptiX VR HMD renderer can use the newly improved spheremap rendering code. The new code enables drawing of both the left and right eye spheres using a single texture, and this enables streamlining of the inner loop by allowing elimination of texture uploads except when OptiX has a new frame ready. The new code also splits out some minor OpenGL state setting operations from the inner HMD display loop.
- Added new interactive RT controls to force the AA/AO sample strategy to favor AA samples which is beneficial for the VR HMD displays while flying, where it is desirable that the first displayed subframe is antialiased a bit better. Improved the VCA remote device connection sequence so that if a previous session terminated abnormally leaving a cluster running, the next attempt to connect will discover this during the first connection attempt, and it will then cancel and restart the connection, which (in OptiX 3.8.0 at least) causes the hung VCA reservation left from the previous run to be destroyed and the new connection is properly established.
- Corrected the any_hit_clip_sphere() program so that the clipping sphere can be enabled and disabled at runtime.
- Added new clipview start/end variables to the OptiX renderer and the associated shading code. Refactored the fade+clip logic into a self-contained device function that can be used both in closest-hit programs as well as any-hit programs. Added code to override the default selection of approrpriate any-hit programs when clipping is otherwise enabled. Added several device functions that may be useful for further improvements in clip performance, and to support both planes and spheres.
- Added a complete first implementation of the plumbing to allow runtime enable/disable of a VR HMD fade+clipping plane/sphere. The initial code still has some hard-coded constants in it that need to be user editable, and the shading implementation is still simplistic and doesn't knock out occluders that fall within the sphere yet, but it basically works. To prevent performance loss when the feature is not required, I increased the combinatorial expansion of templated shading routines from 2^7 to 2^8. While wiring up the clipping sphere code, I also added the necessary control logic for the previously-added VR HMD "headlight" so it can be easily enabled/disabled also. Since both of these features require selection of the proper shader during material assignment, the user would have to begin rendering with them initially enabled. They can be toggled on and off from that point on in an interactive visualization, but if they are off at the outset, the shader combination selected will ignore the runtime toggle. It might be desirable to auto-enable these features when doing interactive RT in combination with the HMD, or in general if users find them compelling in more general cases than just the VR HMD.
- Re-enabled the use of VMDOPTIXDEVICEMASK to control which GPUs are used for multi-GPU rendering. This is important if using RT in combination with high frame rate OpenGL for HMD displays.
- Added interactive RT flags for OSPRay-enabled build and fixed the code to prevent double compilation/linkage against glwin if both OptiX and OSPRay are compiled into the same binary.
- Began adding infrastructure to support the new clipping plane/sphere feature in particular for VR displays
- removed old test code from the VCA remote cluster reservation mechanism.
- Removed the old memory inefficient implementation of trimesh_c4u_n3b_v3f() since the new implementation has been solid for some time now.
- Added debugging hooks until the kinks are worked out.
- Added ospInit() static initialization method to be called just once within FileRenderList. Added in camera, rendering, and framebuffer I/O from the previous prototype code.
- replaced uses of clamp() with __saturatef() which should be faster.
- Eliminated compiler warnings from the EGL Pbuffer rendering code by improving the conditional compilation code path.
- hard-coded the initialization of the final longitude in the the sphere tessellation to eliminate compiler warning about potentially uninitialized data.
- More tweaks to the clipping sphere implementation for panoramic RT
- Added runtime query for vertical retrace sync in the HMD display code.
- Corrected missing call to OSPRayRenderer() constructor.
- Prevent the "/" character from acting as a menu separator in the rendering dialog.
- Added a skeletal OSPRay renderer implementation to be filled in from the previous prototype.
- Added timing instrumentation for the free-running HMD code
- More of the prototype imported into the real code
- Pulled in the latest glwin code from Tachyon. The new rev adds a bunch of extensions needed for HMD rendering and new queries for vertical retrace sync and other details of importance for high frame rate HMD display.
- Added draft implementation of a fade-out-and-clip sphere for panoramic VR visualizations.
- Tweaks to default fov for Oculus DK2
- Added compile-time macro test to enable VCA streaming in combination with high-frame rate HMD display.
- Added a VR HMD "headlight" that is locked to the camera (head) position no matter what else changes. Added support for positional lights, and renamed all of the directional light data structures for clarity. Positional lighting is commented out in the shader for now until we really need it for something. To prevent taking a performance hit for the new VR/HMD headlight, it is implemented via tests on a compile-time C++ template parameter, and the explicit instantiation of 2^6 shader parameter combinations has therefore been increased to 2^7. It is probably time to start using a more sophisticated scheme for generating the shader macros since we will likely want to use compile-time expansion for positional lights, 3-D texture mapping, and a few other things that aren't yet in the mainstream OptiX code.
- Cranked version
- VMD 1.9.3 alpha 5 (August 22, 2015)
- Added src files, build flag and basic dependencies for the Intel OSPRay library.
- Pulled in Tachyon glwin spheremap code with support for an optional caller-provided HMD head post quaternion used to transform the GL display appropriately.
- Added fov, radius, and resolution parms to the glwin HMD spheremap renderer
- Added runtime check for VMDOPTIXIMAGESIZE override to make it much more convenient to use independent display window size and spheremap texture sizes when rendering to equirectangular projections and displaying in HMDs such as the Oculus Rift
- Improved logic for launching spheremap GL renderer so that when an HMD viewer is connected and we're in a panoramic format, we use an immersive viewer rather than the normal windowed display.
- Added info messages for framebuffer resizes when debugging is enabled.
- Pulled in latest glwin spheremap display code from Tachyon
- Replaced previous internal GL drawing code for much more generic glwin versions.
- Imported the latest rev of glwin from the Tachyon tree.
- Finished refactoring of the image I/O routines and corrected a missing buffer unmap call in the previous rev.
- Started pulling several rgb4u and rgb4f image conversion helper routines and associated image I/O functions out of the OptiX renderer and migrated them into ImageIO where they can be used by all renderers with the same framebuffer memory organization. Updated all of the image I/O routines to improve const-correctness. I'll have to check if I've already done this in the original Tachyon code they were borrowed from or not.
- Updated OpenGL stereo spheremap renderer
- misc cleanup of 'vcarunning' state handling
- eliminate duplicative parts of image I/O code
- Added new variant of the image I/O code since the progressive API no longer allows any set/get calls during rendering, or it halts and must be restarted.
- allow projection mode routine to override the incoming parameter.
- Improve error handling when using a remote VCA cluster in cases where we don't find a config string that matches what we expect.
- Allow the projection determination code to override the incoming parameter if magic env vars are set.
- Applied seqdata patch from Jonathan Lai to adapt the code to correctly parse the latest speclist.txt metadata from Uniprot/Swissprot servers
- Fixed spheremap texture wrap mode so that interpolation wraps in longitude as it should. Corrected the texture coordinate generation so that longitude east/west are correctly oriented when drawn from inside the sphere in OpenGL. The next step will be to separate the window size from the RT texture rendering resolutions so that we can run the RT at much higher resolution than the interactive GL projection, which is the desired scenario when rendering for Oculus Rift and similar HMDs.
- Fixed the vmd_Project() (glu_Project() replacement) routine so that it works correctly for orthographic projections as well as for perspective.
- Ongoing refinement to spheremap rendering code.
- Further completion of spheremap renderer for Oculus Rift and other HMDs
- Added rough draft texture mapped sphere gen code needed for display of stereoscopic spheremaps w/ Oculus Rift and other HMDs
- Added a texture-mapped display routine for the interactive OptiX renderer, in prep for the spheremap/cubemap display modes for the Oculus Rift
- Added "EGLPBUFFER" configuration option to allow the use of EGL for OpenGL Pbuffer off-screen rendering, thereby enabling fully hardware accelerated graphics without the need for a windowing system. The current GPU driver implementation is incomplete, but the VMD initialization code is largely finished and should work fine once the OpenGL driver software is a little further along.
- Revised the EGL and GLX Pbuffer implementations so they coexist better and got the EGL initialization code to the point that it mostly works, at least up to the limits of the current alpha-stage EGL device driver implementation.
- Adapted the existing GLX-based OpenGL Pbuffer class to begin adding support for EGL-based Pbuffer handling. This will eventually allow VMD to create OpenGL Pbuffer off-screen rendering contexts on machines (such as supercomputers) that are not running a windowing system at all. The new EGL code is adapted from the latest revs of the Tachyon/xvs glwin code.
- fftk: updated genzmat procs to use atomselections that are explicitly deleted
- Corrected compilation of the OptiXShaders PTX assembly so that it respects important macros passed in at compile time, such as the flags for HMD-enabled builds for Oculus Rift, and similar.
- Removed old OptiX framebuffer creation code.
- Corrected the specialized version of the OptiX sample jitter code when rendering on Oculus Rift.
- Cranked version
- VMD 1.9.3 alpha 4 (July 10, 2015)
- Prevent use of the progressive API when we've got an HMD-enabled VMD build, since there's still an unresolved performance anomaly with the progressive API.
- Corrected stale background gradient state when running with a persistent OptiX context.
- Removed the original inlined lighting implementation, modularized the code and pushed it off into a the shade_light() inlined GPU device function, which is then easier to use both for positional and for directional light sources.
- Wrote first draft of positional lights implementation required when rendering for the Oculus Rift HMD, planetarium dome masters, equirectangular panoramic images, and other immersive display modes where the camera may find its way deep into a molecular structure where none of the directional lights (which are infinity) would penetrate.
- Misc cleanup of the HMD math currently used for the Oculus Rift in combination with the OpenHMD framework and the OptiX interactive ray tracer. The new code corrects the use of the HMD head pose quaternion to transform the RT camera basis vectors so that the head pose is applied relative to the global camera pose for the molecule(s). This corrects the HMD orientation behavior when the molecular view is rotated with the mouse or a SpaceNavigator. The performance observed in testing with the Oculus DK2 seems acceptable now.
- Prevent the Oculus Rift ray gen code from jittering the first sample, since this improves the quality of rendering under the most common scenario (for an HMD display) of rendering only one sample per pixel to yield lowest rendering latency.
- Changed the OptiX code to use a runtime check to determine whether to use an HMD or not if the underlying VMD code has been compiled with HMD support of some kind.
- Added the head mounted display VR headset code to the configure script, with the prototype implementation using OpenHMD
- Added the HMD manager class to the build.
- Took out hard-coded OpenHMD definition so we can always compile VMD with the HMDMgr class in the configure script, and only the macro definition will get enabled/disabled.
- Added an HMD interface class and an iniitial largely-working Oculus Rift HMD implementation to the VMD interactive ray tracing code. While RT will likely not be the main focus of HMD use in VMD, it is by far the easiest point in the code to add support for it at the moment since it doesn't interfere with the existing design much. The latest Oculus Rift developer SDK has eliminated support for client-side lens distortion correction in favor of an SDK-internal implementation, but that version of the SDK doesn't run on Linux or MacOS X. Since we might ultimately want to support HMDs besides the Oculus Rift, having at least a basic implementation of lens distortion correction in VMD itself seems prudent, and we can always disable it when using an SDK that does it internally. The Oculus Rift lens pincushion distortion correction (adding barrel distortion) was trivial to implement in the OptiX ray gen program, and avoids the need for a second pass distortion/warping OptiX ray gen program, or OpenGL fragment shader. The current VMD HMD implementation doesn't perform chromatic aberration correction yet. Although the lens distortion correction is best implemented in the OptiX ray gen program, chromatic aberration correction is not, since it is a wavelength dependent distortion. It seems that the best way of adding chromatic aberration correction for an interactive RT implementation is to perform the required per-channel image scaling/warping in a second pass, either using a special purpose OptiX ray gen program, a special CUDA kernel, or in the display code using an OpenGL fragment shader. Since we will ultimately have a complete OpenGL implementation, doing chromatic aberration correction during display in an OpenGL fragment shader seems most logical.
- Swapped left/right eye viewports for the equirectangular rendering mode since the GearVR OTOY ORBX movie player expects left eye on top.
- Corrected typo in the NanoShaper "Grid_perfil" parameter.
- Wrote a first draft of Oculus Rift ray gen program that incorporates the required barrel distortion. The current implementation doesn't discard rays that would have fallen outside the FoV of the original view frustum like most OpenGL implementations do, since they use a two pass rendering scheme that warps the original image via texture mapping in the second pass.
- Draft implementation of stereo for dome master projection mode. Updated stereo comments for equirectangular projection.
- Implemented stereo for equirectangular projections.
- Updated comments in the cubemap raygen code, and misc cleanup.
- Began simplifying the code to reverse the coordinate system orientations for outside-vs-inside for cubemap rendering.
- Cranked version
- VMD 1.9.3 alpha 3 (June 22, 2015)
- Improved the quality of the cubemap stereo projection significantly. Still need to add in modulation of the eye separation by the spherical latitude, so that we gracefully degrade to a non-stereo image at the zenith and at nadir of the sphere containing the stereo cubemap.
- Started reformulating and refactoring the cubemap stereo projection code since we have to compute the left/right eye seperation offsets uniquely for each pixel on each cube face rather than once for the entire face.
- Allow an environment variable override to force stereo rendering in OptiX.
- Corrected top and bottom faces of cubemap projection ray gen program
- Lock the cubemap projection to a 90-degree field-of-view per face so that the corners of each face line up perfectly.
- Flip all of the cubemap images so that the X-axis is reversed. The images are stored as they would be when viewing the cubemap faces from the outside rather than the inside, so the left/right ordering of pixels are reversed from the ordering used inside the ray tracing code which shoots rays from the eye/origin inside the cube.
- Added new VR cubemap camera that renders all six faces of a cubemap (all 12 faces for a stereoscopic cubemap) simultaneously in a single launch. This all-faces-at-once approach provides the OptiX runtime with the greatest opportunity for multi-GPU acceleration and efficient load balancing in both batch and interactive renderings. This approach is particularly well suited for multi-GPU clusters such as the VCA and for remote visualization.
- mdff: fixed average maps bug where the wrong filenames were being put into the .dat file
- Moved all of the logic for setting the color accumulation ray generation programs into a single method since it had gotten quite complicated after the implementation of depth-of-field for the special spherical camera modes.
- Added the first implementation of depth-of-field for the dome master and equirectangular projections which have partial, or full spherical fields of view. Spherical projections require special handling since the VMD camera basis vectors can't be used in the stochastic sampling arithmetic for the circle of confusion. Instead, we have to compute per-sample up and right unit vectors along with the updated ray direction unit vector. The initial implementation can almost certainly be made more performant, but it appears to work as expected in testing in an interactive 2-D window. More testing is needed to check in a real VR headset and/or a dome.
- Replaced separate sinf()/cosf() calls with a single sincosf() call in the planetarium dome master camera code.
- Eliminated a stray call to the double-precision cos() routine in the dome master ray gen program, in favor of single-precision.
- continued evolving dof implementation in prep for dome/equirectangular projections
- Started rewriting the depth-of-field implementations using a common function to make it easier to implement in the dome master and equirectangular ray gen programs, and to reduce/eliminate duplication of code.
- Implemented depth-of-field for orthographic projection mode.
- torsionplot: added hooks for autoimd, so now user has option between imd and imdff like cispeptide and chirality
- Added another lerp() implementation that should be faster in some cases
- Fixed a bug where sequences longer that 32,000 residues weren't being handled properly. A fixed size array was being used to store return data. This has been fixed to grow when needed.
- Redesigned the NanoShaper GUI and associated interfaces to enable user customization of not only SES probe radius, but also skin surface and blob surface parameters.
- Changed NanoShaper GUI so the probe radius control is only activated when SES surface type is selected.
- Updated the NanoShaper interface per suggestions from Sergio Decherchi
- Rewrote NanoShaper interface to exploit the new Root_FileName keyword used to specify the same filename base for all output files.
- mdff: new mdff setup options and updated guin images
- mdff: updated doc text. fixed loading settings bug with xmdff mask turned on.
- Updated OptiX VCA version string that VMD currently looks for when attaching to a remote device.
- Updated the OptiXRenderer #ifdef blocks to enable the Trbvh builder on OptiX 3.8.0 but not 3.7.0 due to known bugs that affected VMD in that rev.
- Make NanoShaper reps honor atom selection object
- Emit info messages for NanoShaper triangle/vertex counts. Enable deletion of NanoShaper temp files.
- Completed first running implementation of the new NanoShaper surface representation
- lammpsplugin: Applied Axel's fix to the LAMMPS plugin, which replaces the quicksort based index sorting with a mergesort. This avoids the worst-case O(N^2) quicksort performance pitfall that arises when it is presented with an already-sorted list, with the usual pivot selection algorithm. This was causing abysmal load times for LAMMPS files that happened to have particles in already-sorted order, as reported by Luca Gelisio. Aside from mergesort, we could conceivably have rewritten the quicksort implementation to use a different pivot selection scheme which should also be a viable solution if we decide we don't like having the extra memory allocation required for the mergesort working buffer.
- mdff: fixed another bug when loading xMDFF maps if doing multiple successive runs and deleted previous map
- mdff: fixed nested loop variable in xmdff code
- Added first version of NanoShaper graphical interfaces
- Cranked version
- VMD 1.9.3 alpha 2 (May 28, 2015)
- Implemented draft version of OptiX equirectangular camera for VR viewers such as Oculus Rift
- Added NanoShaper interface to the build
- Added first draft implementation of NanoShaper interface
- Greatly improved error handling for GPU memory capacity heuristics that query the minimum GPU physical memory capacity and available memory for all GPUs in the active context.
- Ensure that the FileRenderer/DisplayDevice subclasses are destroyed before we tear down any existing remote rendering device connection.
- Updated the VCA code to search for the appropriate configuration for the latest OptiX 3.8.0 beta: "NVIDIA OptiX 3.8.0 (Version 19519708 Bridge 231000.5154 Protocol 11)" Reverted the framebuffer management code to add/destroy variables on-the-fly to accomodate switching between progressive and non-progressive rendering.
- Added debug messages for remote device code path
- Corrected the OptiX remote device attach URL query logic. Later revs of OptiX 3.8 should now be working with the memory capacity heuristic.
- Corrected conditional compilation of framebuffer variable declaration for OptiX 3.8.0
- Switch the OptiX Renderer back to using the fixed-size user-defined data type for the light buffers.
- Added safety checks to prevent problems if a caller adds more than DISP_LIGHTS lights into the light list, when the code has been compiled to use a fixed-size user-defined light type.
- Force clearing of all existing lights prior to appending to the light list to prevent accumulation of lights when reusing the same OptiX renderer object.
- Report the number of lights in the scene along with other diagnostic information when debugging is enabled on the OptiX renderer
- Improved precision of OptiX runtime reporting
- Added check for VMDOPTIXNORENDER to simplify performance benchmarking of the non-rendering part of the workload, such as scene graph generation, acceleration structure builds, and buffer allocations, copies, and output image renormalizations of various kinds.
- Added code to allow user-override to disable writing of the output image for batch rendering, for the purposes of benchmarking.
- Added context safety checks to renderer methods for more graceful fallback.
- Updated the scene destruction method to clear geometric primitive counters to zero so the correct stats are printed when verbose debug info is printed. This is also important to accumulation that could cause the memory capcity code to switch acceleration structure builders.
- Made the OptiX code more resilient against incompatible GPU drivers that cause a context creation failure.
- Fixed up the order of operations for the rewritten OptiX renderer, ensuring that environment variable override checks for verbose output, shader path, and similar things are done at the right times. Migrated the verbosity check into a separate routine so it can be updated in per-frame rendering as well.
- Redesigned the OptiX framebuffer allocation/deallocation mechanism to do more of the tricky buffer management internally. Replaced the old allocate_framebuffer() method with a new config_framebuffer() method that internalizes all of the machinery to correctly destroy and reallocate the buffers when switching from non-progressive rendering to progressive rendering, and back to non-progressive, when using the new OptiX APIs that bind streams to output buffers, etc. The calling codes no longer need to track any pre-existing state, they just need to pass along which rendering mode is in use, whether progressive or non-progressive. The config_framebuffer() method also handles cases where the buffers already exist and are wired up to streams in a compatible way and just need to be resized. The new approach eliminates code duplication in the callers and should make it possible to do many similar optimizations for more complex features that require additional buffers, such as per-pixel variance statistics which may be used for automatic quality optimizations.
- Eliminate unnecessary light direction normalization left from early test code.
- Moved light buffer initialization into the context creation method and out of the per-frame rendering loop. Merged the conditional compilation of the user-defined light object setup with the rtBuffer light buffer setup so they occur in the same place.
- VMD 1.9.3 alpha 1 (May 21, 2015)
- updated to use exectool, and rev'd package version
- Renamed context member 'ctx' for brevity
- corrected order of nvcc flag modifications for 32-bit builds
- Improve diagnostic messages for Trbvh memory capacity heuristic
- Added CRAY_XC and CRAY_XK targets to startup scripts.
- Added a generic CRAY_XK build target for Blue Waters, Titan, Piz Daint, Big Red II, and similar machines. Technically this target would probably also be fine for other closely related Cray hardware.
- Added ARCH_CRAY_XK and ARCH_CRAY_XC macro tests for generality.
- Eliminated the special Thrust memory allocation strategy for Cray XK builds now that VMD has improved GU memory handling in general.
- mafft: Ensure that mafft pkgIndex.tcl gets copied to the plugin directory
- hard-code 32-bit Linux builds for RHEL4 to use CUDA 4.x since it is the last version to support the old distros
- mafft: fix profile-profile alignments so that they can be done with mafft, and fixed the mafft command line to work with the newer versions of mafft.
- seqedit: removed check to see whether mafft dir was user specified before allowing mafft radiobox to be chosen. exectool will handle later, if needed.
- mafft: rewrote mafft Makefile to prepare for inclusion of platform-specific binaries
- fixed Python material list handling keyword list format specifier
- mafft: telling it to look in plugin dir for binaries
- mafft: revised mafft execution calls to only call a single binary and not call the various aliases/soft links that mafft sets up automatically
- clustalw: remove mafft from the clustalw directory
- mafft: cranked version to 1.1
- mafft: Migrated mafft related scripts into a separate plugin area
- Added Python display set methods for ambient occlusion, ao ambient, ao direct, depth of field, f/number, focal distance, etc.
- Corrected incorrect logic in the new 'volmove' error handling code that outputs info messages on the console.
- Switched Blue Waters builds to use OptiX 3.7.0 and CUDA 6.5.
- Increment and report subframe counts when rendering in non-progressive mode as well as progressive mode.
- Changed OptiX memory capacity logic to use unsigned types to better match the device query APIs.
- Eliminated unreferenced local variables in vmd_DrawSphere() and added additional safety checks for array bounds.
- Change CUDA linkage to static for simplicity of redistribution.
- Tie the availability of the interactive OptiX progressive renderer together with the batch mode builds, and add dependency on the Tachyon glwin.[ch] source code for display of the resulting images.
- Borrowed glwin.c and glwin.h from John's Tachyon ray tracer for use by VMD for display of interactive ray tracing views.
- Updated the outer OptiXDisplayDevice class to be capable of reusing the same OptiXRenderer object, and therefore the same underlying OptiX context and associated bindings to ray tracing kernels and shader code, thereby reducing per-render overhead substantially.
- Migrated OptiX context initialization and context-wide variable declarations into a single location.
- Centralization of OptiX context initialization.
- Migrated local OptiX shader variable declarations out into the class so that context initialization and per-frame rendering state changes can be separated.
- Rewrote the code for runtime miss program linkage depending on the current VMD background mode.
- Rewrote macros for conditional compilation of the light list code to be independent of whether or not we use the OptiX 3.8+ progressive API, since the user-defined type variant should provide better performance than the rtBuffer approach in the general case as well as in the VCA progressive rendering case.
- torsionplot: removed atom selection macro from TorsionPlot startup.
- autopsf: removed atom selection macro from AutoPSF package startup
- Added "glycan" atom selection macro so it can be removed from the pkgIndex.tcl scripts for AutoPSF and TorsionPlot. This will be subject to further revisions associated with other work.
- readcharmmpar: removed duplicate lipid entry
- torsionplot: Added torsionplot to the top level distrib target
- torsionplot: Corrected typo in torsionplot 'distrib' target
- Eliminated now-unnecessary OptiX shader wrapper functions
- Switch VMD to CUDA 6.5 by default, deleted deprecated target architectures, and added new target GPU architectures.
- Changed default CUDA toolkit paths to exclude 'encap' since NVIDIA has standardized CUDA installs to target /usr/local/cuda-X.Y and that pattern has been stable for several releases now.
- hard-coded ICC path for 32-bit Linux builds on RHEL 4.x
- disable CUDA on MacOS builds until we update the build box to Yosemite
- Eliminate linkage against libGLU since it is now disabled in the code.
- fftk: fixed error in the visualization of cgenff improper data
- fftk: added support for comments with multiple ! separators
- Eliminated generation of duplicate points in the sphere cap loops when point rendering is enabled.
- Added code to allow the sphere rendering code to switch between rendering points and solid spheres.
- Corrected polygon winding order for the new cone routine, and added a solid sphere implementation.
- Added cylinder implementation to eliminate dependencies on glyCylinder(), gluDisk(), etc.
- Wrapped the last remaining libGLU dependencies in compile-time macro tests, in preparation for replacement with completely built-in routines.
- Corrected implementation of vmd_LookAt() replacement for gluLookAt().
- fixed an error when writing a par file containing improper parameters from cgenff analogy
- fftk: added element guessing from mass via topotools
- Skip OptiX AS builder memory capacity check when using VCA for now.
- fftk: fixed typo in cgenff analysis
- Added code to detect the Intel SWR rasterizer and disable use of advanced OpenGL features that the current alpha version doesn't yet support.
- Switched MacOS X OpenGL extension tests to use dlopen/dlsym etc.
- Started process of eliminating dependencies on libGLU
- Trimmed out ancient MacOS X related comments that had links to Apple documentation that has been deprecated or has otherwise gone dark on the web.
- Ongoing updates for MacOS X 10.10.x and latest Xcode, for 64-bit builds.
- Added CUDA 7.0 for 64-bit MacOS X 10.10.x, and dropped support for all pre-Fermi GPU generations since they aren't supported as of CUDA 7.
- Corrected expat linkage for MacOS X 10.10.x builds
- Updated extension management code for recent MacOS revs that deprecate the old NSxxx() APIs.
- Eliminated if tests on expressions that always evaluate false/true because tests were done on member array variables that are no longer dynamically allocated. Eliminates compiler warnings on MacOS X clang.
- mdff: multi-map setups now work correctly from the command line. mdff setup and gui both now support B-factor sharpening/smoothing
- fftk: acknowledge contributions of Hongde Yu to developing CGenFF parser
- fftk: added CGenFF output parsing tool to the documentation
- fftk: added tool to prepare initial fftk input from cgenff program (mackerell) output
- updated links to format docs in InsightII CAR plugin docs.
- Added links and info Norman Geist's Userani scripts into the vmdmovie docs.
- mdff: added support in both GUI and setup for average xmdff maps. bug fixes for IMD CC density loading. Initial stages of changing xmdff_phenix.tcl to be more proc based.
- fftk: cleanup of buildpar to better account for multiple different tools under the same namespace, removal of long deprecated code
- fftk: linux-specific file separator for "." in sanity checks
- Added new query_meminfo_ctx_devices() routine for use by the memory capacity heuristics that select the best AS builder algorithm and whether to run on GPU vs. CPU.
- Added new code to allow user-override of the OptiX AS build type when using the Trbvh builder. By default we use the GPU build type, but the user can force use of the CPU build type by setting the VMDOPTIXBUILDTYPE environment variable to "CPU". Added a new AS builder memory requirement heuristic as a workaround for the inability to switch the AS builder after a previous build attempt has yielded an error. The memory requirement heuristic checks if the current AS builder is set to Trbvh and it tries to predict the total GPU memory footprint that would be required by the current scene geometry plus the memory high-water mark during the AS build process. If the total estimated memory footprint exceeds what is available, VMD switches from the GPU-based Trbvh builder, to either the CPU-based Trbvh build type, or the CPU-based MedianBvh builder. Since testing of the CPU-based Trbvh builder showed some problems for one very big scene the Trbvh CPU build type is disabled and MedianBvh is always used as the fallback for the time being. The current heuristic implementation is written assuming a 12GB GPU and doesn't survey the actual hardware in the active OptiX context, so that also remains an area that requires improvement.
- Increased MoleculeGraphics triangle batch size to approach limits of indexing arithmetic that makes any use of 32-bit "int" types.
- Use the most memory efficient triangle strip format when we're passed flat-shaded triangle meshes.
- Added a triangle mesh format for flat-shaded triangles with single per-facet surface normals, as used by Koumoutsakos et al.
- Added trimesh_v3f() mesh format for rendering red blood cell simulations such as by Koumoutsakos et al.
- Rewrote the Isosurface code to use larger append3() group sizes
- Simplified registration of newly added object geometry in the OptiX renderer
- Rewrote the IMD force tracking code to use more efficient list operations.
- Added new appendlist() method to simplify the IMD code.
- Replaced single-element append() calls with 3- and 4-element append operations to improve efficiency when loading large files.
- continued replacement of single or small group append() operations with larger multi-element append calls to improve performance.
- Added new append2(), append2x3(), and append3x3() methods to further simplify vertex array packing logic
- Replaced uses of looped or multiple ResizeArray::append() calls with append3(), append4(), and appendN() variants that are more efficient.
- Unified ResizeArray logic for extending the array size by N elements
- Added ResizeArray::appendN() method for use in 'within' atom selections and other places where we add N identical values in one shot.
- Added new ResizeArray::append3() and ResizeArray::append9() methods for increased efficiency with some common vertex array packing operations
- Eliminated the older versions of the flat-shaded trimesh aggregation loops.
- Revised triangle mesh primitives to allow greatly improved memory efficiency when rendering flat-shaded triangle meshes, e.g. used for red blood cell simulations by Koumoutsakos et al.
- Minor cleanup of triangle mesh conversion loop
- Rewrote the MoleculeGraphics flat-shaded triangle rendering code to collect individual triangles into a triangle mesh, thereby greatly improving memory efficiency.
- Started rewrite of the rendering path for MoleculeGraphics to vastly improve the memory efficiency and performance when rendering massive triangle meshes that are loaded via plugins that use the MoleculeGraphics data paths.
- corrected an error in the colvar logic where the function pointer was used in an expression rather than the return value of the function call.
- fixed mdffi on OSX so that putenv is used instead of setenv for VMDNOCUDA
- Finished the linkage between the OptiX context creation logic and the code to login and manage connections to remote VCA clusters.
- xmdff: support for Thymine added to xmdff
- autopsf: now supports charmm36 for DNA
- mdff: add multiple parm files at a time
- mdff: mdff check -ccc updated to use mdffi as default
- mdff: support for variable xmdff map selection
- molefacture: Fix geometry of leucine CB hydrogens
- molefacture: Make peptide builder case insensitive
- mdff: use all basic charmm36 files as default to work around NBFIX issue, and because charmm36 3.0.1 files fixed duplicate entry issue
- readcharmpar: removed extra H-H bond CHARMM uses for shake
- readcharmtop: removed extra H-H bond CHARMM uses for shake
- autoionize: updated for charmm36
- readcharmmpar: latest 3.0.1 release of CGenFF, updated for charmm36
- readcharmmtop: latest 3.0.1 release of CGenFF, updated for charmm36
- plyplugin: Further compaction and elimination of unnecessary buffering and intermediate copies now that the PLY plugin is working reasonably well.
- plyplugin: handle multiple facet formats for Koumoutsakos SC15 paper
- plyplugin: Continuing cleanup and streamlining before adding code to handle a broader range of geometric primitives.
- plyplugin: Eliminated an intermediate vertex array copy step
- autopsf: Replaced non-portable variable size array construct with a very generous 8192 byte filename buffer, which should exceed FILENAME_MAX on most platforms. This code needs further rewriting/cleanup.
- plyplugin: Added plyplugin to the default build. Needs a bunch of code hardening still, but it works for the SC'15 paper.
- autopsf: Updates from Tristan Croll: 1-Maintain chain names 2-non-linear chain numbering 3-update to charmm36 4-now handles n-linked glycans 5-various bug fixe
- autopsf: remove 500 character filename limit from psfupdate
- readcharmmtop: Added charmm36 topology files.
- readcharmmpar: Added chrmmm36 parameter files.
- Added first minimalistic implementation of a VMD plugin for reading the Stanford PLY polygonal file format. This first version works only with a specific variant needed for an SC'15 paper.
- default parameter now charmm36_prot. Cancel parameter add bug fixed. File dialogs now open over the GUI. Parameter browser has correct file extensions now, also updated for charmm36
- Updated the OptiX shader code so it builds both with the latest progressive APIs and with the older revs of OptiX without.
- Updated the OptiX progressive API code branch to allow runtime determination of progressive API usage for interactive, or non-progressive mode for batch rendering. Changed the shader code to add the accumulation buffer subframe count to the progressive subframe index so that RNG initialization is done correctly in both batch and interactive rendering runs.
- Completed baseline implementation of OptiX 3.8 remote VCA connection implementation during VMD startup.
- Added runtime checks for environment variables to drive VMD to attach all OptiX rendering runs to a remote VCA cluster.
- Updated the OptiX remote VCA cluster rendering code to handle connection errors due to missing shared libraries or shared library load failures, and to cope with cluster node reservation timeouts, etc.
- Added Gromacs TNG plugin to the docs
- Torsionplot Makefile added
- Started the integration of the OptiX remote rendering code into the standard build.
- Refactored the progressive and batch rendering code paths to support the new OptiX 3.8 progressive APIs. Still need to work out changes for the batch code path to deal with the subframe index becoming a built-in.
- Eliminated old buffer resize code paths that aren't relevant anymore.
- Eliminated the old clear_framebuffer() ray gen program since it is no longer used. This is one of the first steps in adapting the existing code to support the newest version of the progressive rendering API. Eliminated the RT_RAY_GEN_CLEAR_FRAMEBUFFER constant as well.
- Added new "mol volmove" command to allow manipulation of volumetric datasets with transformation matrices such as those returned by "measure fit" etc.
- Enable modification or transformation of volumetric datasets.
- Cranked solvate plugin version to 1.7
- Added note about column-major matrix format exposed for the fit/move operations in the Python atom selection interface, per suggestion by Josh Vermaas.
- solvate: Force segment prefixes to upper case to please psfgen, per email from Josh Vermaas.
- autoionize: Fixed an autoionize GUI bug with handling Ca2+ ions, reported by Jasper Maniates-Selvin.
- added torsionplot menu entry in Modeling extensions
- Initial TorsionPlot plugin commit. Includes Tristan's original code with IMDFF and show residue changes
- added write_charmm_crd to the script library
- Updated configure script to allow environment variable overrides for default FreeVR directories, per suggestions from Mark Stock.
- Added LIT (Lithium) to the "ion" atom selection macro
- Added first docs for Gromacs TNG plugin
- Added H5MD plugin to the molfile plugin docs.
- tngplugin: Latest version of the Gromacs TNG plugin from Magnus Lundborg. This version requires TNG library version 1.7.4 or greater.
- mdff: new flag for mdff setup and gui for turning off grid forces. Proper setup checks that handle multiple maps.
- Changed the implementation of the map_uniform_spacing() test to treat maps that have x/y/z delta values that differ by less than 0.00001% relative error as if they had strictly uniform spacing. This catches some corner cases where the non-associativity of floating point arithmetic causes us to get delta values that are not bitwise equal, differing in a few units least place, or similar. The 0.00001% relative error is selected to be intolerant of spacing errors that would result in a noticable error in the volume bounding box dimensions for a volume with more than 1024 voxels on one of its sides. This should be sufficiently permissive for the cases we want to allow, but restrictive enough to catch cases that are not really uniform spacing.
- userani: Updated with latest version from Norman Geist
- Correct linkage when compiled with sqlite and other optional libs.
- Added linkage against libdstc++ per patch from Robin Betz. This is necessary when the VMD plugins (or VMD itself) are loaded in a Python module so that depdendencies are correctly resolved.
- Applied patch from Robin Betz adding charge information from Maestro maeff files. Updated minor version number of maeffplugin.
- Fix for invalid argv ptr passed to init call when VMD is compiled as a Python module rather than as the full standalone app. Patch by Robin Betz.
- Updated the VMD collective variables module with the latest version from Giacomo and Jerome. The new version adds new functionality and corrects some problems cases that could cause colvars to exit or crash previously.
- Added new colvar source files to the build.
- mdff: fixed non-existent cc volume bug
- Revised the OptiX renderer to support the final form of the progressive rendering APIs implemented in OptiX 3.8. Changed the old VCA-specific VMDOPTIX_VCA macro to VMDOPTIX_PROGRESSIVEAPI. When VMD is compiled against OptiX 3.8, we use the OptiX progressive rendering API instead of the VMD built-in progressive rendering loops.
- Began updates for OptiX 3.8
- mdff: xmdff multi maps and masks setup bug fixed
- mdff: setup properly deletes old maps.params. imd update properly loads xMDFF densities
- Updated OptiX path for compiling on Titan
- Added more titan login nodes to the plugin build scripts.
- cispeptide: fixed show residue centering bug. cispeptide gui now works with MDFF GUI
- chirality: fixed show residue bug. chirality gui now works with MDFF GUI. now can find chiral centers where two or more residues are involved for glycan chirality
- mdff: cleaner xmdff template. multiple map support for setup and gui. loaded mol selector for mdff gui. volume entry for IMDFF correlation.
- Added the planetarium dome master camera type to the main OptiX rendering path, and implemented an override to allow it to be used irrespective of the camera projection mode setting passed in from VMD.
- Updated the code for the dome master camera type so it can be registered by the main rendering code.
- Added antialiasing to the planetarium dome master ray gen program
- Added the draft non-antialiased, fixed-camera-axis dome ray gen program.
- Started to pull in test code for the new OptiX 3.8 APIs.
- When VMD is compiled with OptiX support enabled, add the cudaDeviceLmemResizeToMax initialization for the CUDA runtime initialization for each device
- psfgen: Read full resid in NAMD format.
- psfgen: Support resid of 8 digits plus an insertion code.
- psfgen: Read element symbols in pdb file during
"readpsf
pdb ". - psfgen: Fix bug where CMAP cross-terms were ignored in patches and apply last-residue patch before first-residue patch because dipeptide patch ACED depends on CT3 atom NT.
- mdffplugin: updated MDFF GUI documentation, now with more images
- topotools: Topotools bug fix and version number update from Axel.
- gromacsplugin: Applied Axel's patch to gromacsplugin, correcting several problems with uninitialized memory, memory leaks, and mismatched memory deallocation calls. Several of these issues were introduced by contributions in the past year, but some of the memory leaks of small items had been in the code for some time.
- psfgen: Ignore ioformat statement and handle missing minor version number.
- mdffplugin: additional GUI details and structure in density image
- Tweak reporting of CUDA accelerator memory capacities so integer division doesn't cause us to show 1GB less memory than is available.
- Updated comments about OptiX device exclusions.
- Removed old per-pixel OptiX RNG state buffers and associated save/restore operations in favor of using the TEA algorithm to swizzle together pixel indices with the current subframe index to generate a usable RNG implementation.
- networkview: tweaks to add a VMD molecular view showing network paths.
- mdffplugin: updated doc page including GUI information and image
- vmdmovie: Fixed missing variable declaration for movieformat in the user-callable script proc for generating movies.
- mdffplugin: remove beta factor sharpening ref and initial updated doc page
- Eliminated old code path for field lines reps based on env variables.
- Enabled the new FieldLines representation graphical interface controls and representation parameters used for the Faraday Discussions paper on lipid diffusion analysis.
- vmdprefs: added vmdprefs to main plugin doc page
- timeline: cross correlation secondary structure selection now works on non-contiguous resids
- mdffplugin: fixed mdff require, mdff setup option expansion
- Cranked version
- VMD 1.9.2 Final Release (December 29, 2014)
Please email any questions to vmd@ks.uiuc.edu.