|
Packit Service |
c5cf8c |
/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
|
|
Packit Service |
c5cf8c |
/*
|
|
Packit Service |
c5cf8c |
* (C) 2004 by Argonne National Laboratory.
|
|
Packit Service |
c5cf8c |
* See COPYRIGHT in top-level directory.
|
|
Packit Service |
c5cf8c |
*/
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
#include "mpiimpl.h"
|
|
Packit Service |
c5cf8c |
#include <stdio.h>
|
|
Packit Service |
c5cf8c |
#include <stdlib.h>
|
|
Packit Service |
c5cf8c |
#include <string.h>
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
/* FIXME: We really should consider internationalizing the output from this
|
|
Packit Service |
c5cf8c |
program */
|
|
Packit Service |
c5cf8c |
/* style: allow:fprintf:1 sig:0 */
|
|
Packit Service |
c5cf8c |
/* style: allow:printf:8 sig:0 */
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
/*
|
|
Packit Service |
c5cf8c |
* This program reports on properties of the MPICH library, such as the
|
|
Packit Service |
c5cf8c |
* version, device, and what patches have been applied. This is available
|
|
Packit Service |
c5cf8c |
* only since MPICH 1.0.6.
|
|
Packit Service |
c5cf8c |
*
|
|
Packit Service |
c5cf8c |
* The reason that this program doesn't directly include the info is that it
|
|
Packit Service |
c5cf8c |
* can be compiled and then linked with the MPICH library to discover
|
|
Packit Service |
c5cf8c |
* the information about the version of the library. If built with shared
|
|
Packit Service |
c5cf8c |
* libraries, this will give the information about the currently installed
|
|
Packit Service |
c5cf8c |
* shared library.
|
|
Packit Service |
c5cf8c |
*/
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
typedef enum { Version_number = 0, Date = 1,
|
|
Packit Service |
c5cf8c |
Patches = 2, Configure_args = 3, Device = 4,
|
|
Packit Service |
c5cf8c |
Compilers = 5, Custom = 6, LastField
|
|
Packit Service |
c5cf8c |
} fields;
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
/*D
|
|
Packit Service |
c5cf8c |
mpichversion - Report on the MPICH version
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
Command Line Arguments:
|
|
Packit Service |
c5cf8c |
+ -version - Show the version of MPICH
|
|
Packit Service |
c5cf8c |
. -date - Show the release date of this version
|
|
Packit Service |
c5cf8c |
. -patches - Show the identifiers for any applied patches
|
|
Packit Service |
c5cf8c |
. -configure - Show the configure arguments used to build MPICH
|
|
Packit Service |
c5cf8c |
- -device - Show the device for which MPICH was configured
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
Using this program:
|
|
Packit Service |
c5cf8c |
To use this program, link it against 'libmpi.a' (use 'mpicc' or
|
|
Packit Service |
c5cf8c |
the whichever compiler command is used to create MPICH programs)
|
|
Packit Service |
c5cf8c |
D*/
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
int main(int argc, char *argv[])
|
|
Packit Service |
c5cf8c |
{
|
|
Packit Service |
c5cf8c |
int i, flags[10];
|
|
Packit Service |
c5cf8c |
char version[MPI_MAX_LIBRARY_VERSION_STRING];
|
|
Packit Service |
c5cf8c |
int versionlen;
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
/* FIXME: this is needed to avoid unresolved symbols issues when building with
|
|
Packit Service |
c5cf8c |
* --disable-weak-symbols on some platforms. Ideally, we could use the output
|
|
Packit Service |
c5cf8c |
* from this call instead of accessing internal library variables.
|
|
Packit Service |
c5cf8c |
*/
|
|
Packit Service |
c5cf8c |
MPI_Get_library_version(version, &versionlen);
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
if (argc <= 1) {
|
|
Packit Service |
c5cf8c |
/* Show all values */
|
|
Packit Service |
c5cf8c |
for (i = 0; i < LastField; i++)
|
|
Packit Service |
c5cf8c |
flags[i] = 1;
|
|
Packit Service |
c5cf8c |
} else {
|
|
Packit Service |
c5cf8c |
/* Show only requested values */
|
|
Packit Service |
c5cf8c |
for (i = 0; i < LastField; i++)
|
|
Packit Service |
c5cf8c |
flags[i] = 0;
|
|
Packit Service |
c5cf8c |
for (i = 1; i < argc; i++) {
|
|
Packit Service |
c5cf8c |
if (strcmp(argv[i], "-version") == 0 ||
|
|
Packit Service |
c5cf8c |
strcmp(argv[i], "--version") == 0 || strcmp(argv[i], "-v") == 0)
|
|
Packit Service |
c5cf8c |
flags[Version_number] = 1;
|
|
Packit Service |
c5cf8c |
else if (strcmp(argv[i], "-date") == 0 ||
|
|
Packit Service |
c5cf8c |
strcmp(argv[i], "--date") == 0 || strcmp(argv[i], "-D") == 0)
|
|
Packit Service |
c5cf8c |
flags[Date] = 1;
|
|
Packit Service |
c5cf8c |
else if (strcmp(argv[i], "-patches") == 0)
|
|
Packit Service |
c5cf8c |
flags[Patches] = 1;
|
|
Packit Service |
c5cf8c |
else if (strcmp(argv[i], "-configure") == 0 ||
|
|
Packit Service |
c5cf8c |
strcmp(argv[i], "--configure") == 0 || strcmp(argv[i], "-c") == 0)
|
|
Packit Service |
c5cf8c |
flags[Configure_args] = 1;
|
|
Packit Service |
c5cf8c |
else if (strcmp(argv[i], "-device") == 0 ||
|
|
Packit Service |
c5cf8c |
strcmp(argv[i], "--device") == 0 || strcmp(argv[i], "-d") == 0)
|
|
Packit Service |
c5cf8c |
flags[Device] = 1;
|
|
Packit Service |
c5cf8c |
else if (strcmp(argv[i], "-compiler") == 0 ||
|
|
Packit Service |
c5cf8c |
strcmp(argv[i], "--compiler") == 0 || strcmp(argv[i], "-b") == 0)
|
|
Packit Service |
c5cf8c |
flags[Compilers] = 1;
|
|
Packit Service |
c5cf8c |
else if (strcmp(argv[i], "-custom") == 0 ||
|
|
Packit Service |
c5cf8c |
strcmp(argv[i], "--custom") == 0 || strcmp(argv[i], "-u") == 0)
|
|
Packit Service |
c5cf8c |
flags[Custom] = 1;
|
|
Packit Service |
c5cf8c |
else {
|
|
Packit Service |
c5cf8c |
fprintf(stderr, "Unrecognized argument %s\n", argv[i]);
|
|
Packit Service |
c5cf8c |
exit(1);
|
|
Packit Service |
c5cf8c |
}
|
|
Packit Service |
c5cf8c |
}
|
|
Packit Service |
c5cf8c |
}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
/* Print out the information, one item per line */
|
|
Packit Service |
c5cf8c |
if (flags[Version_number]) {
|
|
Packit Service |
c5cf8c |
printf("MPICH Version: \t%s\n", MPII_Version_string);
|
|
Packit Service |
c5cf8c |
}
|
|
Packit Service |
c5cf8c |
if (flags[Date]) {
|
|
Packit Service |
c5cf8c |
printf("MPICH Release date:\t%s\n", MPII_Version_date);
|
|
Packit Service |
c5cf8c |
}
|
|
Packit Service |
c5cf8c |
if (flags[Device]) {
|
|
Packit Service |
c5cf8c |
printf("MPICH Device: \t%s\n", MPII_Version_device);
|
|
Packit Service |
c5cf8c |
}
|
|
Packit Service |
c5cf8c |
if (flags[Configure_args]) {
|
|
Packit Service |
c5cf8c |
printf("MPICH configure: \t%s\n", MPII_Version_configure);
|
|
Packit Service |
c5cf8c |
}
|
|
Packit Service |
c5cf8c |
if (flags[Compilers]) {
|
|
Packit Service |
c5cf8c |
printf("MPICH CC: \t%s\n", MPII_Version_CC);
|
|
Packit Service |
c5cf8c |
printf("MPICH CXX: \t%s\n", MPII_Version_CXX);
|
|
Packit Service |
c5cf8c |
printf("MPICH F77: \t%s\n", MPII_Version_F77);
|
|
Packit Service |
c5cf8c |
printf("MPICH FC: \t%s\n", MPII_Version_FC);
|
|
Packit Service |
c5cf8c |
}
|
|
Packit Service |
c5cf8c |
if (flags[Custom]) {
|
|
Packit Service |
c5cf8c |
printf("MPICH Custom Information: \t%s\n", MPII_Version_custom);
|
|
Packit Service |
c5cf8c |
}
|
|
Packit Service |
c5cf8c |
|
|
Packit Service |
c5cf8c |
return 0;
|
|
Packit Service |
c5cf8c |
}
|