Skip to content

SyncIO support for various word sizes #8

@cwsmith

Description

@cwsmith
1: Test command: /usr/bin/mpirun "-np" "4"
"/home/matthb2/phasta-github/build/bin/phIOreadheader" "2"
1: Test timeout computed to be: 1500
1: Endian is different!
1: Building subcommunicator
1: Error readheader: Unexpected mismatch between keyphrase = number of
nodes@1? and token =  boundary condition array@2
1: Freeing subcommunicator
1: number of nodes don't match... :(
1:
--------------------------------------------------------------------------
1: mpirun noticed that the job aborted, but has no info as to the process
1: that caused that situation.
1:
--------------------------------------------------------------------------
 1/19 Test  #1: common_readHeader ..........................***Failed

It seems like SyncIO was never tested on a 32bit system. SyncIO writes it's header as a bunch of unsigned
long, which tends to change size between systems.

It seems SyncIO is not robust to different word sizes between the system writing the SyncIO files and the system reading them. I don't suppose this is a major problem for current production HPC resources, but it may be in the future. Probably the way to fix this is to replace all the old style variable length types with things from stdint.h (unsigned long -> uint64_t, and so forth). It's going to be a bit of work though, because you're likely also going to break the F<>C interface and have to be very careful not to pass anything larger than the word size across function call boundaries (or change integer to integer(kind=something) globally).

(Thanks to Ben for finding this.)

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions