system hints: hints via config file
In ROMIO, setting hints looks like this:
MPI_Info info;
MPI_Info_create(&info);
MPI_Info_set(“cb_buffer_size”, “8388608”);
Setting these hints in the program can make sense in many cases — for example, you know something specific about the workload and wish to guide ROMIO’s optimizations a bit. But what if you want to explore the impact of hints on your program? There are a few options to do so:
- Modify your program to look at an environment variable and use that as the value for your hint.
- Take a command line parameter.
- Repeatedly edit and re-compile your program.
While good practice, the approaches require additional work. It also assumes access to the source code — common, but not a guarantee.
Additionally, we notice very few users set hints on their own. They will gladly do so if we suggest it, but what would be great is if every application on a system ran with the best hints for that system. Sometimes you can count on the system’s vendor to set the defaults, but it is our experience that vendor defaults are exceedingly conservative.
We added a new feature in ROMIO called “system hints“. You can now populate a config file with the same key-value pairs you would pass to MPI_Info_set and ROMIO will add those hints to your program.
Here’s an example of what that file might look like:
$ cat romio_hints
romio_cb_read enable
romio_cb_write enable
cb_config_list *:2
By default, ROMIO will look for /etc/romio-hints , but you can set the environment variable ROMIO_HINTS to select a different location (for example, your application’s working directory)