| Tags | Date | Developer | Last 200 Commit Logs |
|---|
| | 2013-05-17 | johns | Fix reference count leak in the python atom selection contact calculation
which otherwise prevents Python from freeing objects,
effectively leaking memory.
* src/py_atomselection.C 1.50 (changed +13 -3)
* src/py_atomsel.C 1.18 (changed +13 -4)
|
| | 2013-05-10 | johns | Added concatenation operator for unsigned ints
* src/Inform.h 1.30 (changed +2 -1)
* src/Inform.C 1.41 (changed +7 -1)
Completed a full implementation of the OpenGL Pbuffer framebuffer
allocation code based on glXChooseFBConfig. The logic is directly
analagous to what we do for normal windowed-mode OpenGL display, however
the issue of whether or not we get a TrueColor X11 visual is moot since
there is no on-display window to worry about. The vmd_get_fbconfig()
routine implemented herein can serve as a starting point alternative to
potentially replace the old vmd_get_visual() routine in the windowed
OpenGL code path, though extra checks will have to be added to verify
that framebuffer configs have a corresponding X visual that's usable,
and the GLX_DRAWABLE_TYPE would need to be set to GLX_WINDOW_BIT.
* src/OpenGLPbufferDisplayDevice.h 1.3 (changed +3 -3)
* src/OpenGLPbufferDisplayDevice.C 1.6 (changed +158 -83)
Eliminated early revs of Pbuffer allocation code and various debugging checks
* src/OpenGLPbufferDisplayDevice.C 1.7 (changed +4 -24)
Remove space
* src/OpenGLDisplayDevice.C 1.195 (changed +2 -2)
|
| | 2013-05-09 | johns | Added OPENGLPBUFFER flag to the linux builds for the time being.
* Makefile 1.98 (changed +10 -10)
Added OPENGLPBUFFER option to Solaris builds
* Makefile 1.99 (changed +5 -5)
Clear up double-compilation of the OpenGL dependencies when compiling
SDLOpenGLDisplayDevice or FltkOpenGLDisplayDevice classes.
* configure 1.1257 (changed +4 -12)
Corrected OpenGL directory dependencies in the rewritten build scripts
* configure 1.1256 (changed +16 -16)
Corrected conditional compilation dependencies for the new
OpenGL Pbuffer-based off-screen rendering mode, to allow compilations
that contain either normal windowed OpenGL, or Pbuffers, or both, in
various combinations with other features.
* src/VMDApp.C 1.499 (changed +6 -6)
* src/Hershey.C 1.19 (changed +3 -3)
Eliminated unused variables that had remained from the original OpenGL
initializaiton code path.
* src/OpenGLPbufferDisplayDevice.C 1.5 (changed +1 -11)
Massive rewrite of the way the VMD build system deals with OpenGL, since
we now have the ability to support off-screen rendering independent of
whether or not VMD includes traditional windowed-OpenGL, graphical user
interfaces, etc. Added new self-consistency checks for user-specified
configuration flags that have implied dependencies. Previously, any usage
of OpenGL had been a tacit implication of a windowed display. With the
new support for off-screen rendering, there may or may not necessarily be
a GUI or windowed display and more configuration logic was needed to
resolve these possibilities. We can use off-screen rendering both in
binaries that run in a traditional windowed desktop mode as well as
in binaries that run purely in text mode or with MPI on supercomputers
such as Blue Waters where there are GPU-accelerated compute nodes that
support OpenGL for off-screen rendering via Pbuffers or other APIs.
* configure 1.1255 (changed +229 -206)
OpenGL Pbuffer rendering modes honor normal VMD display/image size
environment variables except in cases where they exceed the maximum
Pbuffer dimensions for the currently active OpenGL context.
* src/OpenGLPbufferDisplayDevice.C 1.4 (changed +14 -3)
|
| | 2013-05-08 | johns | Added support for OpenGL Pbuffer off-screen rendering, to enable fast
batch mode movie generation on supercomputers like Blue Waters, where we
have the ability to create OpenGL contexts, but we do not have a
traditional windowing system, and we're running entirely in batch mode.
* src/vmd.C 1.89 (changed +16 -9)
* src/VMDApp.C 1.498 (changed +19 -4)
* src/OpenGLPbufferDisplayDevice.h 1.1 (added +133 -0)
* src/OpenGLPbufferDisplayDevice.C 1.1 (added +581 -0)
* configure 1.1253 (changed +116 -92)
Corrected the DisplayDevice base class stereo name string list to
be consistent, even though it would normally never be used in practice.
* src/DisplayDevice.C 1.138 (changed +2 -2)
Cranked version number
* configure 1.1254 (changed +1 -1)
Eliminate some very old stray tabs
* src/OpenGLDisplayDevice.h 1.51 (changed +7 -7)
Eliminated spaces that don't belong
* src/Scene.C 1.88 (changed +2 -2)
Implemented image resizing for OpenGL Pbuffer off-screen rendering.
The largest possible image that can be contained in the framebuffer
is set when the OpenGL Pbuffer is initially created, so we store this
in the OpenGL renderer subclass and check against the maximum image
dimensions when we handle "display resize" commands and emit errors
if they are beyond the limit. Since we are not processing windowing
system events in this subclass, any display resize event must synchronously
cause the reshape() method to be called, and we mark _needRedraw = 1
so that the scene is immediately redrawn and the contents of the
off-screen buffer are again valid immediately upon return from the
"display resize" command.
* src/OpenGLPbufferDisplayDevice.h 1.2 (changed +7 -3)
* src/OpenGLPbufferDisplayDevice.C 1.3 (changed +29 -8)
Improve ordering of window creation operations, to assist with
specialization of the startup code into standard windows, and
off-screen Pbuffer rendering contexts.
* src/OpenGLDisplayDevice.C 1.194 (changed +4 -3)
Started reworking the OpenGL Pbuffer initialization to better match the
structure of the other OpenGL display subclasses.
Lots of cleanup and elimination of early test code.
* src/OpenGLPbufferDisplayDevice.C 1.2 (changed +25 -55)
|
| | 2013-04-23 | johns | Imported the latest version of the WorkForce threads code from
Tachyon 0.99b6. This code import includes everything from Tachyon
to make it easier to keep VMD in sync with Tachyon now that
the Tachyon WorkForce threads code includes atomic ops and other
features that may prove to helpful in VMD as well.
* src/WKFThreads.h 1.10 (changed +127 -3)
* src/WKFThreads.C 1.16 (changed +435 -10)
|
| | 2013-04-17 | johns | Implemented a new RenderManDisplayDevice::trimesh_c4u_n3b_v3f() method to
reduce size of exported models.
* src/RenderManDisplayDevice.h 1.28 (changed +3 -1)
* src/RenderManDisplayDevice.C 1.57 (changed +77 -3)
Set appropriate output precision for colors and surface normals in
triangle mesh primitives.
* src/Vrml2DisplayDevice.C 1.42 (changed +9 -9)
* src/TachyonDisplayDevice.C 1.123 (changed +12 -12)
Set appropriate output precision for colors and surface normals in
triangle mesh primitives. Fixed two typos.
* src/RenderManDisplayDevice.C 1.58 (changed +7 -7)
Set appropriate output precision for surface normals in triangle mesh
primitives.
* src/X3DDisplayDevice.C 1.44 (changed +9 -9)
|
| | 2013-04-16 | johns | Begin elimination of unnecessary copies and vertex buffering in the
POV3 export code.
* src/POV3DisplayDevice.C 1.118 (changed +6 -5)
Continued elimination of unnecessary complexity in
POV3DisplayDevice::trimesh_c4u_n3b_v3f().
* src/POV3DisplayDevice.C 1.121 (changed +5 -83)
Continued elimination of unnecessary vertex buffering and copying.
* src/POV3DisplayDevice.C 1.120 (changed +52 -8)
Cranked version
* configure 1.1252 (changed +1 -1)
Fixed color array indexing for X3DDisplayDevice::trimesh_c4u_n3b_v3f()
* src/WavefrontDisplayDevice.C 1.27 (changed +24 -15)
Further simplification of trimesh_c4u_n3b_v3f(), specifically in the
vertex color state compression loop.
* src/POV3DisplayDevice.C 1.122 (changed +22 -52)
Implemented a new Vrml2DisplayDevice::trimesh_c4u_n3b_v3f() method to
reduce size of exported VRML 2.0 (aka VRML97) models.
* src/Vrml2DisplayDevice.h 1.27 (changed +3 -1)
* src/Vrml2DisplayDevice.C 1.41 (changed +75 -3)
Implemented an optimized trimesh_c4u_n3b_v3f() method for POV-Ray scene exports
to avoid unwieldy scene file sizes on disk. While implementing, it became clear
that the existing triangle mesh implementation trimesh_c4n3v3() that this
routine is derived from could be greatly improved. The current implementations
of both trimesh_c4n3v3() and trimesh_c4u_n3b_v3f() buffer vertex array data
internally for no obvious reason. They should both be rewritten one more time
to avoid unnecesssary copies and buffering.
* src/POV3DisplayDevice.h 1.46 (changed +3 -1)
* src/POV3DisplayDevice.C 1.117 (changed +209 -1)
Implemented an optimized trimesh_c4u_n3b_v3f() method for Wavefront OBJ
files to avoid unwieldy scene file sizes on disk.
* src/WavefrontDisplayDevice.h 1.14 (changed +3 -1)
* src/WavefrontDisplayDevice.C 1.26 (changed +71 -1)
Implemented an optimized trimesh_c4u_n3b_v3f() method for X3D and
for X3Dom files to avoid unwieldy scene file sizes on disk.
* src/X3DDisplayDevice.h 1.12 (changed +3 -1)
* src/X3DDisplayDevice.C 1.42 (changed +82 -1)
Reduced the decimal precision of surface normals emitted by the
trimesh_c4u_n3b_v3f() method since they originate in an
already heavily quantized signed-byte representation used in OpenGL.
* src/POV3DisplayDevice.C 1.123 (changed +2 -2)
Rewrote POV3DisplayDevice::trimesh_c4n3v3() to avoid unnecessary
copying of vertex buffers and eliminated code that was amplifying
the total number of emitted vertices unnecessarily. This version
eliminates the color table compression scheme used in the previous
implementation, but it generates meshes that are at 30% smaller
in many cases. We could reinstantiate the color table compression
code, since the POV-Ray mesh2 primitive uses independent indexing for
vertex coordinates and vertex colors.
* src/POV3DisplayDevice.C 1.124 (changed +101 -1)
Set appropriate output precision for colors and surface normals in triangle
mesh primitives. In particular, reduced the decimal precision of surface
normals emitted by the trimesh_c4u_n3b_v3f() method since they originate
in an already heavily quantized signed-byte representation used in OpenGL.
* src/X3DDisplayDevice.C 1.43 (changed +7 -23)
Set appropriate output precision for surface normals in triangle mesh
primitives. In particular, reduced the decimal precision of surface
normals emitted by the trimesh_c4u_n3b_v3f() method since they originate
in an already heavily quantized signed-byte representation used in OpenGL.
* src/TachyonDisplayDevice.C 1.122 (changed +7 -7)
Set appropriate output precision for surface normals in triangle mesh
primitives. In particular, reduced the decimal precision of surface
normals emitted by the trimesh_c4u_n3b_v3f() method since they originate in an
already heavily quantized signed-byte representation used in OpenGL.
* src/WavefrontDisplayDevice.C 1.28 (changed +6 -6)
Updated comments about redundant color state compression
* src/POV3DisplayDevice.C 1.119 (changed +5 -9)
|
| | 2013-04-12 | johns | Added comment regarding the opportunity to streamline the regeneration of
nucleotide representations with the use of on-demand updated acceleration
data structures.
* src/DrawMolItemRibbons.C 1.144 (changed +15 -1)
Soon the PDB will begin allowing structures that have at least
two character chain IDs. Our own HIV structure (PDB code 3J3Q)
requires this, and since we already have file formats in VMD that can
accomodate larger chain IDs, this allows VMD to load the HIV structure
in the way we expect that it will eventually be exposed by the PDB
when they begin using their new file formats for large structures.
The downside of this change is that it may cost 1-byte per atom more than
the previous approach, which for 100M atom structures is 100MB more memory.
A cursory inspection of the current atom struct indicates that compilers
that preserve alignment of structure members may see no net change in
memory footprint since we end up on proper 1-byte, 2-byte, and 4-byte
word boundaries for the Atom members up to and including the chain index.
Now that we allow multi-character chain IDs in VMD itself, we will have
to add safety checks in the molfile plugins that use the chain field so
they don't create bogus files for formats that have a fixed chain ID
field width.
* src/Atom.h 1.62 (changed +2 -2)
Sorted the nucleotide residue matching tests so we don't start trying to
match AMBER-specific residue names until we have failed to match others.
This will help maintain performance for animation of very large structures
that don't happen to use AMBER naming conventions. There are 2.4 times
as many AMBER residue name combinations to check for, so we check
them last rather than first.
* src/DrawMolItemRibbons.C 1.143 (changed +46 -39)
Updated the code that displays nucleotide cylinders so it recognizes
the AMBER residue names.
* src/DrawMolItemRibbons.C 1.142 (changed +139 -42)
|
| | 2013-04-09 | johns | Added explicit cast to please MSVC
* src/DrawMolItem.C 1.340 (changed +2 -2)
Cranked version
* configure 1.1251 (changed +1 -1)
Improved floating point consistency to please MSVC
* src/msmpot_setup.c 1.5 (changed +7 -7)
* src/Isosurface.C 1.46 (changed +3 -3)
|
| | 2013-04-08 | johns | Fixed a bug that could cause incorrect renderings of scenes using
the new "pointlight" advanced lighting features when a directional
light with the same index was not turned on. There was a typo in the
code that propagated advanced light state from the Scene data structures
into the FileRenderer data structures that was reading the directional
light on/off state rather than the advanced light on/off state.
* src/Scene.C 1.87 (changed +7 -7)
Improved floating point consistency to please MSVC
* src/MobileInterface.C 1.41 (changed +5 -5)
|
| | 2013-04-05 | johns | Cast sendto() buffer parameter in send_dgram() to const char * when compiling
on the Win32 platform. On other platforms the type of the sendto() buffer
varies, so conditional compilation is used for the time being.
* src/MobileInterface.C 1.40 (changed +3 -3)
Improve floating point consistency to please MSVC
* src/VolumeTexture.C 1.15 (changed +3 -3)
|
| | 2013-04-03 | johns | Cranked version
* configure 1.1250 (changed +1 -1)
Eliminate rounding since it's not truly needed for the MDFF calculations.
* src/QuickSurf.C 1.83 (changed +1 -5)
Moved and sized the Isosurface rep controls around to make better
use of the available space.
* src/GraphicsFltkReps.h 1.129 (changed +4 -4)
Replaced hard coded conditional compilation tests with macro tests for
VMDUSESVMLEXP and VMDUSEFULLEXP, to make it convenient to compare the
performance of our fast hand-vectorized exponential approximation routines
against the Intel SVML (short vector math library) and against the standard
full-precision math library exp() / expf() routines.
* src/QuickSurf.C 1.86 (changed +50 -43)
Updated QuickSurf vmd_gaussdensity() routine to support
MDFF atomic number weighted density maps.
* src/QuickSurf.C 1.84 (changed +16 -17)
Updated the SSE and AVX code paths in QuickSurf vmd_gaussdensity_opt() and
vmd_gaussdensity_threaded() to support MDFF atomic number weighted
density maps.
* src/QuickSurf.C 1.85 (changed +62 -7)
|
| | 2013-03-29 | johns | Cranked version
* configure 1.1249 (changed +1 -1)
Rewrote several key methods in VolumetricData and Isosurface to allow
visualization of huge density maps that previously triggered problems
with integer wraparound due to huge voxel index values.
* src/VolumetricData.h 1.30 (changed +4 -4)
* src/VolumetricData.C 1.34 (changed +12 -7)
* src/Isosurface.h 1.27 (changed +3 -3)
* src/Isosurface.C 1.45 (changed +16 -16)
Updated the multi-core CPU code path for QuickSurf to use a better heuristic
based on available physical memory when rendering huge density maps on
multiple CPU cores. We limit the number of worker threads (current
algorithm uses thread-private density maps) so we don't exhaust the
overall free physical memory.
The new core-free heuristic has one weakness in that we might have a
32-bit version of VMD running on a 64-bit machine, where the available
physical memory may be much larger than is possible for a
32-bit VMD process to address. To do this properly we must therefore
use conditional compilation safety checks here until we have a better
way of determining this with a standardized helper routine.
* src/QuickSurf.C 1.82 (changed +33 -10)
|
| | 2013-03-28 | johns | Added rounding to nearest whole grid point for the CPU density
scattering loops for better MDFF results.
* src/QuickSurf.C 1.80 (changed +13 -9)
Began adding MDFF atomic number density map support into QuickSurf
* src/QuickSurf.C 1.81 (changed +23 -1)
|
| | 2013-03-27 | johns | Fixed incomplete change for user-defined OpenGL MSAA sample count override.
* src/OpenGLDisplayDevice.C 1.193 (changed +30 -16)
|
| | 2013-03-17 | johns | Cranked version
* configure 1.1248 (changed +1 -1)
Updated the ARM NEON SIMD ifdefs with the correct compiler checks
* src/utilities.C 1.165 (changed +4 -6)
|
| | 2013-03-15 | johns | Added an ARM Neon 4-way SIMD vector implementation of minmax_1fv_aligned().
* src/utilities.C 1.163 (changed +81 -9)
Added deeply-unrolled version of the minmax_1fv_aligned() inner loop.
* src/utilities.C 1.164 (changed +32 -2)
|
| | 2013-03-14 | kvandivo | Change the way that data was getting written into send buffer so that
it works correctly for non char/char*. Sending strings > 256 bytes
exposed the bug.
* src/MobileInterface.h 1.13 (changed +2 -2)
* src/MobileInterface.C 1.39 (changed +22 -17)
Very minor formatting change. Not important
* src/androidvmdstart.C 1.5 (changed +3 -3)
|
| | 2013-03-12 | johns | Change our default MSAA request to 4 samples per pixel, as this is what
most drivers have been providing up until now. We'll have to do much more
performance testing with the latest drivers to determine if we can push
this to 8 samples per pixel by default.
* src/OpenGLDisplayDevice.C 1.192 (changed +2 -2)
Increased default resolution of representations. The last increase
of resolution defaults was back in 2009, and modern GPUs have gotten
tremendously faster since then. This will cost 20% to 40% more
display performance for very large structures, but since the majority
of the user community are working on molecules under a million atoms,
it's a better default for modern GPUs. People working on large structures
are generally more skilled at managing rendering performance issues
and will know how to change their personal defaults using the
"mol default" commands.
* src/GraphicsFltkReps.h 1.128 (changed +10 -10)
* src/AtomRep.C 1.127 (changed +6 -6)
Moved the CUDA molecular orbital function prototype into its own header
file, in preparation for the significant changes required to enable
computing marching cubes from the wavefunction grid in-place rather than
copying to host memory. The orbital representation will need to be
refactored following the same general scheme that is used for QuickSurf,
with the caller passing in the desired isovalue(s) and a VMDDisplayList
pointer so that the extracted isosurface can be added directly.
* src/CUDAOrbital.h 1.1 (added +44 -0)
* src/CUDAKernels.h 1.52 (changed +0 -16)
Updated for relocation of CUDA-accelerated molecular orbital prototypes.
* src/Orbital.C 1.128 (changed +2 -2)
|
| | 2013-03-11 | johns | Eliminated the old version of the CUDA kernel function prototype
for QuickSurf.
* src/CUDAKernels.h 1.51 (changed +1 -13)
Pretty
* src/Orbital.h 1.37 (changed +2 -2)
|
| | 2013-03-07 | johns | Added comment about stereoscopic display support to the VMD startup
warning it prints when the X11 'Composite' extension is detected.
* src/OpenGLDisplayDevice.C 1.190 (changed +3 -2)
Changed the default maximum OpenGL multisample antialiasing sample depth
we request down to 8 (was previously 16) and allow the user to override
the maximum sample depth through a new VMDMAXAASAMPLES environment variable.
* src/OpenGLDisplayDevice.C 1.191 (changed +14 -1)
Eliminated unimplemented cone stubs in LibGelatoDisplayDevice
* src/LibGelatoDisplayDevice.C 1.15 (changed +1 -16)
Eliminated unnecessary polymorphism among triangle mesh methods.
Having triangle mesh methods with the same name just served to make
it difficult to track down which FileRenderer subclasses were using
the fall-back code path and which ones had their own optimized
triangle mesh implementations.
* src/FileRenderer.h 1.120 (changed +8 -8)
* src/FileRenderer.C 1.171 (changed +7 -7)
Fixed a typo in the docs for the VMDMACENABLEEEXTENSIONS
environment variable. Added documentation for the VMDMAXAASAMPLES
environment variable.
* doc/ug_exec_env.tex 1.56 (changed +11 -3)
Implemented an optimized trimesh_c4u_n3b_v3f() method for Tachyon to
avoid unwieldy scene file sizes on disk.
* src/TachyonDisplayDevice.h 1.44 (changed +3 -1)
* src/TachyonDisplayDevice.C 1.121 (changed +65 -1)
Miscellaneous cleanup of FileRenderer subclasses to prune dead code,
update old variants of the cone() method to the current API, and
rename the polymorphic two-radius variant of cone() to cone_trunc() for
clarity when reading these implementations.
* src/X3DDisplayDevice.h 1.11 (changed +2 -2)
* src/X3DDisplayDevice.C 1.41 (changed +2 -2)
* src/VrmlDisplayDevice.h 1.26 (changed +2 -2)
* src/VrmlDisplayDevice.C 1.38 (changed +2 -2)
* src/Vrml2DisplayDevice.h 1.26 (changed +2 -2)
* src/Vrml2DisplayDevice.C 1.40 (changed +2 -2)
* src/RenderManDisplayDevice.h 1.27 (changed +2 -2)
* src/RenderManDisplayDevice.C 1.56 (changed +2 -2)
* src/RayShadeDisplayDevice.h 1.27 (changed +2 -2)
* src/RayShadeDisplayDevice.C 1.45 (changed +2 -2)
* src/RadianceDisplayDevice.h 1.31 (changed +2 -3)
* src/RadianceDisplayDevice.C 1.46 (changed +5 -10)
* src/POV3DisplayDevice.h 1.45 (changed +2 -2)
* src/POV3DisplayDevice.C 1.116 (changed +2 -2)
* src/FileRenderer.h 1.121 (changed +8 -5)
* src/FileRenderer.C 1.172 (changed +3 -3)
* src/ArtDisplayDevice.h 1.24 (changed +2 -2)
* src/ArtDisplayDevice.C 1.35 (changed +2 -3)
Pretty
* src/FileRenderer.h 1.122 (changed +2 -1)
|
| | 2013-03-04 | johns | Added SM 3.0, SM 3.5, and Compute 3.0 build targets to the default CARMA build.
* configure 1.1247 (changed +3 -0)
Cranked version
* configure 1.1246 (changed +1 -1)
Enable ACTC and LIBTACHYON options for CARMA builds
* Makefile 1.97 (changed +2 -2)
|
| | 2013-02-28 | johns | Added a set of full OpenGL-enabled and CUDA-enabled ARM build flags
for the NVIDIA CARMA boards.
* Makefile 1.96 (changed +4 -1)
Force Linux ARM builds for the SECO/NVIDIA CARMA boards to use Tcl/Tk 8.6.0
since ARM-native builds against the older 8.5.x series crash with
internal memory corruption errors deep inside the Tcl library.
* configure 1.1245 (changed +5 -0)
|
| | 2013-02-27 | kvandivo | Added more functions that can be called from the native code side
to interact with the android side.
getMessage - get a string message from the android side, blocking
getMessageNonBlock - get a string message from android side if exists, else
return zero.
getNumMessages - returns number of waiting messages
Added internal caching of function name lookups so that it doesn't have
to be done with each call.
Put the global vars in a single struct to simplify passing.
* src/androidvmdstart.C 1.4 (changed +108 -32)
|
| | 2013-02-27 | johns | Applied Bill Sherman's patches to the FreeVR implementation that allow
renderinfo params to be passed into the ::draw() method, enable
user navigation within the world (separate from the wand), and added
various FreeVR self-help routines during startup.
* src/VMDApp.C 1.497 (changed +12 -2)
* src/FreeVRScene.h 1.28 (changed +2 -1)
* src/FreeVRScene.C 1.39 (changed +28 -2)
* src/FreeVRRoutines.h 1.13 (changed +5 -2)
* src/FreeVRRoutines.C 1.22 (changed +11 -5)
* src/FreeVRDisplayDevice.C 1.31 (changed +100 -1)
Cranked version
* configure 1.1244 (changed +1 -1)
Fix an underzealous safety check (overzealous optimization) that prevents
non-orthogonal isosurfaces from being sent into the orthogonal-only branch
of the CPU-based Marching Cubes implementation.
* src/Isosurface.C 1.44 (changed +6 -13)
Fixed a small bug in the AVX/SSE alignment loops that could cause
find_last_selection_aligned() to miss the index of the last selected
atom if it happened to fall on a 16-byte or 32-byte boundary. The
corrected code always tests the current atom index first, before dropping
into the hand-vectorized AVX/SSE loops, even when it falls on a boundary.
* src/utilities.C 1.162 (changed +11 -3)
|
| | 2013-02-25 | johns | Cranked version
* configure 1.1243 (changed +1 -1)
Updated the implementation of minmax_3fv_aligned() to cope with unaligned
input arrays that are only 8-byte aligned, occuring mainly on 32-bit linux.
Added a prep loop that rolls up to the first 16-byte-aligned boundary
and then begins using SSE. Also updated the implementation of
minmax_selected_3fv_aligned() so that it uses an unaligned load of the
'on' flags array, so that we get better performance in the cases where
the flags array and coordinates array have alignments that are mutually
exclusive and cannot be rectified. The unaligned load of the flags array
gives a small penalty in the ideal case where both input buffers happen
to have compatible alignments, but it gives much better average case
performance since it handles the other half of cases with much higher
performance than the "prep" loop would.
* src/utilities.C 1.161 (changed +48 -11)
|
| | 2013-02-21 | johns | Began rewriting minmax_selected_3fv_aligned() to cope with input buffers
that are only 8-byte aligned, which crop up on 32-bit Linux (and likely
also on other 32-bit platforms). The new code loops over the array
until it detects properly aligned coefficient addresses, and then begins
using SSE instructions to operate on larger vectors from then on.
There are cases where the two input buffers have incompatible alignment,
and we can only either fix this by changing our memory allocation code
throughout, or we can give up on doing aligned loads of one of the operands
(likely the selection flags array) and only demand alignment for the array
of atom coordinates.
* src/utilities.C 1.160 (changed +32 -18)
|
| | 2013-02-20 | kvandivo | Changed default mode to off, but will follow up with change to plugin
code turning on when gui is displayed.
* src/MobileInterface.C 1.38 (changed +3 -3)
Moved code into fct and changed default activity to move when the plugin
loads to be more natural
* src/MobileInterface.h 1.12 (changed +7 -1)
* src/MobileInterface.C 1.37 (changed +39 -23)
|
| | 2013-02-19 | johns | Further tests on 32-bit Linux machines have demonstrated that we cannot
trust malloc() to return 16-byte aligned blocks, despite the fact that
SSE is quite prevalent. A google search shows that there were wars fought
about SSE-related 16-byte alignement on the GNU glibc bug tracking lists
circa 2004 and earlier, and that the result has been that GNU's implementation
of malloc() won't guarantee greater than 8-byte alignment on x86 anytime soon.
* src/utilities.C 1.157 (changed +33 -1)
Started writing more startup loops for misaligned buffer handling
in the fast SSE-vectorized atom selection acceleration routines
since we can't trust malloc to provide sufficiently aligned memory blocks.
* src/utilities.C 1.159 (changed +36 -11)
Updated the 128-bit SSE-oriented is_16byte_aligned() routine to remove
alternate code, and added a new is_32byte_aligned() test for 256-bit AVX,
and is_64byte_aligned() routine for LRB/MIC 512-bit vector instructions.
* src/utilities.C 1.158 (changed +18 -11)
|
| | 2013-02-11 | johns | Changed minmax_selected_3fv_aligned() to return 0 if at least one atom
was selected, or -1 if no atoms selected or some other problem occured.
* src/utilities.h 1.105 (changed +6 -4)
* src/utilities.C 1.156 (changed +6 -4)
Improved const correctness of vectorized atom selection accelerator routines.
* src/utilities.h 1.104 (changed +5 -5)
* src/utilities.C 1.155 (changed +4 -4)
Let the Intel compiler autovectorize the count loop, but use the
hand-coded SSE for GCC, since it doesn't do as well otherwise.
* src/utilities.C 1.154 (changed +6 -2)
Rewrote analyze_selection_aligned() to use find_last_selection_aligned()
to determine the last selected atom, since we can use AVX instructions
for searching even in the case that we don't have AVX2 instructions for
counting them. The new code has better selection counting performance since
it doesn't have to also track the last selected atom during counting.
* src/utilities.C 1.153 (changed +11 -34)
Rewrote measure_minmax() to use the vectorized atom selection analysis
acceleration routines. To achieve peak perf, we will need to reimplement
the inner loops with both radii-padded and non-radii-padded variants
of minmax_selected_3fv_aligned().
* src/Measure.C 1.136 (changed +15 -6)
Rewrote the atom selection processing loops in ParseTree::eval_mathop()
to use the find_last_selection_aligned() vectorized selection acceleration
bound determination helper routine.
* src/ParseTree.C 1.142 (changed +11 -9)
|
| | 2013-02-08 | johns | Added AVX loops for the atom selection bound determination routines.
* src/utilities.C 1.152 (changed +48 -5)
Added a workaround for CARMA boards, since the the first rev of the
ARM-native CUDA compiler toolchain reports CUDA 5.5, but the matching
driver version reports version 5.0.
* src/CUDAUtil.cu 1.37 (changed +9 -2)
Fix a typo in the 4-way reduction in the SSE max helper routine
* src/utilities.C 1.151 (changed +2 -1)
|
| | 2013-02-07 | johns | Added LINUXCARMA to make_distrib rules
* make_distrib 1.79 (changed +6 -2)
Added code to check for CARMA-specific Linux binaries in the
VMD startup scripts
* bin/vmd.sh 1.12 (changed +4 -1)
* bin/vmd.csh 1.96 (changed +3 -1)
Cranked version
* configure 1.1242 (changed +1 -1)
Enable CUDA by default for CARMA builds
* Makefile 1.95 (changed +2 -2)
|
| | 2013-02-06 | johns | Added an initial build configuration for SECO/NVIDIA CARMA
* configure 1.1239 (changed +14 -1)
Added build rules for SECO/NVIDIA CARMA board
* Makefile 1.94 (changed +4 -1)
Change find_first_selection_aligned() and analyze_selection_aligned() so
that firstsel is initialized to 0, and lastsel to -1, so that if we
fail to analyze the selection, the results are set in such a way that
loops that don't check the return code carefully will correctly operate
as a "no selection" case.
* src/utilities.C 1.149 (changed +7 -6)
Eliminated unused variable.
* src/AtomSel.C 1.168 (changed +2 -2)
Eliminated unused variables.
* src/utilities.C 1.150 (changed +3 -3)
Fix CUDA build flags for ARM (NVIDIA/SECO CARMA board)
* configure 1.1240 (changed +6 -0)
Force inclusion of thrust/device_ptr.h to prevent compilation errors with
newer versions of the CUDA toolkit (in particular on CARMA).
* src/CUDAQuickSurf.cu 1.69 (changed +3 -2)
* src/CUDAMarchingCubes.cu 1.27 (changed +2 -1)
Turn on hardware FP for CARMA builds
* configure 1.1241 (changed +2 -2)
Updated comments in AtomSel::change() regarding default assignment of
firstsel and lastsel prior to actually analyzing the atom selection.
* src/AtomSel.C 1.167 (changed +3 -3)
|
| | 2013-02-05 | johns | Added find_first_selection_aligned() to the header
* src/utilities.h 1.101 (changed +6 -1)
Added new SSE-vectorized find_last_selection_aligned() routine to
rapidly find the last selected atom. Also rewrote parts of
find_first_selection_aligned() so they are both more legible.
Both routines can probably be made faster by eliminating the
use of _mm_cmpeq_epi32(mask) and simply calling hor_m128i(on4) instead,
since we don't really care which atom it was, and we're not counting, but
only locating the first and last selected atoms in these cases.
* src/utilities.h 1.102 (changed +4 -1)
* src/utilities.C 1.147 (changed +62 -15)
Eliminating the use of _mm_cmpeq_epi32(mask) in find_first_selection_aligned()
and find_last_selection_aligned() since we don't really care which atom was
selected in the 4-way hand-vectorized loop, We only need to know that one of
the four elements was selected, and we use a short 4-iteration scalar loop
to determine which element was actually the first/last. The new code simply
calls hor_m128i(on4) to do a bitwise-OR of the 4 input flags and return the
result as a scalar quantity that we test in order to exit the loop.
* src/utilities.C 1.148 (changed +3 -9)
Fix typo
* src/utilities.h 1.103 (changed +2 -2)
Misc cleanup before rewriting various loops to use helper functions
that take advantage of x86 SSE vector intrinsics.
* src/ParseTree.C 1.134 (changed +3 -2)
Rewrote all of the atom selectop loops in ParseTree::eval_key() so they
use firstsel/lastsel loop bounds that are predetermined by calls to
the SSE-vectorized find_first_selection_aligned() and
find_last_selection_aligned() routines. There is still an opportunity to
pick up more speed by migrating the loop bound determination earlier,
prior to the SymbolTable keyword_xxx() calls. Doing so could be
used to trim the loop bounds on the inner loops of those operations as well,
although the API has to change to allow for this.
* src/ParseTree.C 1.141 (changed +36 -35)
Rewrote same_double() to use the SSE-vectorized analyze_selection_aligned()
routine to compute the first and last selected atoms and the count, which
are then used to allocate temporary working buffers, and to trim the
index range of the subsequent atom selection processing loop that builds
the unique string hash table.
* src/ParseTree.C 1.138 (changed +16 -7)
Rewrote same_int() to use the SSE-vectorized
find_first_selection_aligned() routine, eliminated some unnecessary
array traversal, and noted opportunities for further efficiency improvements
with the addition of some new SSE atom selection loops. The same_int()
algorithm builds a sparse lookup table with a size that is determined by
the difference between the minimum and maximum integer values
associated with selected atoms stored in the incoming subselection array.
In cases where the array has large maxima and small minima, but few other
values in between, the existing approach will use a massive amount of memory
for what could be done much more space-efficiently with a hash table.
* src/ParseTree.C 1.137 (changed +25 -18)
Rewrote same_int() to use the SSE-vectorized find_last_selection_aligned()
routine to trim the index range used by loops that compute the min/max values
and subsequently process the atom selection arrays.
* src/ParseTree.C 1.139 (changed +14 -5)
Speed up ParseTree::eval_mathop() by calling the specialized
find_first_selection_aligned() routine and trimming the range of
indices that have to be processed by the individual mathop loops.
* src/ParseTree.C 1.135 (changed +40 -34)
Split out the SSE-vectorized first-selection finder loop from
analyze_selection_aligned() into a separate function,
find_first_selection_aligned(), so it can be called by several of
the ParseTree routines that currently have to traverse the selection
flags up to the first selection, before doing more sophisticated operations.
* src/utilities.C 1.146 (changed +22 -8)
Started optimizing ParseTree::eval_key(). Replaced old loop conditions with
more common and easy-to-read variants. Replaced old and inefficient loops
in the code for handling the SymbolTableElement::IS_INT case with a call
to the SSE-vectorized find_first_selection_aligned() routine and misc cleanup.
Auditing the code, we should be able to significantly improve the performance
of several areas of the code by making broader use of predetermination
of the first/last selection indices before entering the selection processing
loops, and using that information to trim the index range that the
loops must traverse.
* src/ParseTree.C 1.140 (changed +36 -15)
Updated same_int() to call find_first_selection_aligned() instead of its
own inline loop. Added comments to mark other spots where we could
benefit from a fast SSE-vectorized routine.
* src/ParseTree.C 1.136 (changed +7 -4)
|
| | 2013-02-04 | johns | Use the new minmax_selected_3fv_aligned() routine for fast determination
of the atom selection bounding box.
* src/QuickSurf.C 1.79 (changed +15 -1)
|
| | 2013-02-01 | johns | Changed analyze_selection_aligned() to return -1 if no selection was found,
so that the caller doesn't have to separately test the value of lastsel.
* src/utilities.C 1.145 (changed +2 -2)
Updated the atom selection AtomSel::change method to use the new
hand-vectorized SSE analyze_selection_aligned() instead of the old
inline for loops. Compilers such as Intel C/C++ and GCC tend to
be incapable of effectively autovectorizing code like this
containing various comparison/branching type operations, so
hand-vectorization is currently the most effective strategy.
The SSE analyze_selection_aligned() routine
outruns the old loops by 2x to 3x depending on the compiler version
and the CPU generation, thereby reducing that saved runtime off of
every atom selection creation or update operation. This is particularly
helpful for analysis scripts operating on large molecular complexes
(millions of atoms), where the runtime for one of the atom selection
steps is long enough to be a concern, but not long enough to warrant the
overhead of waking/syncing or spawning/joining multiple worker threads
or the attendant software complexity involved in managing them.
* src/AtomSel.C 1.166 (changed +8 -2)
|
| | 2013-01-31 | johns | Added SSE selection helper for 128-bit integer vectors
* src/utilities.C 1.139 (changed +11 -1)
Added fully unrolled SSE-based 32-iteration loop for minmax_1fv_aligned()
* src/utilities.C 1.134 (changed +31 -2)
Added minmax_selected_3fv_aligned() to the header and simplified conditional
compilation of the SSE code for automated correctness and performance testing.
* src/utilities.h 1.99 (changed +8 -1)
* src/utilities.C 1.141 (changed +9 -7)
Added several SSE vector reduction helper routines, and continued
development of minmax_selected_3fv_aligned().
* src/utilities.C 1.137 (changed +43 -9)
Added vectorized selection logic to SSE inner loop for minmax_selected_3fv_aligned()
* src/utilities.C 1.140 (changed +7 -7)
Continued development of the SSE code path for minmax_selected_3fv_aligned()
* src/utilities.C 1.138 (changed +6 -6)
* src/utilities.C 1.136 (changed +4 -4)
Corrected a typo in analyze_selection_aligned(), improved traversal
performance with early-exit of innermost loop iterations on empty
selection vectors, and improved comments.
* src/utilities.C 1.144 (changed +9 -7)
Eliminated the old inline SSE code for horizontal vector minima/maxima
calculations in favor of the new fmin_m128() and fmax_m128() routines.
* src/utilities.C 1.135 (changed +1 -23)
Eliminated unused variables
* src/QuickSurf.C 1.78 (changed +1 -3)
Implemented a new atom selection acceleration routine, analyze_selection_aligned(),
which contains a hand-coded SSE loop for locating the first selected atom,
last selected atom, and the total count of selected atoms. When completely tested,
this will replace the inlined loops that perform the same function in AtomSel,
which will improve our overall atom selection performance since this work is
performed at the end of every atom selection.
* src/utilities.h 1.100 (changed +4 -0)
* src/utilities.C 1.143 (changed +105 -1)
Make array indexing prettier in minmax_3fv_aligned()
* src/utilities.C 1.142 (changed +3 -3)
|
| | 2013-01-30 | johns | Added minmax_3fv_aligned() to the utilities header.
* src/utilities.h 1.98 (changed +5 -1)
Added safety checks to vector minmax routines
* src/utilities.C 1.132 (changed +8 -1)
Fix minor nits in the minmax_3fv_aligned() routine.
* src/utilities.C 1.131 (changed +7 -3)
Implemented more hand-vectorized accelerator routines for computing
bounding boxes for groups of atoms, and a first-cut draft of one of the
versions that also handles atom selections.
* src/utilities.C 1.133 (changed +157 -4)
Updated 3-element vector min/max routine with plain C fallback and
corrected a few remaining issues. Still needs complete testing.
* src/utilities.C 1.129 (changed +54 -31)
Updated bond search code to use minmax_3fv_aligned() instead of the old
find_minmax_all() routine.
* src/BondSearch.C 1.71 (changed +5 -1)
Updated minmax_3fv_aligned() to handle vec3 array sizes that aren't a
multiple of three vec4s.
* src/utilities.C 1.130 (changed +17 -15)
|
| | 2013-01-29 | johns | Added hand-coded SSE radii minmax loop. We should probably refactor this
into a more generally usable minmax routine so it can be applied to
any of the 1-D scalar arrays. Arrays of vectors in AOS format will
need special handling, and traversals that involve atom selections
will be significantly more complex to implement.
* src/BaseMolecule.h 1.135 (changed +44 -2)
Enable both of the QuickSurf SSE code paths by default.
* src/QuickSurf.C 1.77 (changed +2 -2)
Migrated the 16-byte-aligned vectorized minmax loop out of BaseMolecule and
into a new minmax_1fv_aligned() routine in utilities, so it can also be
called by the VolumetricData class, and other routines operating on simple
arrays of scalar single-precision quantities. We will also benefit from
having a similar routine for arrays of 3-element single-precision vectors
(e.g. atom coordinates, etc), and for cases that involve atom selections.
* src/utilities.h 1.97 (changed +5 -1)
* src/utilities.C 1.127 (changed +61 -1)
* src/VolumetricData.C 1.33 (changed +6 -1)
* src/BaseMolecule.h 1.136 (changed +7 -42)
Minor refactoring of 4-element min/max vector reduction operations into
helper functions, and began implementation of an on-the-fly SOA-to-AOS
aligned min/max routine for 3-element vectors.
* src/utilities.C 1.128 (changed +89 -1)
Updated color scale data range determination loops to use the new
fast minmax_1fv_aligned() routine rather than inline loops.
* src/AtomColor.C 1.102 (changed +14 -6)
Updated the AVX QuickSurf loop comments and added appropriate
conditional compilation tests to allow it to use the AVX2 integer
vector instructions when available. The use of AVX2 instructions should
eliminate the performance cost of AVX/SSE state transitions, and will make
it possible to write a more efficient shuffle sequence for the AOS-SOA
conversions required for the per-atom color loop, but they are not supported
on any CPUs that are shipping yet (Haswell will be the first CPU with AVX2).
* src/QuickSurf.C 1.76 (changed +13 -16)
Updated the COV calculation to take advantage of the firstsel/lastsel
selection indices when combining selections, and eliminated the need
to scan for the first selected atom, also by using the firstsel/lastsel info.
* src/DrawMolecule.C 1.140 (changed +22 -13)
|
| | 2013-01-28 | johns | Added higher performance SSE implementation of the QuickSurf inner loop
for per-atom colors. The new implementation uses SSE shuffle instructions
to perform on-the-fly SOA-to-AOS and AOS-to-SOA conversions during the
accumulation of colors into the 3-D texture map.
* src/QuickSurf.C 1.74 (changed +37 -1)
Implemented an AVX variant of the innermost loop of the QuickSurf density map
algorithm, using the fully-inlined exponential approximation. The AVX code
path currently has a very significant weakness due to the fact that the
AVX instruction set does not contain any instructions for operating on
integer types. The lack of support for integer types in AVX means that we
have to fall back to SSE instructions for the integer arithmetic required
for manipulating the base-2 exponents, but another problem with AVX is that
there is a significant AVX-to-SSE CPU state transition penalty that can only
be avoided by either forcing VEX encoding of all vector instructions
(including the older SSE instructions), or by calling _mm256_zeroupper() or
_mm256_zeroall() before executing SSE code that follows AVX. At present,
these issues prevent the hand-coded AVX loop from outperforming the SSE loop.
If we were willing to create a completely separate AVX function, we might be
able to force VEX encoding of the instructions and eliminate the AVX/SSE
transition penalty and get at least a modest speed boost. Since upcoming
CPUs support FMA3/FMA4 instructions that require further loop specialization,
it seems likely that we would get the greatest benefit from an AVX-specific
loop by waiting until we can also use FMA instructions, which significantly
reduce the number of FP instructions in the innermost loop. The first x86
hardware with FMA support is Haswell which is still 3 months out, at the
time of this writing.
* src/QuickSurf.C 1.72 (changed +150 -70)
Improved comments and readability of SSE SOA-AOS conversion block in the
texture map calculation code.
* src/QuickSurf.C 1.75 (changed +6 -7)
Prototype SSE implementation of the per-atom-colors version of the
innermost QuickSurf density/texture loop. The initial implementation
currently handles the texture color calculation using scalar instructions
since we work with 3-element color vectors. To implement this entirely
with SSE will require extensive use of shuffle instructions to work on
three vectors of four elements, where each of the three vectors contains
3 elements corresponding to one texel and 1 element corresponding to another.
* src/QuickSurf.C 1.73 (changed +106 -5)
|
| | 2013-01-25 | johns | Developed an alternative code path that uses Intel's SVML (short vector
math library) implementation of exp2f() for SSE __m128 types. Our inlined
exponential approximation code outruns Intel's SVML routine by a significant
margin currently, but it's nice to have an alternate code path for ease of
testing and for future papers that document our performance..
* src/QuickSurf.C 1.70 (changed +24 -10)
Further SSE optimization, and correction of one of the comments that
was referring to the bit masking steps that I already eliminated since
they are unnecessary for QuickSurf.
* src/QuickSurf.C 1.68 (changed +5 -5)
Further cleanup and optimization of the QuickSurf hand-coded SSE inner loop.
* src/QuickSurf.C 1.67 (changed +9 -6)
Prototype version of QuickSurf inner loop using Intel's AVX instructions.
The first draft version is using the Intel SVML (short vector math library)
implementation of exp2f(), which is quite a bit slower than our
hand-optimized exponential approximation implementation, so I need to
do a full AVX implementation of the inlined approximation before I can
make any meaningful performance comparisons against the SSE code path.
Another issue that also needs to be resolved is that we will have to do
runtime tests against the CPUID instruction to determine if it is safe
to execute the AVX code path, since AVX only exists in fairly recent
CPUs, and error free execution also requires an OS kernel that properly
saves and restores associated AVX machine state (registers, etc). For
now, I will simply take this opportunity to evaluate the benefits of AVX
for improving the performance of SIMD-friendly inner loops like the
ones in QuickSurf.
* src/QuickSurf.C 1.71 (changed +48 -5)
Removed the voxel masking since we should not encounter any density values
that drop below the ACUTOFF level within the radii of interest in QuickSurf.
* src/QuickSurf.C 1.66 (changed +3 -4)
Tweaked QuickSurf SSE-optimized loop condition test to prevent potential
issues with non-multiple-of-four loop trip counts and grid sizes, since
the non-SSE version of the loop does "cleanup" on any voxels not processed
by the SSE loop.
* src/QuickSurf.C 1.69 (changed +5 -2)
|
| | 2013-01-24 | johns | Change timestep color so we hit the endpoints of the color scale with
small timestep counts.
* src/AtomColor.C 1.101 (changed +6 -2)
Pretty
* src/Scene.h 1.61 (changed +2 -2)
Prototype of hand-coded SSE version of the QuickSurf density map inner loop
* src/QuickSurf.C 1.65 (changed +81 -2)
|
| | 2013-01-12 | johns | Corrected misplaced paren so that the max memory buffer heuristic behaves
correctly for 3-D textured surfaces.
* src/QuickSurf.C 1.64 (changed +2 -2)
|
| | 2013-01-09 | johns | Cranked version
* configure 1.1238 (changed +1 -1)
|
| | 2012-12-05 | johns | Fix truncation of leading char when no path separators are in the filename
* src/WavefrontDisplayDevice.C 1.25 (changed +5 -2)
|
| | 2012-11-07 | johns | Fix typo
* src/AtomParser.h 1.27 (changed +3 -3)
Implemented a depth-first variant of the atomparser_node destructor to
avoid blowing the stack when processing massive parse trees, e.g. containing
hundreds of thousands of residue IDs. The depth-first implementation is
simpler and should be faster than the breadth-first implementation,
but it is possible that it might use more memory in some unusual cases.
* src/AtomParser.h 1.28 (changed +61 -17)
|
| | 2012-11-06 | johns | Added pointer stack implementation for use in eliminating deep recursion
in the atom selection class destructor implementation
* configure 1.1237 (changed +1 -0)
Designed a prototype atomparser_node destructor implementation that avoids
recursion. The new implementation uses a combination of nested while
loop iteration and a self-managed pointer stack, allocated from the heap,
to perform a breadth-first traversal of the atomparser_node tree.
The breadth-first traversal begins by pushing the current node's children
onto an "old" stack. Once the first two children (if any) have been added
to the "old" stack, a while loop pops elements off of the old stack one at
a time, pushing any children for that node onto a "new" stack, and then
deleting the node. The new stack and old stack are swapped, and then the
same general process takes place until no more nodes are left. Each iteration
through the outermost while loop performs a traversal of one level of the
tree. The breadth-first implementation is trivial to implement and should
perform relatively well. It uses temporary memory on the same order
as the tree it is deleting however, so it could be better to implement
with a depth-first traversal. In the particularly problematic
deep recursion cases it is intended to solve, the breadth-first traversal is
probably using roughly the same memory as a depth-first traversal would.
* src/AtomParser.h 1.26 (changed +51 -1)
Simple pointer stack implementation to eliminate crashes caused by
deep recursion in atom selection desctructors
* src/ptrstack.h 1.1 (added +45 -0)
* src/ptrstack.c 1.1 (added +129 -0)
Updated CUDA flags for SM 3.5 on Blue Waters / Titan
* configure 1.1236 (changed +3 -3)
|
| | 2012-10-18 | johns | Added Johan to thanks list
* doc/vmd_ref.tex 1.71 (changed +4 -3)
Added our new NIGMS BTRC grant number in addition to the old one.
I will remove the old grant number information after the NIH reorganization
is complete and we're in the second full year of the new funding period.
* doc/vmd_title.tex 1.17 (changed +2 -2)
* doc/vmd_ref.tex 1.69 (changed +2 -2)
* doc/ig.tex 1.52 (changed +2 -2)
Applied a fix for an IMD force cancellation bug reported by
William Ray. The problem occurs in a relatively easily repeatable
manner when using the mouse to apply forces to residues or fragments.
The cause of the problem was twofold. The old code was using the wrong
index when trying to find and cancel non-ongoing forces in the list it
maintains, but by coincidence it happened to end up working in the
single-atom cases. The second part of the problem was that the wrong
force vector indices could end up being removed from the list due to
incorrect indices being sent to the ResizeArray remove() method, since
it shifts and re-packs the array after an element is removed.
This should fix the abberant behavior observed with the mouse-based
IMD interface. Thus far I haven't looked into why it didn't cause
similar problems with the 6DOF tracker based IMD interface, but the most
likely reason is that with the tracker interface the forces are negligible
or perhaps actually zero in many cases before the user releases the
active Tug Tool, thus hiding the symptoms of this bug in that specific case.
More testing will be needed to ensure there aren't any other corner cases
left out.
* src/Molecule.C 1.88 (changed +8 -5)
Began updating the VMD 1.9.2 README with up-to-date information.
* README 1.386 (changed +32 -135)
Changed android startup code to use dynamic query to determine the VMD
application data directory where startup scripts, plugins, and other
dependencies are stored after the initial install and first-run unzip.
* src/androidvmdstart.C 1.3 (changed +54 -6)
Pretty
* src/Matrix4.C 1.54 (changed +3 -3)
Replaced the special-case 2-atom and 3-atom alignment code in
myfit2 and myfit3 routines with updates from Josh Vermass that
corrected a typo and an incorrect assumption on the behavior of
Matrix4::multmatrix(). Specifically, myfit2 and myfit3 were
assuming the wrong behavior of multmatrix (that a.multmatrix(b)
is a=bxa instead of a=axb), the result of which being that the
translations and rotations were being applied in the wrong order.
* src/Measure.C 1.135 (changed +24 -19)
Updated NIH grant numbers, added thanks lines for recent contributors,
helpers, and bug reporters.
* doc/vmd_title.tex 1.18 (changed +3 -3)
* doc/vmd_ref.tex 1.70 (changed +7 -7)
* doc/ig.tex 1.53 (changed +3 -3)
Updated authors list
* configure 1.1235 (changed +2 -2)
|
| | 2012-10-17 | johns | Added ANDROIDARMV7A distrib target
* make_distrib 1.78 (changed +3 -2)
Added console output redirection for Android builds of VMD.
* src/vmdmain.C 1.9 (changed +14 -1)
* src/Inform.C 1.39 (changed +10 -1)
Added the Android specific VMD startup code to the default build.
* configure 1.1234 (changed +1 -0)
|
| Other commits are hidden... |