Skip to content


Software projects are listed in alphabetical order. Selected contributions are listed in reverse chronological order.


Description: home page, Wikipedia page.

Commits listed from repository on GitHub:


Description: home page.

Commits listed from repository on GitHub:


Description: home page, Wikipedia page.

Commits listed from doc repository on FreeBSD cgit:


Description: home page, Wikipedia page.

Commits listed from repository on GitLab:

  • commit 18d347fb0451242eec08a7c02286c6045e93c1d5: Cleaned up docs to use |Gromacs| substitution consistently and where appropriate


    The substitution doesn't work in preformatted source code and in links, so I avoided using it in these cases and fixed existing cases of wrong usage.

  • commit 8cadd7d248c88c2efc9f3e01b4ffd139cf395376: Renamed lambda parameters to avoid shadowing

  • commit 98a2339608e7250376fb9682797edb8c178a3450: Renamed type parameter of SelectionTreeElement class constructor to elemType to avoid shadowing
  • commit 3655b81c27d41b85c542af0b5067f57fd0a2874b: Renamed gmx_hw_info_t struct constructor parameters to avoid shadowing
  • commit 32255f4f818ce8d5cd7d0de70b11ac3c6698de8a: Renamed tMPI_Thread_start function to avoid shadowing the struct
  • commit 92aa6639f9d0b122a50ab50853499c26ae3895f0: Renamed gmx_rmpbc function to avoid shadowing the struct
  • commit 1b9e69bb160f3ee494413d0c45e1c7be75b5b348: Renamed global index type to Index to avoid shadowing
  • commit 0c9d3ec547e0581b7dc9dbe784e9eeb839453749: Renamed Index enum to AtomIndex to avoid shadowing
  • commit 32d2d3523967b89de6e8acc6bfacf6a8ae55b37b: Renamed real enum to realnum to avoid shadowing
  • commit 24b0f57aafb067abac9a2a2086d4b98b9d23a305: Renamed variables that hide variables from outer scope



    • parameter hides global variable
    • local variable hides global variable
    • loval variable hides parameter
  • commit ddbea6649b2f2ad278a715f3a438d5c161be7283: Removed debugging code in pull utilities

  • commit 28acfd1164dd14c5a1ef2aa85f05744ce4a7cd13: Fix building on Solaris with GCC


    GROMACS now compiles on Solaris x86, specifically illumos distribution openindiana. GCC complained about a missing sqrt() variant which was addressed with static_cast and linker complained about missing libsocket which was addressed with SunOS-specific entry in target_link_libraries.

    Refs #3050

    Change-Id: Ic14a9327fa353270ef0e787b4d2357e86e71da53

  • commit 1333a483d730aed0633c63c782374c3ad6bb10c9: Document matrix_convert function in PBC


    The brief documentation was in place, but the documentation of the function parameters was missing. This patch adds it and also fixes incorrect Doxygen syntax at pbc_dx_d.

    Change-Id: Ic897911bf4b8866bb7c4dc3aea982493cc03874c

  • commit 32da95724a333b6fb97055bea8de5687f54756f2: Document t_commrec struct


    Describe the mysim and mygroup MPI communicators and add a note about the communicator subsetting.

    Change-Id: I2d39bd6827da59db5b3c38bd33de6903e17d0d06

  • commit c33d8d64fa8c0fa27f6e429c24bf295c5eff5c61: Improve the "files not present" error message


    It's possible to use -deffnm in restarts even if it wasn't used in the initial simulation. This can lead to absurd situations such as:

    Expected output files not present or named differently: pullx.xvg pullf.xvg

    where pullx.xvg and pullf.xvg are present and named exactly as listed, but GROMACS expects them to be named as -deffnm requested.

    The improved error message suggest to the user to check for that possibility.

    Refs #942 (partial workaround)

    Change-Id: I983a7a2be791a634b877b0cbadb34e56a1ee2f82

  • commit aee3a691bca8067672e91efa482e2a6a05f9c051: Migrate some of the terminology pages


    Change-Id: I2671535659cc0e62aa44cd5056e3924180b6abba

  • commit 645414bb74b8191404e12f364805cf99e5e5a190: Migrate the documentation of the run-time errors


    From the wiki, cleaned up and updated with new tool names.

    Change-Id: Ia21e227b660d84b1b3f72f1f6e30cf29e5de9a23

  • commit ba602c13530a4c922eecd07eda5493f5fd0e55b9: Fix formatting of gmx msd Description


    When [tt] isn't followed by a space or a punctation symbol, Sphinx will generate wrong HTML output (preformated text ending tag will not be where it should be). The formulation provided here is also slightly more readable.

    Change-Id: I328921b0e724e8f997fd07615e84cc8d87e7153f

  • commit 279eba76f677efc59d7169fb4d3d9fc98bc43f49: Document floating-point arithmetic


    From the wiki, expanded with the links to David Goldberg's legendary paper and its appendix.

    Change-Id: Idb18ff37d4e8495412847f06872af693283dd747

  • commit 57836e7ead25c694f5a1d684d5aa6918de0fd567: Expand Performance section of the user guide


    Salvage and clean up the content from the wiki to expand the user guide. Minor fixes to the rest of the Performance section.

    Change-Id: I39aba257c4c761a3a1ef428c64424da6fa449158

  • commit 95bdbfae9e38625be04a912b79c72a6f283e3b62: Standardize use of |Gromacs| in reST docs


    Where possible, replace all occurences of GROMACS with |Gromacs|.

    Change-Id: I4835a148aefb2d8b088ca63b444bb1107520fc52

  • commit 65bf69442b578516a32ca65e046efcbb58a11b8b: Really enable avx512 in fftw only for select compilers


    Commit aa905d6 attempted to enable avx512 on GCC 4.9 or newer and Clang 3.9 or newer, but had elseif() in place of else() and resulted in no SIMD being enabled.

    This patch really enables avx512 on supported compilers, and takes care of all compilers we officially support (MSVC, GCC, Clang, ICC).

    Change-Id: Ia626b4cc6c82a2155d633f1482b99d3b2601fa3a

  • commit 46dc5e12c8a83880c19f0f6343ec4d8e6fad8522: Document that we now support AMD GCN on Mesa/LLVM


    AMD GPUs using Mesa 17.0+ and LLVM 4.0+ run GROMACS using OpenCL.

    Change-Id: I899c4f1c0581fdb3ea635c1f19f37b66c5dc3411

  • commit aa905d647e272792f67d93994578d0bb0eeb0f3f: Enable avx512 in fftw only if compiler supports it


    Enabling avx512 requires GCC 4.9 or newer or Clang 3.9 or newer. Since we support compilers older than those, we can not afford to enable avx512 in own fftw unconditionally.

    Change-Id: I17dba4e16f3d3566c1f5188497d0467d1d2665a0

  • commit 7d603de9be282beeac7c310d94059632dc93c3c6: Document running Clang static analyzer manually


    Change-Id: Ic1a273e9f8fc489d03b59eef70ff71bb426ba720

  • commit b142605b328bca62930bf7e7229ebe8fb1b663ea: Improve include sorter error reporting


    Change-Id: I5fe5d1ad6a4001cff6ae8a2b109e831c5e3eb433

  • commit c35e87d620cd22164a6f0cd0e540e15d4e82eb16: Make editconf B-factor attachment more useful in practice


    B-factor values will be added to residues unless an index is larger than the number of residues or an option is specified. Protein residue indices can start from any number and, in case they start from a large number, there is no way to add B-factor values to residues.

    This patch changes it to add B-factor values to residues unless the number of B-factor values is larger than the number of residues.

    Change-Id: Ifa67d6d6b5dc0f31e5b0d270ce255aece5ac7247

  • commit d97be0dc79bdfedbea575ba3e7808bb4bfce7998: Document wallcycle counters and subcounters


    List the available counters and explain how they are used. For subcounters, explain the difference to counters and mention how to enable them.

    Change-Id: Id5ce0e99b37a899f84d10b799840abad27d15c9c

  • commit c4942a845673a9a60ff69b05f952f3a45a030987: Print OpenCL error string instead of error code


    Change-Id: I00871b7f295373d8497a13d0bc3cbd0c0ff99668

  • commit 2defd44a4c438e2fff007d0970316524dcfffe53: Use only legal characters in OpenCL cache filename


    The device name from the vendor could contain anything, and we need to avoid dot and slash when we try to make a filename from it. To help keep it valid for all possible users, we permit only alphanumeric characters from the current locale.

    Change-Id: Ie55959a9a2161d0cfc7effa6ab57fffc8160f4e2

  • commit f7a4354b0a5a9be2b7039483e99a23e5542beb0e: Document gmx_cgsort_t and gmx_domdec_sort_t structs


    Add descriptions to fields of gmx_cgsort_t and gmx_domdec_sort_t structs used in domain decomposition code.

    Change-Id: Ie64664ed46413e51ba22504270ab11350c39b84a

  • commit 1726c6263fc21e8d0a8636636c5459c76df270e8: Print working dir before command line


    When running GROMACS via a batch script, it is useful to know which working dir is being used for relative paths (file names) in the command line.

    Change-Id: Iab6701e09ad3b0386b59c2bdda2c4f908fdc2d0a

  • commit fbc99c75abe169b792f53ddceecfe1e9226d199f: Prevent writing to unallocated memory in mk_specbonds


    Stop creating new specbonds after at most nspec bonds have been created to prevent writing to unallocated memory.

    Change-Id: I53f9d20059915e7fba8767b92d92fa751e9165e3

  • commit 4b8d53be6aa22aeba77f375c31f65390a619e63b: Report the filename and the line number on failure


    Extend the call to gmx_fatal in fget_lines() to report the filename and the line number where the read failed.

    Change-Id: Ib5ee06c06111cb61be616a5a4d01339da56a5685

  • commit 4c4c385bcbc381f1e7872a2c4176f233895d87c0: Write OpenCL build log prior to checking build status


    If building an OpenCL kernel fails, we still want to let the user know why the build process failed. Therefore the code has to write the build log prior to throwing a build failure exception.

    Change-Id: I2a8881895379da9ce4b13cf34788357347f1050c

  • commit 109138231f8534303949b418e20718a113966c48: Remove static function qualifier in OpenCL kernel utils


    Static function qualifiers are supported since OpenCL 1.2. When Mesa 3D Gallium Clover state tracker is used on AMD Radeon GCN cards, it only provides OpenCL 1.1 support, so static function qualifiers are not supoorted.

    Change-Id: I6d7aceabefeb0ce825b698962830201728bc56d7

  • commit f7a1ddfcf732d682351c99db39298f255c2160ae: Disable CUDA profiler when using OpenCL


    Replacing GPU_FUNC_TERM with CUDA_FUNC_TERM generates correct empty implementations and therefore fixes linker errors.

    Change-Id: I6485471eeb22bec9e6f0c3528bff7310593e3be6

  • commit 740b090b658b9a134ffd2f18ea16035e62a6dc9d: OpenCL: use new defines (*_POW2_EXPONENT -> *_LOG2)


    This fixes 'error: use of undeclared identifier' introduced in a86dee3d7d01ceb0b9a74d98010d17c47a7a8359.

    Change-Id: Id61294897a35d5b7bde7b7d7469560b0a39836d7

  • commit d4d377a2b0e666d4a2674b3d73b79d7c4e154b0e: Update explanation of replica exchange output


    We use both ex and x as a shorthand for exchange, and the output should mention that.

    Change-Id: Ied7fa5328191098a506279602a0ba67ca2254d0b

  • commit 330c6057a5ee856d3acfd8dee9206d589ac70f1e: Document gmx_repl_ex struct


    This patch adds descriptions to fields of gmx_repl_ex struct used in replica exchange code.

    Change-Id: I68fccd4d121ab3cf747ea5c61630728d74597260

  • commit f39f90fab4d4da0c8e17f1fcd9366dd977390e5a: Fix removal of symlinks created during installation


    Installation of gromacs creates 2 symlinks for, which become broken once library is removed. During uninstall, CMake macro EXISTS will follow symlink and conclude files do not have to be removed.

    This patch adds IS_SYMLINK checking in addition to EXISTS.

    Change-Id: Id7ef6768549a6fc09fb017e5be9ac286e4f7a026

  • commit 27e65c7671fd4053603bfa54f17ebdaf466e1f04: Use ${CMAKE_INSTALL_LIBDIR} as lib directory for tng_io library


    Directory lib was used as library directory for tng_io library. This causes problems on Debian wheezy (and future versions), which expect libraries to be installed under lib/<arch>. GROMACS already uses ${CMAKE_INSTALL_LIBDIR} for, and this patch makes libtng_io and libtng_compress install in the same location.

    This was also addressed in the TNG repository and this commit corresponds to commit e8fa7bf3abfc74acf60a048cdfe1f65fdbc0dc2d in the TNG repository.

    This patch also bumps minimum CMake version required for building tng_io from 2.8 to 2.8.8 due to inclusion of GNUInstallDirs module.

    Change-Id: I68b2196ab77e3e18c3a50717327e59b3482f2a29


