9 research outputs found
Recommended from our members
Finding, Measuring, and Reducing Inefficiencies in Contemporary Computer Systems
Computer systems have become increasingly diverse and specialized in recent years. This complexity supports a wide range of new computing uses and users, but is not without cost: it has become difficult to maintain the efficiency of contemporary general purpose computing systems. Computing inefficiencies, which include nonoptimal runtimes, excessive energy use, and limits to scalability, are a serious problem that can result in an inability to apply computing to solve the world's most important problems. Beyond the complexity and vast diversity of modern computing platforms and applications, a number of factors make improving general purpose efficiency challenging, including the requirement that multiple levels of the computer system stack be examined, that legacy hardware devices and software may stand in the way of achieving efficiency, and the need to balance efficiency with reusability, programmability, security, and other goals.
This dissertation presents five case studies, each demonstrating different ways in which the measurement of emerging systems can provide actionable advice to help keep general purpose computing efficient. The first of the five case studies is Parallel Block Vectors, a new profiling method for understanding parallel programs with a fine-grained, code-centric perspective aids in both future hardware design and in optimizing software to map better to existing hardware. Second is a project that defines a new way of measuring application interference on a datacenter's worth of chip-multiprocessors, leading to improved scheduling where applications can more effectively utilize available hardware resources. Next is a project that uses the GT-Pin tool to define a method for accelerating the simulation of GPGPUs, ultimately allowing for the development of future hardware with fewer inefficiencies. The fourth project is an experimental energy survey that compares and combines the latest energy efficiency solutions at different levels of the stack to properly evaluate the state of the art and to find paths forward for future energy efficiency research. The final project presented is NRG-Loops, a language extension that allows programs to measure and intelligently adapt their own power and energy use
GAPP: A Fast Profiler for Detecting Serialization Bottlenecks in Parallel Linux Applications
We present a parallel profiling tool, GAPP, that identifies serialization
bottlenecks in parallel Linux applications arising from load imbalance or
contention for shared resources . It works by tracing kernel context switch
events using kernel probes managed by the extended Berkeley Packet Filter
(eBPF) framework. The overhead is thus extremely low (an average 4% run time
overhead for the applications explored), the tool requires no program
instrumentation and works for a variety of serialization bottlenecks. We
evaluate GAPP using the Parsec3.0 benchmark suite and two large open-source
projects: MySQL and Nektar++ (a spectral/hp element framework). We show that
GAPP is able to reveal a wide range of bottleneck-related performance issues,
for example arising from synchronization primitives, busy-wait loops, memory
operations, thread imbalance and resource contention.Comment: 8 page
Recommended from our members
Energy Exchanges: Internal Power Oversight for Applications
This paper introduces energy exchanges, a set of abstractions that allow applications to help hardware and operating systems manage power and energy consumption. Using annotations, energy exchanges dictate when, where, and how to trade performance or accuracy for power in ways that only an application's developer can decide. In particular, the abstractions offer audits and budgets which watch and cap the power or energy of some piece of the application. The interface also exposes energy and power usage reports which an application may use to change its behavior. Such information complements existing system-wide energy management by operating systems or hardware, which provide global fairness and protections, but are unaware of the internal dynamics of an application. Energy exchanges are implemented as a user-level C++ library. The library employs an accounting technique to attribute shares of system-wide energy consumption (provided by system-wide hardware energy meters available on newer hardware platforms) to individual application threads. With these per-thread meters and careful tracking of an application's activity, the library exposes energy and power usage for program regions of interest via the energy exchange abstractions with negligible runtime or power overhead. We use the library to demonstrate three applications of energy exchanges: (1) the prioritization of a mobile game's energy use over third-party advertisements, (2) dynamic adaptations of the framerate of a video tracking benchmark that maximize performance and accuracy within the confines of a given energy allotment, and (3) the triggering of computational sprints and corresponding cooldowns, based on time, system TDP, and power consumption
NRG-Loops: Adjusting Power from within Applications
Abstract NRG-Loops are source-level abstractions that allow an application to dynamically manage its power and energy through adjustments to functionality, performance, and accuracy. The adjustments, which come in the form of truncated, adapted, or perforated loops, are conditionally enabled as runtime power and energy constraints dictate. NRG-Loops are portable across different hardware platforms and operating systems and are complementary to existing system-level efficiency techniques, such as DVFS and idle states. Using a prototype C library supported by commodity hardware energy meters (and with no modifications to the compiler or operating system), this paper demonstrates four NRG-Loop applications that in 2-6 lines of source code changes can save up to 55% power and 90% energy, resulting in up to 12X better energy efficiency than system-level techniques
Parallel Scaling Properties from a Basic Block View
As software scalability lags behindhardware parallelism, understanding scaling behavior is more important than ever. This paper demonstrates how to use Parallel Block Vector (PBV) profiles to measure the scaling properties of multithreadedprograms from anewperspective: thebasic block’s view. Through this lens, we guide users through quick and simple methods to produce high-resolution application scaling analyses. This method requires no manual program modification, new hardware, or lengthy simulations, and capturestheimpactofarchitecture, operatingsystems, threading models, and inputs. We apply these techniques to a set of parallel benchmarks, and, as an example, demonstrate that when it comes to scaling, functions in an application do not behave monolithically
"I'm sorry to hear that": finding bias in language models with a holistic descriptor dataset
As language models grow in popularity, their biases across all possible
markers of demographic identity should be measured and addressed in order to
avoid perpetuating existing societal harms. Many datasets for measuring bias
currently exist, but they are restricted in their coverage of demographic axes,
and are commonly used with preset bias tests that presuppose which types of
biases the models exhibit. In this work, we present a new, more inclusive
dataset, HOLISTICBIAS, which consists of nearly 600 descriptor terms across 13
different demographic axes. HOLISTICBIAS was assembled in conversation with
experts and community members with lived experience through a participatory
process. We use these descriptors combinatorially in a set of bias measurement
templates to produce over 450,000 unique sentence prompts, and we use these
prompts to explore, identify, and reduce novel forms of bias in several
generative models. We demonstrate that our dataset is highly efficacious for
measuring previously unmeasurable biases in token likelihoods and generations
from language models, as well as in an offensiveness classifier. We will invite
additions and amendments to the dataset, and we hope it will help serve as a
basis for easy-to-use and more standardized methods for evaluating bias in NLP
models