forked from llnl/variorum
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathREADME
More file actions
204 lines (138 loc) · 5.84 KB
/
README
File metadata and controls
204 lines (138 loc) · 5.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# VARIORUM
[](https://travis-ci.com/LLNL/variorum)
[](http://variorum.readthedocs.io)
Welcome to Variorum, a platform-agnostic library exposing monitor and control
interfaces for several features in hardware architectures.
version 0.4.1
Last Update
-----------
2 April 2021
Webpages
--------
https://variorum.readthedocs.io
## Overview
Variorum is an extensible vendor-neutral library for exposing power and
performance monitoring and control of low-level hardware knobs.
## Documentation
To get started building and using Variorum, check out the full documentation
here:
https://variorum.readthedocs.io
## Getting Started
Installation is simple. You will need [CMAKE](http://www.cmake.org) version 2.8
or higher and GCC. Variorum does not support in-source builds. In most cases,
the installation is as follows:
```
$ cd variorum/
$ mkdir build && mkdir install
$ cd build/
$ cmake -DCMAKE_INSTALL_PREFIX=../install ../src
$ make
$ make install
```
Note that Variorum depends on hwloc and JANSSON. The build system will first
check for a specified local install of these dependencies, then it will check
if it has been pre-installed. If it can find neither, it will clone and build
the dependency from source (will fail on machines without internet access).
By default `BUILD_DOCS=ON`, so the build system looks for `Doxygen` and `Sphinx`.
If you do not want to include these dependencies, simply toggle
`BUILD_DOCS=OFF` in `CMakeCache.txt` or run the `CMake` command as follows:
$ cmake -DCMAKE_INSTALL_PREFIX=../install -DBUILD_DOCS=OFF ../src
## CMake Host Config Files
We provide configuration files for specific systems to pre-populate the cache.
This configuration file will define various compilers, and paths to hwloc
installs. These can be used as follows:
```
$ cd variorum/
$ mkdir build && mkdir install
$ cd build/
$ cmake -C ../host-configs/your-local-configuration-file.cmake ../src
$ make
```
## Platform and Microarchitecture Support
Variorum has support for an increasing number of platforms and
microarchitectures:
Platforms supported: Intel, IBM, NVIDIA, ARM
Supported Intel Microarchitectures:
0x2A (Sandy Bridge)
0x2D (Sandy Bridge)
0x3E (Ivy Bridge)
0x3E (Haswell)
0x4F (Broadwell)
0x9E (Kaby Lake)
0x55 (Skylake)
If you are unsure of your architecture number, check the "model" field in `lscpu`
or `/proc/cpuinfo` (note that it will not be in hexadecimal).
Supported IBM Microrchitectures:
Power9
Supported Nvidia Microrchitectures:
Volta (requires [CUDA Toolkit[(https://developer.nvidia.com/cuda-downloads))
Supported ARM Microrchitectures:
Juno r2
## Testing
From within the build directory, unit tests can be executed as follows:
```
$ make test
```
Please report any failed tests to the project team at
## Examples
For sample code, see the `examples/` directory.
## Support Additional Intel Platforms
1. Under `Intel/` directory, create a `.h` and `.c` header and source file for
the respective platform. This will contain features specific to that platform,
which may or may not exist in previous generations.
2. Modify `Intel/config_intel.c` to set the function pointers for the
respective platform.
3. Include the new header file in `Intel/config_architecture.h`.
## System Environment Requirements
This software has certain system requirements depending on what hardware you
are running on.
Intel: Running this software on Intel platforms depends on the files
`/dev/cpu/*/msr` being present with R/W permissions. Recent kernels require
additional capabilities. We have found it easier to use our own
[msr-safe](https://github.com/LLNL/msr-safe) kernel module, but running as root
(or going through the bother of adding the capabilities to the binaries) is
another option.
IBM: Running this software on IBM platforms depends on the OPAL files being
present with R/W permissions.
Nvidia: Running this software on Nvidia platforms depends on CUDA being loaded.
ARM: Running this software on ARM platforms depends on the Linux Hardware
Monitoring (hwmon) subsystem for access to the monitoring and control
interfaces.
## Bug Tracker
Bugs and feature requests are being tracked on [GitHub
Issues](https://github.com/LLNL/variorum/issues).
## Mailing List
If you have questions about Variorum, identify a bug, or have ideas about
expanding the functionality of Variorum and are interested in contributing to
its development, please send an email to our open mailing list at
<[email protected]>. We are very interested in improving Variorum and
exploring new use cases.
If you are interested in keeping up with Variorum or communicating with its
developers and users, please join our open mailing list by sending an email as
follows:
```
Subject: (leave this field empty)
Subscribe variorum-users
```
## Contributing
We welcome all kinds of contributions: new features, bug fixes, documentation,
edits, etc.!
To contribute, make a pull request, with `dev` as the destination branch. We
use Travis to run CI tests, and your branch must pass these tests before being
merged.
See the [CONTRIBUTING](./CONTRIBUTING.md) for more information.
## Authors
Stephanie Brink, <[email protected]> <br>
Aniruddha Marathe, <[email protected]> <br>
Tapasya Patki, <[email protected]> <br>
Barry Rountree, <[email protected]>
Please feel free to contact the developers with any questions or feedback.
We collect names of those who have contributed to Variorum over
the years. See the current list in [AUTHORS](./AUTHORS).
## License
Variorum is released under the MIT license. For more details, see the
[LICENSE](./LICENSE) and [NOTICE](./NOTICE) files.
SPDX-License-Identifier: MIT
`LLNL-CODE-789253`