Description: home page, Wikipedia page.

Commits listed from repository on GitHub:

  • commit ad21f2687dcca2199a5b2bd9b7f04486008ece16: [AMDGPU] Add custom lowering for llvm.log{,10}.{f16,f32} intrinsics


    AMDGPU backend errors with "unsupported call to function" upon encountering a call to llvm.log{,10}.{f16,f32} intrinsics. This patch adds custom lowering to avoid that error on both R600 and SI.

    Reviewers: arsenm, jvesely

    Subscribers: tstellar

    Differential Revision:

    llvm-svn: 319025

  • commit 79b7f4c1250dfe779bbb44259e9c649dba276437: Add gfx900 (Vega, Raven)


    Sort amdgcn-- and amdgcn--amdhsa in a consistent way.

    llvm-svn: 319017

  • commit 9df2b9781c1f963b692defb884cb4fd4e9352c41: math: Add native_rsqrt builtin function


    Trivial define to rsqrt.

    Patch by Vedran Miletić

    llvm-svn: 294608

  • commit d8f7ea381f8958b94d3eb82103be427e8a283347: AMDGPU: Enable FeatureFlatForGlobal on Volcanic Islands


    Accomplishes what r292982 was supposed to, which ended up only really making the necessary test changes.

    This should be applied to the 4.0 branch.

    Patch by Vedran Miletić

    llvm-svn: 293310

  • commit 88d7da01ca7af18ed6bd446d388999bf9668a3cf: AMDGPU: Handle structs directly in AMDGPUABIInfo


    Structs are currently handled as pointer + byval, which makes AMDGPU LLVM backend generate incorrect code when structs are used. This patch changes struct argument to be handled directly and without flattening, which Clover (Mesa 3D Gallium OpenCL state tracker) will be able to handle. Flattening would expand the struct to individual elements and pass each as a separate argument, which Clover can not handle. Furthermore, such expansion does not fit the OpenCL programming model which requires to explicitely specify each argument index, size and memory location.

    Patch by Vedran Miletić

    llvm-svn: 279463

  • commit 43ab9a00eb165625e07c1bc92afcfb521e926b1d: [OpenCL] Output OpenCL version in diagnostics.


    Diagnostics should note version dependent issues by giving a hint about current version being compiled for.

    This patch changes diagnostics of static storage class specifier and generic type qualifier to specify OpenCL version as well as converts other diagnostics to match the style.

    Patch by Vedran Miletic!


    llvm-svn: 269305

  • commit c374cb76f467f01a3f60740703f995a0e1f7a89a: math: Add erf ported from amd-builtins


    The scalar float/double function bodies are a direct copy/paste, aside from the removed (optional) code in float function body that requires subnormals.

    reviewers: jvesely

    Patch by: Vedran Miletić

    llvm-svn: 268766

  • commit 3ec09e61d1c823837fbf442c83865673cbbf59c8: AMDGPU: Document address space mapping


    Address space mapping is described in lib/Target/AMDGPU/AMDGPU.h in Doxygen comments. This patch adds the description to user guide for AMDGPU back-end.

    Patch By: Vedran Miletić

    Reviewers: tstellarAMD, arsenm

    Subscribers: llvm-commits

    Differential Revision:

    llvm-svn: 265500

  • commit 354a43c7bc562a4c67439a02e4bd717fb49a5857: AMDGPU: Implement {BUFFER,FLAT}_ATOMIC_CMPSWAP{,_X2}


    Implement BUFFER_ATOMIC_CMPSWAP{,_X2} instructions on all GCN targets, and FLAT_ATOMIC_CMPSWAP{,_X2} on CI +.

    32-bit instruction variants tested manually on Kabini and Bonaire. Tests and parts of code provided by Jan Veselý.

    Patch by: Vedran Miletić

    Reviewers: arsenm, tstellarAMD, nhaehnle

    Subscribers: jvesely, scchan, kanarayan, arsenm

    Differential Revision:

    llvm-svn: 265170


