[libfabric-users] Determining available providers

Hefty, Sean sean.hefty at intel.com
Tue Sep 25 12:10:57 PDT 2018

> I am looking for a way to reliably find the available providers on a
> system where the libfabric library (and fi_info utility) is being
> cross-compiled. For example, on Theta the compute nodes have gni,
> while the login nodes do not. I can build the gni provider and use it
> at run-time, but I cannot use the fi_info utility on the login nodes
> to identify that my libfabric installation has GNI support (I get a
> failure with -FI_ENODATA.) I am developing for a library that uses
> libfabric, and I’d like to do some conditional compilation based on
> available providers (e.g. include the gni extended header if GNI is
> available, among other things.) Is there some robust/well-known way to
> do this in a build system if fi_info cannot be relied-upon?

The fi_info application just calls fi_getinfo().  I recommend looking at the fi_info source, but in general calling fi_getinfo() with NULL parameters will return the available provides.  You can also use the FI_PROV_ATTR_ONLY flag to see what providers are built into libfabric and would be available if the required hardware and software was installed on the system.

- Sean

More information about the Libfabric-users mailing list