1. 13 May, 2014 1 commit
    • Michael Blocksome's avatar
      pamid: force context post on when using 'per-object' locks · 3e57215e
      Michael Blocksome authored
      The previous code would attempt to run in 'latency optimization mode' if
      the application requested !MPI_THREAD_MULTIPLE and yet still was linking
      with a 'per-object' mpich library - which is optimized for throughput.
      This means that in !MPI_THREAD_MULTIPLE:
      - context post was disabled
      - async progress was disabled
      - using multiple contexts was disabled
      
      This attempt to give users "better" performance in a fundamentally
      flawed configuration would cause the pamid adi to hang on acquiring a
      context lock. For example, consider:
      1. work function is posted to a context
      2. thread acquires the context lock
      3. thread advances the context
      4. work function invoked, then attempts to initiate communication
      5. WITH CONTEXT POST OFF the thread will attempt to acquire the context
         lock before it directly invokes the communcation function
      6. HANG
      
      A complete solution would be to identify all code paths that might
      result in this situation and instead avoid acquiring a lock that is
      already held.
      
      It should be noted that this is a bug in the pamid adi and NOT in the
      PAMI library iteself. The PAMI interface is explicit in that the
      PAMI_Context_lock() is non-recursive - for performance reasons.
      3e57215e
  2. 12 May, 2014 4 commits
  3. 09 May, 2014 5 commits
  4. 08 May, 2014 5 commits
  5. 06 May, 2014 6 commits
    • Rob Latham's avatar
      ROMIO: Consolidate errno processing · 42056d48
      Rob Latham authored
      
      
      not every file system lives in a posix-like environment, but many do.
      for those file systems, open and delete will return -1 and set errno.
      The translation from unix erno to MPI error class was haphazard.  Get
      all aplicable file systems using ADIOI_Err_create_code so we have one
      place to update error code conversion.
      
      Closes: #2075
      
      Signed-off-by: default avatarWei-keng Liao <wkliao@ece.northwestern.edu>
      42056d48
    • Rob Latham's avatar
      Deal with more errno values · e0154ed8
      Rob Latham authored
      
      
      In preparation for using ADIOI_Err_create_code everywhere,
      ADIOI_Err_create_code did not handle some errno values that fs-specific
      drivers were handling.
      
      Signed-off-by: default avatarWei-keng Liao <wkliao@ece.northwestern.edu>
      e0154ed8
    • Rob Latham's avatar
      test case for 'resized of resized' · e3813c2e
      Rob Latham authored
      ROMIO flattening code presently does not handle resized-of-resized
      types.
      
      See #2088
      e3813c2e
    • Rob Latham's avatar
      ROMIO dtype flattening: ignore zero-length counts · 50f3d580
      Rob Latham authored
      Bill Gropp reminds us not to forget this text from MPI-3
      MPI-3, page 84, lines 18-20.
      
        "Most datatype constructors have replication count or block length
        arguments. Allowed values are non-negative integers. If the value is
        zero, no elements are generated in the type map and there is no effect
        on datatype bounds or extent."
      
      The ROMIO flattening codes was treating blocklen elments of zero as
      significant.
      
      the struct case probably has the same bug, but I'm deeply nervous about
      touching too much of this old code with a release imminent.
      
      Closes: #2073
      50f3d580
    • Rob Latham's avatar
      turn datatype test into a function · 41908007
      Rob Latham authored
      41908007
    • Wei-keng Liao's avatar
      ROMIO test case demonstrating indexed type bugs · 71f1dae1
      Wei-keng Liao authored and Rob Latham's avatar Rob Latham committed
      
      
      The problem is when defining a filetype using MPI_Type_indexed and the
      first few elements of argument blocklens[] are zeros, a collective write
      will miss writing some data.
      
      The test program first fills a file with 9 integers with values all
      -999.  It then defines a filetype and writes to the file in parallel
      with user buffers with value all 1s. Lastly, the file is read back and
      checked for contents.
      
      (it's Wei-keng's test case. I just hooked it into ROMIO's test suite)
      
      Signed-off-by: Rob Latham's avatarRob Latham <robl@mcs.anl.gov>
      71f1dae1
  6. 05 May, 2014 7 commits
  7. 02 May, 2014 10 commits
  8. 01 May, 2014 1 commit
  9. 30 Apr, 2014 1 commit