PAPI 7.1.0.0
Loading...
Searching...
No Matches
README
Go to the documentation of this file.
1/**
2* @file: README
3* @author: Brian Sheely
4* bsheely@eecs.utk.edu
5* @defgroup papi_components Components
6* @brief Component Readme file
7*/
8
9/** @page component_readme Component Readme
10@section Creating New Components
11
12The first step in creating a new component is to create a new directory inside the components directory. The naming convention is to use lower case letters for the directory name. At a minimum, this directory will contain all header files and source code required to build the component along with a Rules file which contains the build rules and compiler settings specific to that component. The Rules file must be named using the format Rules.x where x is the name of the directory. There are no restrictions on the naming of header or source files.
13
14If the component requires user input for any of the compiler settings, then the component directory will also contain the files required to generate a configure script using autoconf. The configure script can be used to generate a Makefile which the Rules file will include. The file configure.in is required in order to generate configure. It should specify that the Makefile that gets generated is named Makefile.x where x is the name of the component directory. Finally, configure also needs an input file to create the Makefile. That file must be named Makefile.x.in where x is the name of the component directory.
15
16The following comments apply to components that are under source control. Although configure is generated, it requires the correct version of autoconf. For that reason, configure should be placed under source control. The generated Makefile should not be placed under source control.
17
18In summary, the additional files required for configuration based on user input are: configure.in, configure (generated by autoconf), Makefile.x.in, and Makefile.x (generated by configure) where x is the name of the component directory.
19
20There is one final very important naming convention that applies to components. The array of function pointers that the component defines must use the naming convention papi_vector_t _x_vector where x is the name of the component directory.
21
22
23Adding tests to the components:
24-------------------------------
25
26In order to add tests to a component that will be compiled together with PAPI when typing 'make' (as well as cleaned up when 'make clean' or 'make clobber' is typed and installed when 'make install-all' or 'make install-tests' is called), the following steps need to be carried out:
27
28 1. create a directory with name 'tests' in the specific component directory
29 2. add your test files and a Makefile to the 'tests' directory (see the example test and Makefile in components/example/tests)
30 3. The components/< component >/tests/Makefile has to have a rule with the name '< component >_tests'; e.g. for tests added to the example component, the name of the rule would be 'example_tests'. See:
31 TESTS = HelloWorld
32 example_tests: $(TESTS)
33 4. Include components/Makefile_comp_tests to your component test Makefile
34 (see components/example/tests/Makefile for more details)
35 5. You may also define 'clean' and/or 'install' targets (as shown in the example) which will be called during those parts of the build. If these targets are missing it will just print a message reporting the missing target and continue.
36
37NOTE: there is no need to modify any PAPI code other than adding your tests and a Makefile to your component and follow step 1 to 4 listed above.
38
39
40
41@section Component Specific Information
42
43Some components under source control have additional information specific to their build process or operation. That information can be found in a README file inside the component directory. If the README doesn't exist, no special information is necessary.
44
45*/
46
47/*-----------------------------------------------------------------------------
48 Notes on components as of February 2019 release 5.7.0.0.
49appio
50bgpm IBM Blue Gene Q specific.
51coretemp Linux HW Monitor, temperature and other info.
52coretemp_freebsd FREEBSD version of HW Monitor, temperature and other info.
53cuda CUDA events and metrics via NVIDIA CUpti interfaces.
54emon IBM Blue Gene Q specific.
55example Simple example component.
56host_micpower Requires its own configure and Knights Corner (KNC) architecture.
57infiniband Linux Infiniband stats using the sysfs interface. For OFED version < 1.4.
58infiniband_umad Requires its own configure. Infiniband stats for OFED version >= 1.4.
59libmsr Requires its own configure and libmsr from LLNL, for power (RAPL) read/write.
60lmsensors Requires its own configure.
61lustre lustre filesystem stats
62micpower For reading power on Intel XEON PHI. (MIC)
63mx Myricom MX (Myrinet Express) statistics.
64net Linux network driver statistics
65nvml Requires its own configure; monitors NVIDIA hardware (power, temp, fan speed, etc).
66pcp Performance Co-Pilot interface.
67perfctr OLD, only used for Linux before 2.6.31.
68perfctr_ppc OLD, only used for Linux before 2.6.31.
69perf_event Linux perf_event CPU counters
70perf_event_uncore Linux perf-event CPU uncore and Northbridge
71perfmon2 OLD, only used for Linux before 2.6.31.
72perfmon_ia64 OLD, only used for Linux before 2.6.31.
73powercap Linux Powercap energy measurements.
74rapl Linux RAPL energy measurments.
75stealtime Stealtime Filesystem statistics.
76vmware Requires its own configure. Only runs in the VMWARE virtual environment.
77
78*/