VMD Development Status

  • Working toward first beta test releases
    • mdffplugin: Calculate periodic box information using water molecules only, as opposed to all molecules. That cures problems with water-membrane simulations in which lipid tails stick out of the periodic cell.
    • mdffplugin: NAMD's gridforces syntax changed from 2.7b1 to 2.7b2. Now that 2.7b2 is released, write MDFF config files with the current syntax.
    • topotools: add support for reading and writing .xyz trajectories with variable number of atoms by automatically adding padding atoms and flagging them in the user field for visualization.
    • Replace MOLFILE_QMCHARGE_* by QMCHARGE_* and translate the symbolic constants in MolFilePlugin.C. Finally this allowed to eliminate references to molfile_plugin.h in files other than MolFilePlugin.C.
    • Replace MOLFILE_WAVE_* by WAVE_*.
    • Improved error messages and comments.
    • Translate MOLFILE_WAVE_* macros.
    • Renamed opt_status flag to status since it describes a general calculation status, not only the geometryoptimization status.
    • Eliminated obsolete symbolic constants RUNTYPE_TOTAL and SCFTYPE_TOTAL. Added comments.
    • Add translation switch block for qm convergence status.
    • Canonicalize names for QMSTATUS macros.
    • Translate between RUNTYPE_* macros from molfile_plugin.h and QMData.h. Replace hard-wired Lookup table for descriptive strings for runtype and scftype by switch blocks so we don't have to keep the translation table in sync with the macro definitions.
    • Add MOLFILE_RUNTYPE_* macros.
    • Move RUNTYPE macros to molfileplugin.h.
    • Translate between MOLFILE_SCFTYPE_* macros from molfile_plugin.h to SCFTYPE_* enum defined in QMData.h. This will make it unnecessary to include molfile_plugin.h anywhere else in VMD but MolFilePlugin.h. As a result VMD will be more indedendent from the plugins.
    • Turn MOLFILE_SCFTYPE_* enum into #defines. They will be used unly in the plugins and in MolFilePlugin.C.
    • moldenplugin: Enable reading wavefunction coefficients.
    • gamessplugin: Make use of angular_momentum_expon() helper function from qmplugins.h.
    • gamessplugin: Use SCF type macros from molfile_plugin. Use initialization function from qmplugin.h. Fix memory leak.
    • molfile_plugin: Added macros for the SCF type.
    • molfile_plugin: Added helper functions for initialization.
    • Use SCF type macros from molfile_plugin.
    • Updated DCS kernel to compile on MacOS X
    • Updated orbital kernel to compile on MacOS X
    • Renamed struct qmdata holding data structures useful for QM file parsing to qmdata_t for disambiguation purpose.
    • moldenplugin: Enable splitting SP-shells into one S- and one P-shell.
    • moldenplugin: Send basis set data, including correct atomic numbers, to VMD.
    • Found a typo in the SSE angular momenta for F_SHELL
    • Fixed a bug in the calculation of partial distance components in the CPU SSE code branch.
    • Safety check for get_basis().
    • moldenplugin: Fix memory leak.
    • use single-precision floating point constant to please some of the weaker OpenCL compiler implementations.
    • Fixed dx lattice coordinate arithmetic for 2-times unrolled 4-way vectorized DCS potential kernel
    • Added tunings for IBM Cell/Power on OpenCL DCS potential kernel
    • moldenplugin: Enable reading trajectories. (Works but needs cleanup)
    • Set block size (OpenCL workgroup size) for vec4 DCS potential kernel to give good performance on NVIDIA and AMD hardware. Need more tuning to find the global optimal settings.
    • fix cut/paste typo in vec4 DCS potential kernel
    • Unrolled 4-way vectorized kernel for higher efficiency
    • Added a code path to allow testing of the vec4 DCS kernel
    • corrected last remaining issues with the vec4 version of the orbital kernel
    • Make non-CUDA builds (e.g. OpenCL-only) runnable.
    • Corrected a typo in the OpenCL required work group size kernel attributes which was causing a problem with the IBM OpenCL implementation for Cell.
    • moldenplugin: Cleanup. Documentation. Fix memory leak.
    • qmplugin: Added strtoupper().
    • Corrected OpenCL work unit X lattice index calculation
    • fixed typo in OpenCL potential kernel parameter setup
    • Prevent pbwithin selections with a cutoff <= 0.0 from crashing.
    • seqdata, seqedit: changed proc call to eliminate use of a redundant proc body.
    • First version of basis set aware molden file parser.
    • Move shell type macros from gamessplugin to qmplugin. Fix some Commments.
    • Added workarounds for bugs in the IBM Power/Cell OpenCL beta implementation
    • Updated padding logic to add support for 4-way vectorized potential kernel
    • Minor bug fixes and updates to both coulomb summation kernels
    • volutil: Added (undocumented) option -volume to calculate the molecular volume given a threshold in sigmas above the mean.
    • Force OpenCL potential kernel to be single-threaded for now, started culling some of the debugging code and unnecessary status messages. Still need to pull kernel compilation the rest of the way out of the compute loops.
    • Started migrating OpenCL kernel compilation out of the compute loops
    • Corrected global dimensions to take into account the loop unrolling within each work item.
    • Eliminated lots of workarounds and ifdef blocks in the OpenCL orbital kernels since the latest NVIDIA OpenCL libs seem to have fixed all of the problems that the workarounds were written for.
    • autopsf: Remove an apparently unneeded change that causes problems in some cases
    • added typecast to please the mac CUDA compilers
    • Converted VMD to use the timers provided by the workforce library, making it easier to use VMD components in standalone code, or to develop things initially as standalone modules before adding them to VMD.
    • Fixed polygon winding order for two-radius cones in the default FileRenderer::cone() method used by renderers that don't provide their own cone primitive.
    • molfile plugin headers: Better odering of QM related typedefs
    • gamessplugin: Added documentation about the function call chain and the parsing strategy.
    • OpenCL orbital kernel is now wired up for basic testing. The runtime compilation of the kernel is done in a hackish way at present, but we need a robust dynamic kernel compilation infrastructure the provides thread-safety and the ability to create/destroy kernels dynamically in order to really solve this problem properly. The current OpenCL kernel is limited to single-threaded execution due to the fact that OpenCL itself is not completely thread-safe.
    • Clicking on the title column header (which defaults to 'Sequence Name') now allows you to choose the text that you wish to describe each sequence. You can choose to display "Sequence Name", "Sequence Length", "Percent GC", "Domain Of Life", "Common Name", "Scientific Name - Short", "Scientific Name - Long", "Sequence Sources", "Lineage", "Enzyme Commision Number", "Sequence Type", "Temperature Class". If a given sequence doesn't have a value for the property you have chosen, you will be shown the Sequence Name, surrounded by angle brackets.
    • Corrected X index calculation to incorporate the correct loop unrolling constants in the direct Coulomb summation OpenCL kernel.
    • Added the OpenCL orbital code to the configure script
    • Extended documentation of the QM interface.
    • pbctools: Fixed a 'readxst' bug reported by Olaf Lenz. Now xst files containing PBC vectors that don't follow the standard alignment (A||x, B in x-y plane) are read and the molecule is aligned accordingly when using -alignx option. Fixed indentation in a few places.
    • use an explicit single precision floating point constant when initializing tmpshell, so CUDA and OpenCL kernels match
    • migrated majority of OpenCL context setup code completely out of the orbital routines.
    • further progress pulling OpenCL state initialization out of the orbital computation routines themselves.
    • Beginning cleanup of OpenCL orbital kernel compilation stages in prep for moving them out to the VMD global application startup-phase.
    • Make OpenCL orbital kernels use native_exp2() for (hopefully) better performance
    • Added draft 4-way vectorized orbital kernel
    • renamed 4-way vectorized potential kernel
    • Fixed incorrect copy length for initialization of the const_num_shells_per_atom array
    • Added code for setting up and running the tiled shared orbital kernel in OpenCL. At present the kernel is disabled due to bugs in both of the existing beta OpenCL toolkits, but hopefully it'll be runnable soon.
    • Added a float4-based OpenCL kernel intended to be better suited to CPUs.
    • eliminated unnecessary __constant address space qualifiers for non-pointer kernel parameters.
    • fixed missing type specifier
    • Implemented an OpenCL version of the tiled shared memory orbital kernel
    • added more cleanup handling to the end of the potential kernel for now until this gets pulled out into higher level routines.
    • Set fixed workgroup size for the constant memory orbital kernel
    • Release the command queue when done
    • Prettied up the constant memory orbital kernel
    • Corrected logic that releases memory objects after the orbital kernel completes, and fixed the memory object allocation code that will be used by the tiled kernel.
    • Added OpenCL orbital kernel to header
    • Corrected global work dimension for kernel launch
    • Mostly functioning OpenCL version of the constant memory orbital kernel
    • Completed kernel launch code for constant memory version of the orbital kernel
    • Converted constant memory buffers to OpenCL dynamic allocations.
    • Crude first draft of OpenCL version of the existing CUDA orbital kernels. At present, only the constant memory kernel is ported, and the constant memory arrays need to be reorganized since OpenCL handles those a bit differently.
    • Added explicit include of math.h so that OpenCL and CUDA codes are as close to identical as possible.
    • pulled unrolling macros out of orbital kernel since we're not actually using them at present.
    • eliminated unused constant buffer leftover from CUDA version
    • Updated and revised the standalone test harness so we can begin doing a bringup of an OpenCL version of the orbital code.
    • Corrected the CUDA init code for non-CUDA builds and init the class pointers to NULL in all cases.
    • limit OpenCL runs to a single host thread until we make our own thread-safe kernel compilation infrastructure.
    • eliminated unused code and added device count to OpenCL platform info routines
    • eliminated unnecessary printing from OpenCL platform selector routine
    • Improved OpenCL platform info display
    • qmtool: Fix the menus so that they work under MACOSX.
    • namdgui: Fix the menus so that they work under MACOSX.
    • cranked version
  • VMD 1.8.8a5 (October 26, 2009)
    • Added workforce timer routines to the build, replacing the vmd versions based on the Tachyon code.
    • cranked version
  • VMD 1.8.8a4 (October 23, 2009)
    • Updated URL for Intervor plugin
    • fixed behavior of withinbonds selection when used as part of a compound selection expression.
    • Increase default resolution of representations. This will cost performance for very large structures, but since the majority of the user community are working on small items, it's a better default for modern GPUs. People working on large structures are generally more skilled and will know how to change their personal defaults using the "mol default" commands.
    • ilstools: Fix the menus so that they work better on MACOSX.
    • symmetrytool: Fix menubutton (for MACOSX).
    • hoomdplugin: add support for new acceleration field.
    • lammpsplugin: more intuitive name for remap environment variable.
    • lammpsplugin: Allow remapping of data field labels via an environment variable.
    • Added crude first draft of OpenCL infrastructure.
    • Added basic OpenCL support to configure script
    • topotools: need to swap indices together with types when retyping dihedrals and impropers.
    • dowser: Add reference for the Dowser plugin.
    • consistent naming of intermediate angle/dihedral/improper lists to avoid cut-n-paste bugs.
    • topotools: fix cut-n-paste bug in replicatemols proc.
    • topotools: added code to determine angle and dihedral definitions from the bond topology and guess elements from masses.
    • hoomdplugin: "rebrand" the hoomd plugin to reflect the change of name to HOOMD-blue. update contact e-mail address and step plugin minor version number.
    • topotools: fix bug in assignment of angles, dihedrals and impropers to a subsystem via a selection argument. Consistent naming of atomindex maps. update e-mail address and homepage.
    • topotools: remove platform specific scratchdir code that is no longer used. step version number to 1.1 in anticipation of the next commits with added features requested by topotools users.
    • Made the constant buffer update routine static for file-scope linkage.
    • mdffplugin: Remove redundant NAMD wrapping commands in 'mdff setup'.
    • mdffplugin: Modified 'mdff gridpdb' so that only atoms that should be coupled to the map will be considered by NAMD's gridForces, which should improve performance for explicit-solvent MDFF. Also don't couple hydrogens by default, which should also improve both performance and stability.
    • psfplugin: Avoid NULL pointer dereference in case a parse error has happenend in one of the psf file blocks, which is indicated by closing the file and setting the pointer to NULL. stepped plugin minor version number.
    • Corrected missing device memory allocation when not building using pinned memory buffers.
    • Do a quick 1-byte memory allocation/deallocation during GPU device pool initialization to cause all of the contexts to go live during the earliest startup phase for the purposes of accurate init timings.
    • Enabled zero-copy orbital kernel by default
    • Made the mutexes on work distribution data structures use spin locks only, this will prevent kernel-based queued waiting and the associated context switches back and forth.
    • Added timer calls to return absolute wall clock times for start/stop times to enable detailed execution trace comparisons
    • Added a prototype zero-copy variation of the orbital kernels. Since we can't presently guarantee that the incoming grid is appropriately padded in X and Y, we still have a de-striding copy loop to perform to the final output buffer, but we have eliminated the need for calls to cudaMemcpy() following kernel execution since the output array is write-only. To do better, we need to eliminate the de-striding copies and ideally use a "portable" mapped host allocation so that all GPUs target the same output buufer automatically.
    • Enable CUDA mapped host memory by default when initializing hardware that's capable of using zero copy
    • don't call free CUDA device memory arrays unless we used them.
    • Fixed incorrect orbital grid allocation size presumably caused by conversion from malloc/free to new/delete syntax.
    • cranked version
  • VMD 1.8.8a3 (September 22, 2009)
    • Replace shell_symmetry in basissetplugin.c.
    • symmetrytool: Use correct scope for getargs function. (It is in ::util::getargs)
    • replace shell_symmtry by shell_type
    • Added comments that explain the concept behind the QMTimestep and wavefunction classes.
    • psfplugin: Updated PSF plugin for latest CHARMM Drude PSF format from Wei Jiang at the Roux lab.
    • gamessplugin: Add and improve comments.
    • fixed old reference to basissetplugin.h, now replaced by qmplugin.h
    • gamessplugin: corrected C++ism and cranked version number
    • replaced basissetplugin.h with qmplugin.h
    • Add qmplugin.h containing data structures and helper functions for QM file parsing.
    • colorscalebar: Major GUI overhaul. Option to properly select molecule and representation when using autoscale mode to pick the range, instead of the previous loop over all rep 0 of all molecules. Option to add a title text added as well.
    • colorscalebar: take list of text colors in colorscalebar GUI from [colorinfo colors] instead of hardcoding it.
    • colorscalebar: cranked version number of recently modified colorscalebar plugin
    • colorscalebar: save and restore current views of all molecules around the addition of the colorscale bar, since adding the colorbar requires resetting the view.
    • cranked version
  • VMD 1.8.8a2 (September 16, 2009)
    • Added spin lock and try lock primitives for use in cases where we are not willing to allow the OS to put the calling thread to sleep in a wait queue due to detrimental effects on latency.
    • Added code to test empty CUDA kernel launch latency. The code now skips reporting data from the first "warmup" pass.
    • eliminated vmd_msleep() call to keep CPU cores spun up during benchmark
    • Added multi-run averaging into CUDA device pool latency benchmarks
    • Eliminated the old thread spawning code from the CUDA Orbital code, since we can use the device pool APIs even for single-threaded runs now.
    • CUDA device pools are used now even for single-threaded builds
    • force wait on completion of pending GPU benchmark kernels before exiting worker thread
    • Added a device pool latency benchmark that includes a simple no-op GPU kernel
    • Added device pool benchmarks for raw barrier syncs, and for a no-op worker procedure.
    • Added a new benchmark test to measure the latency of a complete CUDA device threadpool wake / run / barrier collect / sleep cycle doing a no-op other than requesting work units as fast as possible.
    • Updated PSF plugin with more stuff related to the CHARMM DRUDE mode
    • Updated PSF plugin to recognize new Charmm36 Drude polarizable FF models.
    • Re-enabled use of CUDA pinned memory for the multi-GPU orbital kernels since the CUDA 2.3 drivers seem to have fixed the bugs that existed before.
    • Removed old comments related to bugs in the fog implementation on the SGI RealityEngine and hardware of the same era.
    • Removed queries and enumerations related to the old Sun OpenGL mesh array extension, which is not used in VMD currently.
    • Removed code for detection of various archaic SGI and Sun graphics accelerators along with code that provided workarounds for bugs in the graphics hardware and/or drivers.
    • Removed old machine-specific GLX visual acquisition comments.
    • Removed the archaic SGI-specific multisample antialiasing code since the ARB multisample feature has been available now for many years.
    • ssrestraints: Added support for Amber RNA residue names.
    • seqdata: removed unneeded comments
    • pdbtool: don't download the entry from the PDB if the user cancels the file name selection.
    • cranked version
  • VMD 1.8.8a1 (September 4, 2009)
    • make vmdcon compile with the new WKF threads.
    • volutil: Fix typo in parsing a command-line option.
    • multiseq: removed extraneous comments from the dialog
    • netcdfplugin: fix uninitialized return code variable.
    • volutil: Updated the volmap header to use the _isnan() routine when compiling for win32.
    • Updated VS2005 build setting for new threading components
    • Updated MSVC6 build setting for new threading components
    • Fixed volutil Makefile to link the win32 executable correctly.
    • Added a separate shared library flags compilation variable to support Windows plugins builds that use statically linked plugins.
    • Changed Win32 compile flags to prevent executable source files (e.g. volutil) from being compiled with a DllMain() when they include plugin headers.
    • Put exclusion forces in the correct array for multiple timestepping.
    • topotools: update parameter and topology files as requested by WS.
    • volutil: Attempted to correct some linking problems on Win32.
    • Added CUDA host-device memory copy latency benchmark tests
    • CUDA memory bandwidth tests run faster with one thread per data element rather than looping, and the code is much prettier.
    • added CUDA global memory bandwidth benchmark test
    • prettied up CUDA benchmark routines, eliminated an inadvertent use of double precision constants in the multiply-add kernel.
    • timeline: Handles large sturctures better: a) does not effectively freeze on startup for large molecules (the intial calculating for every residue is now skipped b) properly handles segments, including in .tml files, so can be sure have unique atoms specified New version of .tml format (1.4) -- but still must set to handle earlier versions (e.g. not yet backward compatible!)
    • volutil: Avoid "using std::min" and "using std::max" statements, removed "using namespace std" to please older MS compilers.
    • volutil: Remove unused template functions.
    • Converted VMD to use the new WorkForce threading routines
    • Added first revision of WorkForce threads to VMD, to replace the old VMDThreads code with something more program-agnostic. We'll keep the truly VMD-specific threads routines in the old VMDThreads code, but migrate the rest of the code to use the new API.
    • Updated cionize CUDA kernels for new behavior of cudaSetDevice() with runtime versions 2.2 and later.
    • ssrestraints: Fix parsing of -hbonds options.
    • Added symmetrytool to the plugin index page
    • ILS: Allow disabling the automatic alignment code by setting the environment variable VMDILSALIGNMAPS. Pass alignment matrix and transformed grid origin and grid basis vectors to the kernels.
    • molefacture: Add some missing fragment files
    • Added support for nucleic acid residue naming convention used by Coot, i.e., Ar, Ad, Cr, Cd, etc.
    • ilstools: Correct the range for cases where we don't start with the first frame of the trajectory.
    • symmetrytool: updated docs
    • ilstools: updated docs
    • Updated NVCC compiler flags for CUDA 2.3, including support for cross-compilation mode on 64-bit hosts.
    • timeline: minor cosmetic fix: 'every residue' button appears now correctly on Windows and MacOS X.
    • Added volutil package, required by MDFF at present. A known problem that we need to address is that volutil relies on a non-portable test for NaN (breaks down on Solaris with the compiler optimizations we use). Compilation hasn't been tested on Windows yet.
    • changed win32 startup to look for VMD 1.8.8 registry key
    • Added new mdff plugin.
    • Added a CUDA-enabled MacOS X build config for cionize.
    • cionize: Replaced "uint" by "unsigned int" to please MacOS X.
    • updated development hardware lists
    • cranked version
  • VMD 1.8.7 Final Release (August 1, 2009)

Please email any questions to vmd@ks.uiuc.edu.

footer