Description: home page, Wikipedia page.

Commits listed from repository on GitLab:

  • commit d9fef848a651b47520cbeb72c38b93d4fbf842a8: clover: Use Clang's diagnostics


    Presently errors from frontend are handled only if they occur in clang::CompilerInvocation::CreateFromArgs(). This patch uses clang::DiagnosticsEngine to detect errors such as invalid values for Clang frontend arguments.

    Fixes Piglit's cl/program/build/fail/ test.

    v2: fix inconsistent code formatting

    Signed-off-by: Vedran Miletić
    Reviewed-by: Francisco Jerez
    Tested-by: Aaron Watry

  • commit 95ddb37708ca16ccbd0f607d17a82be2de0d07b6: clover: Restore support for LLVM <= 3.9.


    The commit 8e430ff8b060b4e8e922bae24b3c57837da6ea77 broke support for LLVM 3.9 and older versions in Clover. This patch restores it and refactors the support using Clover compatibility layer for LLVM.

    v2: merged #ifdef blocks
    v3: added support for LLVM 3.6-3.8
    v4: add missing #ifdef around
    v5: simplify using templates and lambda

    Signed-off-by: Vedran Miletić
    Tested-by[v4]: Pierre Moreau
    Tested-by: Vinson Lee
    Reviewed-by: Francisco Jerez
    Reviewed-by: Jan Vesely

  • commit 8e430ff8b060b4e8e922bae24b3c57837da6ea77: clover: adapt to new error API since LLVM r286752


    Tested-by: Dieter Nützel

  • commit 2fba72046da09dd28f54df02794b358773899d13: clover: Introduce CLOVER_EXTRA_*_OPTIONS environment variables


    The options specified in the CLOVER_EXTRA_BUILD_OPTIONS shell variable are appended to the options specified by the OpenCL program in the clBuildProgram function call, if any. Analogously, the options specified in the CLOVER_EXTRA_COMPILE_OPTIONS and CLOVER_EXTRA_LINK_OPTIONS variables are appended to the options specified in clCompileProgram and clLinkProgram function calls, respectively.


    • use debug_get_option
    • append to linker options as well

    v3: code cleanups

    v4: separate CLOVER_EXTRA_LINKER_OPTIONS options


    • fix documentation typo
    • use CLOVER_EXTRA_COMPILER_OPTIONS in link stage


    • append options in cl{Build,Compile,Link}Program

    Signed-off-by: Vedran Miletić
    Reviewed-by[v1]: Edward O'Callaghan

    v7 [Francisco Jerez]: Slight simplification.

    Reviewed-by: Francisco Jerez

  • commit e3272865c216933168e6c08766d266a33d0e1497: clover: Pass unquoted compiler arguments to Clang


    OpenCL apps can quote arguments they pass to the OpenCL compiler, most commonly include paths containing spaces.

    If the Clang OpenCL compiler was called via a shell, the shell would split the arguments with respect to to quotes and then remove quotes before passing the arguments to the compiler. Since we call Clang as a library, we have to split the argument with respect to quotes and then remove quotes before passing the arguments.

    v2: move to tokenize(), remove throwing of CL_INVALID_COMPILER_OPTIONS

    v3: simplify parsing logic, use more C++11

    v4: restore error throwing, clarify a comment

    Signed-off-by: Vedran Miletić
    Reviewed-by: Francisco Jerez

  • commit 7b9a0f4e38b6b64a91ed0e674410af962b390120: mesa: standardize naming Mesa3D, MESA -> Mesa


    Signed-off-by: Vedran Miletić
    Reviewed-by: Edward O'Callaghan

  • commit 82e0bbd01abfb2073519941d9893fa6ac05fb58c: clover: Fix build against clang SVN >= r273191


    setLangDefaults() now requires PreprocessorOptions as an argument.

    Reviewed-and-Tested-by: Michel Dänzer

  • commit 4825264f75c83576f251290547f121f066b46a70: clover: Update OpenCL version string to match OpenGL


    Change MESA into Mesa in CL_PLATFORM_VERSION and CL_DEVICE_VERSION. For both, always append git version suffix from git_sha1.h.

    v5: move semicolon to same line as MESA_GIT_SHA1.
    v4: drop #ifdef guards.
    v3: add missing include.
    v2: change CL_DEVICE_VERSION as well.

    Reviewed-by: Francisco Jerez


Description: home page, Wikipedia page.

Commits listed from repository on GitLab:


Description: home page, Wikipedia page.

Commits listed from repository on GitLab:


Description: home page, Wikipedia page.

Commits listed from repository on GitHub: