Nothing Special   »   [go: up one dir, main page]

PDF Parallel Computing Hits The Power Wall Principles Challenges and A Survey of Solutions Arthur Francisco Lorenzon Ebook Full Chapter

Download as pdf or txt
Download as pdf or txt
You are on page 1of 53

Parallel Computing Hits the Power Wall

Principles Challenges and a Survey of


Solutions Arthur Francisco Lorenzon
Visit to download the full and correct content document:
https://textbookfull.com/product/parallel-computing-hits-the-power-wall-principles-chall
enges-and-a-survey-of-solutions-arthur-francisco-lorenzon/
More products digital (pdf, epub, mobi) instant
download maybe you interests ...

Task Scheduling for Multi core and Parallel


Architectures Challenges Solutions and Perspectives 1st
Edition Quan Chen

https://textbookfull.com/product/task-scheduling-for-multi-core-
and-parallel-architectures-challenges-solutions-and-
perspectives-1st-edition-quan-chen/

Economics principles, applications, and tools Arthur


O’Sullivan

https://textbookfull.com/product/economics-principles-
applications-and-tools-arthur-osullivan/

Privately and Publicly Verifiable Computing Techniques:


A Survey 1st Edition Denise Demirel

https://textbookfull.com/product/privately-and-publicly-
verifiable-computing-techniques-a-survey-1st-edition-denise-
demirel/

Advances on P2P, Parallel, Grid, Cloud and Internet


Computing: Proceedings of the 15th International
Conference on P2P, Parallel, Grid, Cloud and Internet
Computing (3PGCIC-2020) Leonard Barolli
https://textbookfull.com/product/advances-on-p2p-parallel-grid-
cloud-and-internet-computing-proceedings-of-the-15th-
international-conference-on-p2p-parallel-grid-cloud-and-internet-
Designing Internet of Things Solutions with Microsoft
Azure : A Survey of Secure and Smart Industrial
Applications Nirnay Bansal

https://textbookfull.com/product/designing-internet-of-things-
solutions-with-microsoft-azure-a-survey-of-secure-and-smart-
industrial-applications-nirnay-bansal/

MATLAB Parallel Computing Toolbox User s Guide The


Mathworks

https://textbookfull.com/product/matlab-parallel-computing-
toolbox-user-s-guide-the-mathworks/

Advances on P2P, Parallel, Grid, Cloud and Internet


Computing: Proceedings of the 12th International
Conference on P2P, Parallel, Grid, Cloud and Internet
Computing (3PGCIC-2017) 1st Edition Fatos Xhafa
https://textbookfull.com/product/advances-on-p2p-parallel-grid-
cloud-and-internet-computing-proceedings-of-the-12th-
international-conference-on-p2p-parallel-grid-cloud-and-internet-
computing-3pgcic-2017-1st-edition-fatos-xha/

Elements of Cloud Computing Security A Survey of Key


Practicalities 1st Edition Mohammed M. Alani (Auth.)

https://textbookfull.com/product/elements-of-cloud-computing-
security-a-survey-of-key-practicalities-1st-edition-mohammed-m-
alani-auth/

Parallel and High Performance Computing MEAP V09


Robert Robey

https://textbookfull.com/product/parallel-and-high-performance-
computing-meap-v09-robert-robey/
SPRINGER BRIEFS IN COMPUTER SCIENCE

Arthur Francisco Lorenzon


Antonio Carlos Schneider Beck Filho

Parallel
Computing Hits
the Power Wall
Principles,
Challenges, and a
Survey of Solutions
123
SpringerBriefs in Computer Science

Series editors
Stan Zdonik, Brown University, Providence, RI, USA
Shashi Shekhar, University of Minnesota, Minneapolis, MN, USA
Xindong Wu, University of Vermont, Burlington, VT, USA
Lakhmi C. Jain, University of South Australia, Adelaide, SA, Australia
David Padua, University of Illinois Urbana-Champaign, Urbana, IL, USA
Xuemin Sherman Shen, University of Waterloo, Waterloo, ON, Canada
Borko Furht, Florida Atlantic University, Boca Raton, FL, USA
V. S. Subrahmanian, Department of Computer Science, University of Maryland,
College Park, MD, USA
Martial Hebert, Carnegie Mellon University, Pittsburgh, PA, USA
Katsushi Ikeuchi, Meguro-ku, University of Tokyo, Tokyo, Japan
Bruno Siciliano, Dipartimento di Ingegneria Elettrica e delle Tecnologie
dell’Informazione, Università di Napoli Federico II, Napoli, Italy
Sushil Jajodia, George Mason University, Fairfax, VA, USA
Newton Lee, Institute for Education Research and Scholarships, Los Angeles,
CA, USA
SpringerBriefs present concise summaries of cutting-edge research and practical
applications across a wide spectrum of fields. Featuring compact volumes of 50 to
125 pages, the series covers a range of content from professional to academic.
Typical topics might include:
• A timely report of state-of-the art analytical techniques
• A bridge between new research results, as published in journal articles, and a
contextual literature review
• A snapshot of a hot or emerging topic
• An in-depth case study or clinical example
• A presentation of core concepts that students must understand in order to make
independent contributions
Briefs allow authors to present their ideas and readers to absorb them with minimal
time investment. Briefs will be published as part of Springer’s eBook collection,
with millions of users worldwide. In addition, Briefs will be available for individual
print and electronic purchase. Briefs are characterized by fast, global electronic
dissemination, standard publishing contracts, easy-to-use manuscript preparation
and formatting guidelines, and expedited production schedules. We aim for pub-
lication 8–12 weeks after acceptance. Both solicited and unsolicited manuscripts
are considered for publication in this series.

More information about this series at http://www.springer.com/series/10028


Arthur Francisco Lorenzon
Antonio Carlos Schneider Beck Filho

Parallel Computing Hits


the Power Wall
Principles, Challenges, and a Survey
of Solutions

123
Arthur Francisco Lorenzon Antonio Carlos Schneider Beck Filho
Department of Computer Science Institute of Informatics, Campus do Vale
Federal University of Pampa (UNIPAMPA) Federal University of Rio Grande
Alegrete, Rio Grande do Sul, Brazil do Sul (UFRGS)
Porto Alegre, Rio Grande do Sul, Brazil

ISSN 2191-5768 ISSN 2191-5776 (electronic)


SpringerBriefs in Computer Science
ISBN 978-3-030-28718-4 ISBN 978-3-030-28719-1 (eBook)
https://doi.org/10.1007/978-3-030-28719-1

© The Author(s), under exclusive license to Springer Nature Switzerland AG 2019


This work is subject to copyright. All rights are solely and exclusively licensed by the Publisher, whether
the whole or part of the material is concerned, specifically the rights of translation, reprinting, reuse
of illustrations, recitation, broadcasting, reproduction on microfilms or in any other physical way, and
transmission or information storage and retrieval, electronic adaptation, computer software, or by similar
or dissimilar methodology now known or hereafter developed.
The use of general descriptive names, registered names, trademarks, service marks, etc. in this publication
does not imply, even in the absence of a specific statement, that such names are exempt from the relevant
protective laws and regulations and therefore free for general use.
The publisher, the authors, and the editors are safe to assume that the advice and information in this book
are believed to be true and accurate at the date of publication. Neither the publisher nor the authors or
the editors give a warranty, express or implied, with respect to the material contained herein or for any
errors or omissions that may have been made. The publisher remains neutral with regard to jurisdictional
claims in published maps and institutional affiliations.

This Springer imprint is published by the registered company Springer Nature Switzerland AG.
The registered company address is: Gewerbestrasse 11, 6330 Cham, Switzerland
This book is dedicated to the memory of
Márcia Cristina and Aurora Cera.
Preface

Efficiently exploiting thread-level parallelism from modern multicore systems has


been challenging for software developers. While blindly increasing the number
of threads may lead to performance gains, it can also result in a disproportionate
increase in energy consumption. In the same way, optimization techniques for
reducing energy consumption, such as DVFS and power gating, can lead to
huge performance loss if used incorrectly. In this book, we present and discuss
several techniques that address these challenges. We start by providing a brief
theoretical background on parallel computing in software and the sources of power
consumption. Then, we show how different parallel programming interfaces and
communication models may affect energy consumption in different ways. Next, we
discuss tuning techniques to adapt the number of threads/operating frequency to
achieve the best compromise between performance and energy. We finish this book
with a detailed analysis of a representative example of an adaptive approach.

Alegrete, Brazil Arthur Francisco Lorenzon


Porto Alegre, Brazil Antonio Carlos Schneider Beck Filho

vii
Acknowledgments

The authors would like to thank the friends and colleagues at Informatics Institute
of the Federal University of Rio Grande do Sul and give a special thanks to all the
people in the Embedded Systems Laboratory, who have contributed to this research
since 2013.
The authors would also like to thank the Brazilian research support agencies,
FAPERGS, CAPES, and CNPq.

ix
Contents

1 Runtime Adaptability: The Key for Improving Parallel Applications . . 1


1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Scalability Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.2.1 Variables Involved . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 This Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2 Fundamental Concepts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1 Parallel Computing in Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.1 Communication Models . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.1.2 Parallel Programming Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.1.3 Multicore Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Power and Energy Consumption . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.1 Dynamic Voltage and Frequency Scaling. . . . . . . . . . . . . . . . . . . . . . . 14
2.2.2 Power Gating. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3 The Impact of Parallel Programming Interfaces on Energy . . . . . . . . . . . . . 17
3.1 Methodology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1.1 Benchmarks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.1.2 Multicore Architectures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.1.3 Execution Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.4 Setup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.1 Performance and Energy Consumption . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.2.2 Energy-Delay Product . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.3 The Influence of the Static Power Consumption . . . . . . . . . . . . . . . 34
3.3 Discussion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4 Tuning Parallel Applications. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4.1 Design Space Exploration of Optimization Techniques . . . . . . . . . . . . . . . . 41
4.2 Dynamic Concurrency Throttling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.2.1 Approaches with no Runtime Adaptation
and no Transparency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2.2 Approaches with Runtime Adaptation and/or Transparency . . 45
xi
xii Contents

4.3 Dynamic Voltage and Frequency Scaling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49


4.3.1 Approaches with no Runtime Adaptation
and no Transparency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.3.2 Approaches with Runtime Adaptation and/or Transparency . . 50
4.4 DCT and DVFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4.1 Approaches with no Runtime Adaptation
and no Transparency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
4.4.2 Approaches with Runtime Adaptation and/or Transparency . . 52
5 Case Study: DCT with Aurora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.1 The Need for Adaptability and Transparency . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.2 Aurora: Seamless Optimization of OpenMP Applications . . . . . . . . . . . . . 56
5.2.1 Integration to OpenMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.2.2 Search Algorithm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3 Evaluation of Aurora . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.3.1 Methodology . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
5.3.2 Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6 Conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79

References . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Acronyms

CMOS Complementary metal oxide semiconductor


DCT Dynamic concurrency throttling
DSE Design space exploration
DVFS Dynamic voltage and frequency scaling
EDP Energy-delay product
FFT Fast fourier transform
FIFO First-in first-out
FU Function unit
GPP General-purpose processors
HC High communication
HPC High-performance computing
ILP Instruction-level parallelism
ISA Instruction set architecture
LC Low communication
MPI Message passing interface
OpenMP Open multi-programming
PAPI Performance application programming interface
PPI Parallel programming interface
PThreads POSIX threads
RAM Random access memory
SMT Simultaneous multithreading
SoC System-on-chip
TBB Threading building blocks
TDP Thermal design power
TLP Thread-level parallelism

xiii
Chapter 1
Runtime Adaptability: The Key for
Improving Parallel Applications

1.1 Introduction

With the increasing complexity of parallel applications, which require more com-
puting power, energy consumption has become an important issue. The power
consumption of high-performance computing (HPC) systems is expected to signifi-
cantly grow (up to 100 MW) in the next years [34]. Moreover, while general-purpose
processors are being pulled back by the limits of the thermal design power (TDP),
most of the embedded devices are mobile and heavily dependent on battery (e.g.,
smartphones and tablets). Therefore, the primary objective when designing and
executing parallel applications is not to merely improve performance but to do so
with minimal impact on energy consumption.
Performance improvements can be achieved by exploiting instruction-level
parallelism (ILP) or thread-level parallelism (TLP). In the former, independent
instructions of a single program are simultaneously executed, usually on a super-
scalar processor, as long as there are functional units available. However, typical
instruction streams have only a limited amount of parallelism [122], resulting in
considerable efforts to design a microarchitecture that will bring only marginal
performance gains with very significant area/power overhead. Even if one considers
a perfect processor, ILP exploitation will reach an upper bound [85].
Hence, to continue increasing performance and to provide better use of the extra
available transistors, modern designs have started to exploit TLP more aggressively
[7]. In this case, multiple processors simultaneously execute parts of the same
program, exchanging data at runtime through shared variables or message passing.
In the former, all threads share the same memory region, while in the latter each
process has its private memory, and the communication occurs by send/receive
primitives (even though they are also implemented using a shared memory context
when the data exchange is done intra-chip [21]). Regardless of the processor or
communication model, data exchange is usually done through memory regions that
are more distant from the processor (e.g., L3 cache and main memory) and have

© The Author(s), under exclusive license to Springer Nature Switzerland AG 2019 1


A. Francisco Lorenzon, A. C. S. Beck Filho, Parallel Computing Hits the Power Wall,
SpringerBriefs in Computer Science, https://doi.org/10.1007/978-3-030-28719-1_1
2 1 Runtime Adaptability: The Key for Improving Parallel Applications

higher delay and power consumption when compared to memories that are closer to
it (e.g., register, L1, and L2 caches).
Therefore, even though execution time shall decrease because of TLP exploita-
tion, energy will not necessarily follow the same trend, since many other variables
are involved:
• Memories that are more distant from the processor will be more accessed for
synchronization and data exchange, increasing energy related to dynamic power
(which increases as there is more activity in the circuitry).
• A parallel application will usually execute more instructions than its sequential
counterpart. Moreover, even considering an ideal scenario (where processors are
put on standby with no power consumption), the sum of the execution times of
all threads executing on all cores tends to be greater than if the application was
sequentially executed on only one core. In consequence, the resulting energy
from static power (directly proportional to how long each hardware component
is turned on) consumed by the cores will also be more significant. There are
few exceptions to this rule, such as non-deterministic algorithms, in which
the execution of a parallel application may execute fewer instructions than its
sequential counterpart.
• The memory system (which involves caches and main memory) will be turned
on for a shorter time (the total execution time of the applications), which will
decrease the energy resulting from the static power.
Given the aforementioned discussion, cores tend to consume more energy from
both dynamic and static power, while memories will usually spend more dynamic
power (and hence energy), but also tend to save static power, which is very
significant [121]. On top of that, neither performance nor energy improvements
resultant from TLP exploitation are linear, and sometimes they do not scale as the
number of threads increases, which means that in many cases the maximum number
of threads will not offer the best results.
On top of that, in order to speed up the development process of TLP exploitation
and make it as transparent as possible to the software developer, different parallel
programming interfaces are used (e.g., OpenMP—Open Multi-Processing [22],
PThreads—POSIX Threads [17], or MPI—Message Passing Interface [38]). How-
ever, each one of these has different characteristics with respect to the management
(i.e., creation and finalization of threads/processes), workload distribution, and
synchronization.
In addition to the complex scenario of thread scalability, several optimization
techniques for power and energy management can be used, such as dynamic
voltage and frequency scaling (DVFS) [62] and power gating [47]. The former is
a feature of the processor that allows the application to adapt the clock frequency
and operating voltage of the processor on the fly. It enables software to change
the processing performance to attain low-power consumption while meeting the
performance requirements [62]. On the other hand, power gating consists of
selectively powering down certain blocks in the chip while keeping other blocks
powered up. In multicore processors, it switches off unused cores to reduce power
1.2 Scalability Analysis 3

consumption [84]. Therefore, in addition to selecting the ideal number of threads


to execute an application, choosing the optimal processor frequency and turning off
cores unused during the application execution may lead to significant reduction in
energy consumption with minimal impact on performance.

1.2 Scalability Analysis

Many works have associated the fact that executing an application with the maxi-
mum possible number of available threads (the common choice for most software
developers [63]) will not necessarily lead to the best possible performance. There
are several reasons for this lack of scalability: instruction issue-width saturation; off-
chip bus saturation; data-synchronization; and concurrent shared memory accesses
[51, 64, 95, 114, 115]. In order to measure (through correlation) their real influence,
we have executed four benchmarks from our set (and used them as examples
in the next subsections) on a 12-core machine with SMT support. Each one of
them has one limiting characteristic that stands out, as shown in Table 1.1. The
benchmark hotspot (HS) saturates the issue-width; fast Fourier transform (FFT),
the off-chip bus; MG, the shared memory accesses; and N-body (NB) saturates
data-synchronization. To analyze each of the scalability issues, we considered the
Pearson correlation [9]. It takes a range of values from +1 to −1: the stronger the
“r” linear association between two variables, the closer the value will be to either
+1 or −1. r ≥ 0.9 or r ≤ −0.9 means a very strong correlation (association is
directly or inversely proportional). We discuss these bottlenecks next.
Issue-Width Saturation SMT allows many threads to run simultaneously on a
core. It increases the probability of having more independent instructions to fill the
function units (FUs). Although it may work well for applications with low ILP, it
can lead to the opposite behavior if an individual thread presents enough ILP to
issue instructions to all or most of the core’s FUs. Then, SMT may lead to resource
competition and functional unit contention, resulting in extra idle cycles. Figure 1.1a
shows the performance speedup relative to the sequential version and the number of
idle cycles (average, represented by the bars, and total) as we increase the number
of threads for the HS application. As we start executing with 13 threads, two will
be mapped to the same physical core, activating SMT. From this point on, as the
number of threads grows, the average number of idle cycles increases by a small
amount or stays constant. However, the total number of idle cycles significantly

Table 1.1 Pearson HS FFT MG NB


correlation between the
scalability issues and each Issue-width saturation −0.92 −0.71 −0.79 −0.78
benchmark Off-chip bus saturation −0.51 −0.98 −0.76 0.46
Shared memory accesses −0.52 −0.43 −0.96 0.80
Data-synchronization −0.54 −0.50 −0.59 0.97
4 1 Runtime Adaptability: The Key for Improving Parallel Applications

7.0 1.2 120% 1.2


Avg idle cycles

Normalized w rt sequential
Normalized wrt sequential

Off-chip bus utilization


6.0 Total idle cicles 1 100% 1
Idle Cycles x10 12

5.0 Time
0.8 80% 0.8
4.0
0.6 60% 0.6
3.0
0.4 40% 0.4
2.0
Off-chip
1.0 0.2 20% 0.2
Time
0.0 0 0% 0
1 4 7 10 13 16 19 22 1 4 7 10 13 16 19 22
#Threads # Threads
(a) (b)

Fig. 1.1 Scalability behavior of parallel applications. (a) Issue-width saturation. (b) Off-chip bus
saturation

increases. Because this application has high ILP, there are not enough resources to
execute both threads concurrently as if each one was executed on a single core.
They become the new critical path of that parallel region, as both threads will delay
the execution of the entire parallel region (threads can only synchronize when all
have reached the barrier). Therefore, performance drops and is almost recovered
only with the maximum number of threads executing. In the end, extra resources
are being used without improving performance and potentially increasing energy
consumption, decreasing resource efficiency.

Off-Chip Bus Saturation Many parallel applications operate on huge amounts


of data that are private to each thread and have to be constantly fetched from the
main memory. In this scenario, the off-chip bus that connects memory and processor
plays a decisive role in thread scalability: as each thread computes on different data
blocks, the demand for off-chip bus increases linearly with the number of threads.
However, the bus bandwidth is limited by the number of I/O pins, which does
not increase according to the number of cores [41]. Therefore, when the off-chip
bus saturates, no further improvements are achieved by increasing the number of
threads [115]. Figure 1.2b shows the FFT execution as an example. As the number
of threads increases, execution time and energy consumption reduce until the off-
chip bus becomes completely saturated (100% of utilization). From this point on
(4 threads), increasing the number of threads does not improve performance, as
the bus cannot deliver all the requested data. There might be an increase in energy
consumption as well since many hardware components will stay active while the
cores are not being properly fed with data.
Shared Memory Accesses Threads communicate by accessing data that are
located in shared memory regions, which are usually more distant from the
processor (e.g., L3 cache and main memory), so they can also become a bottleneck.
Figure 1.2 presents the number of accesses to the L3 cache (the only cache level
shared among the cores) in the primary y-axis and the execution time normalized
1.2 Scalability Analysis 5

Fig. 1.2 Scalability behavior 1600 1.2

Shared mem. accesses x109

Normalized wrt s equential


of MG benchmark—shared Shared-Mem Time
1400
memory accesses 1
1200
0.8
1000
800 0.6
600
0.4
400
0.2
200
0 0
1 4 7 10 13 16 19 22
# Threads

to the sequential execution in the secondary y-axis for the MG benchmark.


When the application executes with more than four threads, the performance is
highly influenced by the increased number of accesses to L3. Other factors may
also influence L3 performance: thread scheduling, data affinity, or the intrinsic
characteristics of the application. For instance, an application with a high rate of
private accesses to L1 and L2 may also lead to an increase in the L3 accesses.
Moreover, part of the communication may be hidden from the L3 when SMT is
enabled: two threads that communicate and are executing on the same SMT core
may not need to share data outside it.

Data-Synchronization Synchronization operations ensure data integrity during


the execution of a parallel application. In this case, critical sections are implemented
to guarantee that only one thread will execute a given region of code at once, and
therefore data will correctly synchronize. In this way, all code inside a critical
section must be executed sequentially. Therefore, when the number of threads
increases, more threads must be serialized inside the critical sections. It also
increases the synchronization time (Fig. 1.3a), potentially affecting the execution
time and energy consumption of the whole application. Figure 1.3b shows this
behavior for the n-body benchmark. While it executes with 4 threads or less, the
performance gains within the parallel region reduce the execution time and energy
consumption, even if the time spent in the critical region increases (Fig. 1.3a).
However, from this point on, the time the threads spend synchronizing overcomes
the speedup achieved in the parallel region.

1.2.1 Variables Involved

Considering the prior scenario, choosing the right number of threads to a given
application will offer opportunities to improve performance and increase the energy
efficiency. However, such task is extremely difficult: besides the huge number of
6 1 Runtime Adaptability: The Key for Improving Parallel Applications

10 3.5

Normalized wrt s equential


Parallel Region Time
Critical Region 3.0
8 Energy
Exec ution Time

2.5
6
2.0

4 1.5
1.0
2
0.5
0 0.0
1 3 5 7 9 11 13 15 17 19 21 23 1 4 7 10 13 16 19 22
# Threads # Threads
(a) (b)

Fig. 1.3 Data-synchronization. (a) Critical section behavior. (b) Perf./Energy degradation

5 8
Medium Improvements over seq. Perf.
Perf. Improvements

Small Energy
4 6 EDP

3 4

2 2

1 0
1 4 7 10 13 16 19 22 1 4 7 10 13 16 19 22
# Threads # Threads
(a) (b)
8 20
8-core 1st 2nd
EDP Improvements

Perf. Improvements

24-core 16 3rd 4th


6 32-core
12
4
8
2
4

0 0
1 4 7 10 13 16 19 22 25 28 31 1 4 7 10 13 16 19 22
# Threads # Threads
(c) (d)

Fig. 1.4 Appropriate number of threads (x-axis) considering the improvements over sequential
version (y-axis). (a) Different input sets. (b) Different metrics evaluated. (c) Different multicore
processors. (d) Different parallel regions

variables involved, many of them will change according to different aspects of the
system at hand and are only possible to be defined at runtime, such as:
• Input set: As shown in Fig. 1.4a, different levels of performance improvements
for the LULESH benchmark [57] (also used as examples in the next two items)
over its single-threaded version are reached with a different number of threads (x-
1.3 This Book 7

axis). However, these levels vary according to the input set (small or medium).
While the best number of threads is 12 for the medium input set, the ideal number
for the small set is 11.
• Metric evaluated: As Fig. 1.4b shows, the best performance is reached with 12
threads, while 6 threads bring the lowest energy consumption, and 9 presents
the best trade-off between both metrics (represented by the energy-delay product
(EDP)).
• Processor architecture: Fig. 1.4c shows that the best EDP improvements of the
parallel application on a 32-core system are when it executes with 11 threads.
However, the best choice for a 24-core system is 9 threads.
• Parallel regions: Many applications are divided into several parallel regions, in
which each of these regions may have a distinct ideal number of threads, since
their behavior may vary as the application executes. As an example, Fig. 1.4d
shows the behavior of four parallel regions from the Poisson equation benchmark
[94] when running on a 24-core system. One can note that each parallel region is
better executed with a different number of threads.
• Application behavior: A DVFS enabled system adapts the operating frequency
and voltage at runtime according to the application at hand, taking advantage
of the processor idleness (usually provoked by I/O operations or by memory
requests). Therefore, a memory- or CPU-bound application will influence the
DVFS at different levels.

1.3 This Book

Efficiently exploiting thread-level parallelism from new multicore systems has been
challenging for software developers. While blindly increasing the number of threads
may lead to performance gains, it can also result in a disproportionate increase
in energy consumption. In the same way, optimization techniques for reducing
energy consumption, such as DVFS and power gating, can lead to huge performance
loss if used incorrectly. For this reason, rightly choosing the number of threads,
the operating processor frequency, and the number of active cores is essential to
reach the best compromise between performance and energy. However, such task
is extremely difficult: besides the large number of variables involved, many of
them will change according to different aspects of the system at hand and are
defined at runtime, such as the input set of the application, the metric evaluated, the
processor microarchitecture, and the behavior of the parallel regions that comprise
the application.
In this book, we present and discuss several techniques that address this
challenge.
In Chap. 2, we provide a brief background for the reader. First, we give an
overview of parallel computing in software, presenting the parallel programming
interfaces widely used in multicore architectures. Second, we present the techniques
used in software and hardware to optimize the power and energy consumption
8 1 Runtime Adaptability: The Key for Improving Parallel Applications

of parallel applications. Then, we describe the design space exploration of the


optimization of parallel applications.
Chapter 3 assesses the influence of the parallel programming interfaces that
exploit parallelism through shared variables (OpenMP and PThreads) or message
passing (MPI-1 and MPI-2) on the behavior of parallel applications with different
communication demands for embedded and general-purpose processors.
Chapter 4 presents the works that aim to optimize the execution of parallel
applications by tuning the number of threads (DCT) or by selecting the ideal
processor operating frequency through DVFS. We have conducted an extensive
research considering studies published in the main conferences and journals over the
past fifteen years. In this sense, more than fifty works were analyzed and classified
into three classes according to the optimization method: only DCT, only DVFS, and
the ones that apply both techniques.
Finally, in Chap. 5, we present in details, as a case study, Aurora, which is a new
OpenMP framework that optimizes the performance, energy, or EDP of parallel
applications by tuning the number of threads at runtime without any interference
from the software developer.
Chapter 2
Fundamental Concepts

2.1 Parallel Computing in Software

Parallel programming can be defined as the process of dividing tasks of an


application that can be executed concurrently, aiming to reduce their total execution
time [97]. It has been widely used in the development of scientific applications
that require large computing power, such as weather forecasting calculations, DNA
sequences, and genome calculation. Moreover, with the popularization of multicore
architectures, general-purpose applications (e.g., graphics editors and web servers)
have also been parallelized.
The main goal of parallel computing is to use multiple processing units for
solving problems in less time [36]. The key for parallel computing is the possibility
to exploit concurrency of a given application by decomposing a problem into sub-
problems that can be executed at the same time. As a simple example, suppose that
part of an application involves computing the summation of a large set of values. In a
sequential execution, all the values are added together in only one core, sequentially,
as depicted in Fig. 2.1a. On the other hand, with the parallel computing, the data
set can be partitioned, and the summations computed simultaneously, each on a
different processor (C0, C1, C2, and C3, in Fig. 2.1b). Then, the partial sums are
combined to get the final answer.

2.1.1 Communication Models

Parallel computing exploits the use of multiple processing units to execute parts of
the same program simultaneously. Thus, there is cooperation between the processors
that execute concurrently. However, for this cooperation to occur, processors should
exchange information at runtime. In multicore processors, this can be done through
shared variables or message passing [97]:

© The Author(s), under exclusive license to Springer Nature Switzerland AG 2019 9


A. Francisco Lorenzon, A. C. S. Beck Filho, Parallel Computing Hits the Power Wall,
SpringerBriefs in Computer Science, https://doi.org/10.1007/978-3-030-28719-1_2
10 2 Fundamental Concepts

0
0 1M
1M

2M
2M 3M
3M

4M

(a) (b)

Fig. 2.1 Example of parallel computing. (a) Sequential execution. (b) Parallel execution in four
cores

Shared variable is based on the existence of an address space in the memory that
can be accessed by all processors. It is widely used when parallelism is exploited
at the level of the thread since they share the same memory address space. In this
model, the threads can have private variables (the thread has exclusive access) and
shared variables (all the threads have access). When the threads need to exchange
information between them, they use shared variables located in memory regions that
are accessed by all threads (shared memory). Each parallel programming interface
provides synchronization operations to control the access to shared variables,
avoiding race conditions.
Message passing is used in environments where memory space is distributed
or where processes do not share the same memory address space. Therefore,
communication occurs using send/receive operations which can be point-to-point
or collective ones. In the first, data exchange is done between pairs of processes. In
the latter, more than two processes are communicating.

2.1.2 Parallel Programming Interfaces

The development of applications that can exploit the full potential parallelism of
multiprocessor architectures depends on many specific aspects of their organization,
including the size, structure, and hierarchy of the memory. Operating Systems pro-
vide transparency concerning the allocation and scheduling of different processes
across the various cores. However, when it comes to TLP exploitation, which
involves the division of the application into threads or processes, the responsibility
is of the programmer. Therefore, PPIs make the extraction of the parallelism
easier, fast, and less error-prone. Several parallel programming interfaces are used
nowadays, in which the most common are Open Multi-Processing (OpenMP),
POSIX Threads (PThreads), Message Passing Interface (MPI), Threading Building
Blocks (TBB), Cilk Plus, Charm, among others.
2.1 Parallel Computing in Software 11

OpenMP is a PPI for shared memory in C/C++ and FORTRAN that consists
of a set of compiler directives, library functions, and environment variables [22].
Parallelism is exploited through the insertion of directives in the sequential code that
inform the compiler how and which parts of the code should be executed in parallel.
The synchronization can be implicit (implied barrier at the end of a parallel region)
or explicit (synchronization constructs) to the programmer. By default, whenever
there is a synchronization point, OpenMP threads enter in a hybrid state (Spin-
lock and Sleep), i.e., they access the shared memory repeatedly until the number
of spins of the busy-wait loop is achieved (Spin-lock), and then, they enter into
a sleep state until the end of synchronization [22]. The amount of time that each
thread waits actively before waiting passively without consuming CPU power may
vary according to the waiting policy that gives the number of spins of the busy-wait
loop (e.g., the standard value when omp wait policy is set to being active is 30 billion
iterations) [86].
PThreads is a standard PPI for C/C++, where functions allow fine adjustment
in the grain size of the workload. Thus, the creation/termination of the threads, the
workload distribution, and the control of execution are defined by the programmer
[17]. PThreads synchronization is done by blocking threads with mutexes, which
are inserted in the code by the programmer. In this case, threads lose the processor
and wait on standby until the end of the synchronization, when they are rescheduled
for execution [117].
Cilk Plus is integrated with a C/C++ compiler and extends the language with the
addition of keywords by the programmer indicating where parallelism is allowed.
Cilk Plus enables programmers to concentrate on structuring programs to expose
parallelism and exploit locality. Thus, the runtime system has the responsibility of
scheduling the computation to run efficiently on a given platform. Besides, it takes
care of details like load balancing, synchronization, and communication protocols.
Unlike PThreads and OpenMP, Cilk Plus works at a finer grain, with a runtime
system that is responsible for efficient execution and predictable performance [79].
TBB is a library that supports parallelism based on a tasking model and can be
used with any C++ compiler. TBB requires the use of function objects to specify
blocks of code to run in parallel, which relies on templates and generic program-
ming. The synchronization between threads is done by mutual exclusion, in which
the threads in this state perform busy-waiting until the end of synchronization [79].
MPI is a standard message passing library for C/C++ and FORTRAN. It imple-
ments an optimization mechanism to provide communication in shared memory
environments [38]. MPI is like PThreads regarding the explicit exploitation of
parallelism. Currently, it is divided into three norms. In MPI-1, all processes are
created at the beginning of the execution and the number of processes does not
change throughout program execution. In MPI-2, the creation of the processes
occurs at runtime, and the number of processes can change during the execution.
In MPI-3, the updates include the extension of collective operations to include
nonblocking versions and extensions to the one-sided operations. Communication
between MPI processes occurs through send/receive operations (point-to-point or
collective ones), which are likewise explicitly handled by the programmers. When
12 2 Fundamental Concepts

MPI programs are executed on shared memory architectures, message transmissions


can be done as shared memory accesses, in which messages are broken into
fragments that are pushed and popped in first-in first-out (FIFO) queues of each
MPI process [16, 21].

2.1.3 Multicore Architectures

Multicore architectures have multiple processing units (cores) and a memory system
that enables communication between the cores. Each core is an independent logical
processor with its resources, such as functional units, pipeline execution, registers,
among others. The memory system consists of private memories, which are closer to
the core and only accessible by a single core, and shared memories, which are more
distant from the core and can be accessed by multiple cores [43]. Figure 2.2 shows
an example of a multicore architecture with four cores (C0, C1, C2, and C3) and its
private (L1 and L2 caches) and shared memories (L3 cache and main memory).
Multicore processors can exploit TLP. In this case, multiple processors simul-
taneously execute parts of the same program, exchanging data at runtime through
shared variables or message passing. Regardless of the processor or communication
model, data exchange is done through load/store instructions in shared memory
regions. As Fig. 2.2 shows, these regions are more distant from the processor (e.g.,
L3 cache and main memory), and have a higher delay and power consumption when
compared to memories that are closer to it (e.g., register, L1, and L2 caches) [61].
Among the challenges faced in the design of multicore architectures, one of
the most important is related to the data access on parallel applications. When a
private data is accessed, its location is migrated to the private cache of a core, since
no other core will use the same variable. On the other hand, shared data may be
replicated in multiple caches, since other processors can access it to communicate.
Therefore, while sharing data improves concurrency between multiple processors, it
also introduces the cache coherence problem: when a processor writes on any shared

Fig. 2.2 Basic structure of a


multicore architecture with C0 C1 C2 C3
four cores
L1 L1 L1 L1

L2 L2 L2 L2

L3

Main Memory
2.2 Power and Energy Consumption 13

data, the information stored in other caches may become invalid. In order to solve
this problem, cache coherence protocols are used.
Cache coherence protocols are classified into two classes: directory based and
snooping [88]. In the former, a centralized directory maintains the state of each
block in different caches. When an entry is modified, the directory is responsible
for either updating or invalidating the other caches with that entry. In the snooping
protocol, rather than keeping the state of sharing block in a single directory, each
cache that has a copy of the data can track the sharing status of the block. Thus, all
the cores observe memory operations and take proper action to update or invalidate
the local cache content if needed.
Cache blocks are classified into states, in which the number of states depends
on the protocol. For instance, directory based and snooping protocols are simple
three-state protocols in which each block is classified into modified, shared, and
invalid (they are often called as MSI—modified, shared, and invalid—protocol).
When a cache block is in the modified state, it has been updated in the private
cache, and cannot be in any other cache. The shared state indicates that the block in
the private cache is potentially shared, and the cache block is invalid when a block
contains no valid data. Based on the MSI protocol, extensions have been created
by adding additional states. There are two common extensions: MESI, which adds
the state “exclusive” to the MSI to indicate when a cache block is resident only in
a single cache but is clean, and MOESI, which adds the “state-owned” to the MESI
protocol to indicate that a particular cache owns the associated block and out-of-date
in memory [43].
When developing parallel applications, the software developer does not need
to know about all details of cache coherence. However, knowing how the data
exchange occurs at the hardware level can help the programmer to make better
decisions during the development of parallel applications.

2.2 Power and Energy Consumption

Two main components constitute the power used by a CMOS integrated circuit:
dynamic and static [58]. The former is the power consumed while the inputs are
active, with capacitances charging and discharging, which is directly proportional
to the circuit switching activity, given by Eq. (2.1).

Pdynamic = CV 2 Af (2.1)

Capacitance (C) depends on the wire lengths of on-chip structures. The designers
in several ways can influence this metric. For example, building two smaller cores
on-chip, rather than one large, is likely to reduce average wire lengths, since most
wires will interconnect units within a single core.
14 2 Fundamental Concepts

Supply voltage (V or Vdd) is the main voltage to power the integrated circuit.
Because of its direct quadratic influence on dynamic power, supply voltage has a
high importance on power-aware design.
Activity factor (A) refers to how often clock ticks lead to switching activity on
average.
Clock frequency (f ) has a fundamental impact on power dissipation because it
indirectly influences supply voltage: the higher clock frequencies can require a
higher supply voltage. Thus, the combined portion of supply voltage and clock
frequency in the dynamic power equation has a cubic impact on total power
dissipation.
While dynamic power dissipation represents the predominant factor in CMOS
power consumption, static power has been increasingly prominent in recent tech-
nologies. The static power essentially consists of the power used when the transistor
is not in the process of switching and is determined by Eq. (2.2), where the supply
voltage is V, and the total current flowing through the device is Istatic .

Pstatic = Istatic xV (2.2)

Energy, in joules, is the integral of total power consumed (P) over the time (T),
given by Eq. (2.3).
 T
Energy = Pi (2.3)
0

Currently, energy is considered one of the most fundamental metrics due to the
energy restrictions: while most of the embedded devices are mobile and heavily
dependent on battery, general-purpose processors are being pulled back by the limits
of thermal design power. Also, the reduction of energy consumption on HPC is one
of the challenges to achieving the Exascale era, since the actual energy required to
maintain these systems corresponds to the power from a nuclear plant of medium
size [34]. Therefore, several techniques to reduce energy consumption have been
proposed, such as DVFS and power gating.

2.2.1 Dynamic Voltage and Frequency Scaling

Dynamic voltage and frequency scaling is a feature of the processor that allows
software to adapt the clock frequency and operating voltage of a processor on the
fly without requiring a reset [62]. DVFS enables software to change system-on-
chip (SoC) processing performance to attain low-power consumption while meeting
the performance requirements. The main idea of the DVFS is dynamically scaling
the supply voltage of the CPU for a given frequency so that it operates at a
minimum speed required by the specific task executed [62]. Therefore, this can yield
a significant reduction in power consumption because of the V 2 relationship shown
in Eq. (2.2).
2.2 Power and Energy Consumption 15

Reducing the operating frequency reduces the processor performance and the
power consumption per second. Also, when reducing the voltage, the leakage
current from the CPU’s transistors decreases, making the processor most energy-
efficient resulting in further gains [99]. However, determining the ideal frequency
and voltage for a given point of execution is not a trivial task. To make the DVFS
management as transparent as possible to the software developer, Operating Systems
provide frameworks that allow each CPU core to have a min/max frequency,
and a governor to control it. Governors are kernels models that can drive CPU
core frequency/voltage operating points. Currently, the most common available
governors are:
• Performance: The frequency of the processor is always fixed at the maximum,
even if the processor is underutilized.
• Powersave: The frequency of the processor is always fixed at the minimum
allowable frequency.
• Userspace: allows the user or any userspace program running to set the CPU for
a specific frequency.
• Ondemand: The frequency of the processor is adjusted according to the workload
behavior, within the range of allowed frequencies.
• Conservative: In the same way as the previous mode, the frequency of the
processor is gradually adjusted based on the workload, but in a more conservative
way.
Besides the pre-defined governors, it is possible to set the processor frequency
level manually, by editing the configurations of the CPU frequency driver.

2.2.2 Power Gating

Power gating consists of selectively powering down certain blocks in the chip while
keeping other blocks powered up. The goal of power gating is to minimize leakage
current by temporarily switching power off to blocks that are not required in the
current operating mode [59]. Power gating can be applied either at the unit-level,
reducing the power consumption of unused core functional units or at the core-
level, in which entire cores may be power gated [56, 76]. Currently, power gating
is mainly used in multicore processors to switch off unused cores to reduce power
consumption [84].
Power gating requires the presence of a header “sleep” transistor that can set
the supply voltage of the circuit to ground level during idle times. Power gating
also requires a control logic that decides when to power gate the circuit. Every
time that the power gating is applied, an energy overhead cost occurs due to
distributing the sleep signal to the header transistor before the circuit is turned off,
and turning off the sleep signal and driving the voltage when the circuit is powered
on again. Therefore, there is a break-even point, which represents the exact point in
time where the cumulative leakage energy savings is equal to the energy overhead
16 2 Fundamental Concepts

incurred by power gating. If, after the decision to power gate a unit, the unit stays
idle for a time interval that is longer than the break-even point, then power gating
saves energy. On the other hand, if the unit needs to be active again before the break-
even point is reached, then power gating incurs an energy penalty [75].
Chapter 3
The Impact of Parallel Programming
Interfaces on Energy

3.1 Methodology

3.1.1 Benchmarks

In order to study the characteristics of each PPI regarding the thread/process


management and synchronization/communication, fourteen parallel benchmarks
were implemented and parallelized in C language and classified into two classes:
high and low communication (HC and LC). For that, we considered the amount
of communication (i.e., data exchange), the synchronization operations needed to
ensure data transfer correctness (mutex, barriers), and operations to create/finalize
threads/processes.
Table 3.1 quantifies the communication rate for each benchmark (it also shows
their input sizes), considering 2, 3, 4, and 8 threads/processes, obtained by using
the Intel Pin Tool [74]. HC programs have several data dependencies that must
be addressed at runtime to ensure correctness of the results. Consequently, they
demand large amounts of communication among threads/processes, as it is shown
in Fig. 3.1a. On the other hand, LC programs present little communication among
threads/processes, because they are needed only to distribute the workload and to
join the final result (as it is shown in Fig. 3.1b).
Since the way a parallel application is written may influence its behavior during
execution, we have followed the guidelines indicated by [17, 36, 38] and [22].
The OpenMP implementations were parallelized using parallel loops, splitting the
number of loops iterations (for) among threads. As discussed in [22], this approach
is ideal for applications that compute on uni- and bi-dimensional structures, which
is the case. Loop parallelism can be exploited by using different scheduling types
that distribute the iterations to threads (static, guided, and dynamic) with different
granularities (number of iterations assigned to each thread as the threads request
them). As demonstrated in [69], the static scheduler with coarse granularity presents

© The Author(s), under exclusive license to Springer Nature Switzerland AG 2019 17


A. Francisco Lorenzon, A. C. S. Beck Filho, Parallel Computing Hits the Power Wall,
SpringerBriefs in Computer Science, https://doi.org/10.1007/978-3-030-28719-1_3
18 3 The Impact of Parallel Programming Interfaces on Energy

Table 3.1 Main characteristics of the benchmarks


Operations to exchange data
(Total per no. of threads/processes)
Benchmarks 2 3 4 8 Input size
HC Game of life 414 621 1079 1625 4096 × 4096
Gauss–Seidel 20,004 20,006 20,008 20,016 2048 × 2048
Gram–Schmidt 3,009,277 4,604,284 6,385,952 12,472,634 2048 × 2048
Jacobi 4004 6006 8008 16,016 2048 × 2048
Odd–even sort 300,004 450,006 600,008 1,200,016 150,000
Turing ring 16,000 24,000 32,000 64,000 2048 × 2048
LC Calc. of the PI number 4 6 8 16 4 billions
DFT 4 6 8 16 32,368
Dijkstra 4 6 8 16 2048 × 2048
Dot-product 4 6 8 16 15 billions
Harmonic series 8 12 16 32 100,000
Integral-quadrature 4 6 8 16 1 billion
Matrix multiplication 4 6 8 16 2048 × 2048
Similarity of histograms 4 6 8 16 1920 × 1080

-C omputation Phases
-Communication and
Synchronization
Threads/Processes

Threads/Processes

3 3

2 2

1 1

0 0

Execution Time Execution Time


(a) (b)

Fig. 3.1 Behavior of benchmarks. (a) High communication. (b) Low communication

the best results for the same benchmark set used in this study and, therefore, this
scheduling mechanism is used here.
As indicated by [17, 36] and [38], we have used parallel tasks for the PThreads
and MPI implementations. In such cases, the iterations of the loop were distributed
based on the best workload balancing between threads/processes. Moreover, the
communication between MPI processes was implemented by using nonblocking
operations, to provide better performance, as showed in [44].
Another random document with
no related content on Scribd:
faisait souffrir. Un frisson passait quelquefois sur sa joue maigre ;
ses mâchoires se serraient jusqu’à la crispation.
Je le devinais, ou je l’imaginais, triste aujourd’hui jusqu’à
l’angoisse, et je dis très doucement :
— François.
Il se tourna, me regarda en silence, puis brusquement :
— Alvère, me demanda-t-il, est-ce que vous n’en avez pas assez
de nos sottes rencontres dans la campagne et de nos promenades
d’écoliers ?
— Assez ?… répétai-je.
Et je ne pouvais pas le comprendre, car je voyais bien à l’ardeur
de ses yeux que cet « assez » ne voulait point exprimer la lassitude.
— Oui, poursuivit-il avec cette impatience, cette espèce d’avidité
qui suivaient ses minutes indifférentes, n’aimeriez-vous point,
comme moi, que nous puissions nous voir avec plus de
tranquillité ?… Voici l’automne, les nuits promptes, et les grandes
pluies vont venir… Écoutez, — et sa fiévreuse parole ne me laissait
pas le pouvoir de réfléchir, — vous connaissez, sur la place où est
l’ormeau, notre vieille maison. Ma grand’mère n’a pas voulu que
j’attende sa mort pour en pouvoir disposer : cette maison
m’appartient.
— Je sais…
Avec le jour déclinant, les humides odeurs de l’automne
commençaient à monter des sous bois, et, dans le ciel, d’un bleu
verdâtre et très pur, s’étendaient de paisibles grèves de sable
lumineux vers lesquelles nageaient d’autres nuages, d’apparence
tourmentée, qui portaient de longues plaies rouges dans leurs
masses violettes.
— La bicoque, continuait François, est assez curieuse. Les
fenêtres ont encore leurs petits carreaux épais à travers lesquels se
déforme le paysage. Vous verrez…
Sa phrase prudente, une seconde, demeura en suspens.
— Vous verrez, au premier, dans la grande salle, la cheminée
avec les deux faunes et de petites salamandres ciselées sur chaque
pierre. J’ai fait là ma bibliothèque. Ma chambre est à côté. Je suis
capricieux. Quelquefois il me semble mieux respirer dans cette
maison que dans l’autre, où nous habitons. Alors je viens m’y
installer pour huit jours ou davantage. Tout est prêt pour me
recevoir…
Il hésitait encore. Puis brusque, tout à coup, et suppliant :
— Vous viendrez, n’est-ce pas ? Dites que vous viendrez, Alvère,
dites-le… Ah ! je suis malade, ce soir, malade et triste. Depuis deux
mois nos rencontres sont toute ma joie et le mauvais temps bientôt
va les empêcher… Vous viendrez pour que je ne sois pas trop
malheureux. Ce serait si simple… le soir, parce que dans le jour on
pourrait vous voir entrer ; mais le soir, la ville est si sombre… On doit
se coucher de bonne heure, chez vous ?
Les grands nuages, au-dessus de nos têtes, continuaient d’étirer
leurs formes sanglantes. Je les regardai longuement, et, me levant
pour partir :
— … Comment voulez-vous ?…
— Oh ! que vous êtes empruntée ! Y a-t-il donc à vos portes des
serrures qui grincent très fort ? Que redoutez-vous ? Vous sortirez et
vous pourrez rentrer un peu plus tard sans que personne entende
rien. Si vous avez peur, je vous accompagnerai… Vous viendrez… Il
faut avoir pitié. Il me semble quelquefois que vous me comprenez
bien et cela m’est si doux !… Vous ne savez pas comme je vais les
attendre tout le long des journées, ces petits instants du soir que
vous voudrez bien me donner ! Vous viendrez… vous viendrez…
Sa véhémence savante, toute mêlée d’ailleurs de sincérités
douloureuses, m’étourdissait un peu et il le voyait bien.
— Quel jour ? dites-moi quel jour ?
— Ah ! ne fixons pas de jour, m’écriai-je.
Déjà je courais dans le chemin. François marchait derrière moi,
mais paisiblement et sans me poursuivre. Quand je fus dans le bois,
j’eus peur de me perdre. Je m’arrêtai pour l’attendre. Je me
retournai. Et l’air de contentement que je vis sur son visage me
blessa d’une façon que je devais me rappeler bien souvent.

*
* *

Je me rappelle aussi, deux semaines après ce jour-là, un autre


jour… François m’avait dit : « Je vous attends demain ! » Et ce
demain était venu. Il pleuvait. C’était une de ces pluies d’automne
abondantes et furieuses qui défoncent les routes et font s’écrouler
dans la campagne les maisons fragiles, aux murs de terre et de
cailloux. Je pensais :
— Si cela continue, je n’irai pas. Je ne pourrai pas y aller, et il le
comprendra. On reconnaîtrait demain la trace mouillée de mes pas
dans le couloir. On s’étonnerait de mes vêtements mouillés.
Et de chaque rafale, de chaque ruissellement plus fort s’écrasant
sur le toit, giflant les murs, menaçant de crever les vitres, je tirais
une espèce d’apaisement. Mais, vers le milieu de la journée, les
gros nuages qui se précipitaient en remontant vers le Nord,
cessèrent d’être suivis par d’autres nuages. Une teinte d’un gris
doux et vite blanchissant s’égalisa dans le ciel. Le vent tomba. Avec
une angoisse qui suspendait ma vie, je regardais s’éclaircir ces
dernières brumes ; bientôt, le bleu pur du ciel transparut au-
dessous ; peu à peu, les taches qu’il formait s’étendirent, se
multiplièrent, et ce terrible azur, l’emportant enfin, remplit tout mon
horizon, des toits les plus proches, ruisselants encore et lumineux
jusqu’aux lointains sommets dont les chemins, et les arbres, et les
pierres même, semblait-il, devinrent visibles.
Adélaïde ouvrit les fenêtres. Une odeur délicieuse montait de la
plaine. On y retrouvait les aromes mêlés de la terre pénétrée d’eau
et de toutes les herbes, mais par-dessus leur délicatesse la saveur
plus forte de la menthe humide semblait perceptible aux lèvres et les
faisait s’entr’ouvrir.
Je sortis sur la terrasse, et Guicharde vint avec moi. Le soleil
déjà bas, qui maintenant se montrait, envoyait vers nous
d’insoutenables brûlures, et l’ardeur qu’il avait tenue cachée durant
cette triste journée cherchait en ces dernières minutes à se
dépenser toute. De nos trois figuiers aux platanes de la route se
répondaient des oiseaux éperdus. Mais bientôt sifflèrent au loin les
petites chouettes crépusculaires. Bientôt le croissant pâle de la lune
devint plus clair que le ciel.
Guicharde soupira :
— La nuit sera belle.
Elle avait son visage tourmenté, ses yeux durs des mauvais
jours. Et je lui en voulus, car toute cette souffrance qu’elle me
laissait trop bien voir me permettait d’imaginer en ce moment que
n’importe quelle autre souffrance lui serait préférable. Très bas au-
dessous de nous, la vieille Mélie marchait dans son jardin étroit : elle
s’arrêtait et secouait la tête devant les petits choux d’hiver, plantés
de la veille, et tout écrasés par la pluie. Plus bas encore, sur la
route, une petite fille menait au bout d’une corde une chèvre grise.
La bête affamée se cabrait au long des haies, ruisselantes encore,
et secouait les branches avec une fureur avide.
— Cette enfant est trop sotte, remarqua Guicharde. Elle devrait
attendre que la feuille et l’herbe soient plus sèches pour mener
paître sa chèvre. Elle la fera crever. Si j’étais sur la route, je le lui
dirais.
J’admirais comme de petits soucis la pouvaient facilement
distraire de ses tristesses. Même quand l’emportaient des rêves un
peu désordonnés, son bon sens demeurait toujours là et lui portait
secours aussitôt.
A son exemple, je cherchais, moi aussi, dans tout ce qui nous
entourait, quelque chose à quoi pût s’attacher mon attention. Mais je
vis seulement, derrière la petite gardeuse de chèvre, trois hommes
qui marchaient sur la route. C’étaient des ouvriers de la carrière ; je
le reconnus à leurs chaussures et à leurs vêtements qu’avaient
blanchis les poudres de la pierre, et je ne pus que penser :
— Sûrement, avec cette grande pluie, il ne sera pas allé là-bas
aujourd’hui. Il est resté chez lui, dans cette maison ; il m’a
attendue… il m’attend.
Hélas ! tout me ramenait vers lui et il n’y avait plus à me
défendre. De la salle à manger, maman, qui mettait le couvert avec
Adélaïde, nous cria :
— Prenez garde aux moustiques !
Et quoique je n’en eusse pas senti un, je répondis :
— Vous avez raison. Je rentre. On ne peut pas tenir ici…
Je montai dans ma chambre ; je mis une blouse fraîche et me
recoiffai avec soin. Pauvre toilette naïve, pendant laquelle mon cœur
battait avec tant de force que je croyais l’entendre !… Quand je fus
assise à table, maman remarqua ces recherches et Guicharde dit en
riant :
— As-tu l’intention, Alvère, de suivre la mode anglaise et de
t’habiller chaque soir avec tant de soin ?
Puis elle observa raisonnablement :
— Cette blouse est charmante, mais elle se chiffonne vite. Tu
aurais mieux fait de la conserver fraîche pour dimanche.
— On pourra la repasser de nouveau.
— Oui, dit maman, mais cela finit par brûler le fil.
Elles discutèrent à ce propos des avantages de l’amidon cuit sur
celui qui ne l’était pas et comparèrent la durée des tissus de toile et
des étoffes de coton. Durant tout le repas, nous nous entretînmes
ainsi de petites choses, et cela m’était bon. Mais que ce repas fut
bref ! Jamais il ne m’avait paru aussi misérable qu’après le potage
on pût se nourrir d’un légume seulement et de quelques fruits. Vingt
minutes ! notre souper ne durait que vingt minutes ! Ensuite, la table
desservie, Guicharde prenait son carnet de comptes et maman son
tricot. Elles se taisaient. Et j’avais peur de ce silence qui allait venir ;
je le sentais se former autour de moi, tout plein de pensées
redoutables, d’émotions trop violentes, de résolutions immédiates et
que je ne connaissais pas encore.
— Guicharde, suppliai-je, si nous faisions une partie de loto ?
— Demain, mon petit. Ce soir, j’ai mon relevé de la quinzaine et
je voudrais pourtant me coucher de bonne heure.
— Moi, dit maman, j’ai déjà sommeil. On dort bien par ces
premiers froids.
Il me fallut donc prendre un livre et je m’assis entre elles. L’heure
passa. Les longues aiguilles de maman se mouvaient lentement
entre ses mains somnolentes. Enfin, Guicharde serra son carnet
dans la poche profonde de son tablier noir : elle se leva pour mettre
à leur place, au coin de la cheminée, l’encrier et la plume, et puis
elle sortit pour aller fermer la grosse porte du vestibule et la petite
porte de la cuisine. Éperdument je prêtais l’oreille. Mais les serrures,
chez nous, toujours huilées avec soin, ne faisaient aucun bruit. Cette
complicité, prévue cependant, me parut étonnante ; elle préparait,
appelait et décidait tout.
— Comme ce sera facile de sortir ! pensai-je… comme il sera
simple de rentrer !
Et désormais il me parut que je n’hésitais plus.
« Allons, pensai-je, dès qu’elles vont être couchées… »
J’attendais fiévreusement le retour de Guicharde. Elle parut enfin,
alla jusqu’à la fenêtre, s’assura que les volets tenaient bien et que le
vent, s’il se levait cette nuit, ne les pourrait rabattre.
— Eh bien ! dit-elle, ayant achevé d’accomplir toutes ces petites
besognes, nous montons ?
Je croyais bien maintenant être tout impatience. Je croyais ne
pouvoir assez rapidement me séparer d’elles, et cependant je
suppliai :
— Pas encore.
— Oh ! si ! déclara maman. Je n’en puis plus, mes petites ; mes
yeux se ferment.
Déjà elle se soulevait dans son fauteuil et Guicharde, debout,
préparait nos bougeoirs au coin de la table. Je les regardai l’une et
l’autre, et je suppliai tout bas :
— Ne me laissez pas sortir ce soir… ne me laissez pas sortir…
Maman se pencha sur le bras d’acajou couvert de vieux velours,
qui nous séparait l’une de l’autre.
— Sortir !… Tu avais donc l’intention de sortir ?… à cette heure-
ci !
Mais à Guicharde, les mauvais rêves de la journée avaient donné
de subtiles et amoureuses clairvoyances. Elle gronda, toute
haletante de trouble et de sévérité :
— Pour aller retrouver qui ?
— Alvère ! cria maman.
Et malgré que je tinsse mes yeux fermés, je sus toute l’horreur
qui lui jaillissait au visage. La tête droite, sans me cacher de mes
deux mains qui demeuraient jointes au bord de la table, je pleurais
en silence, et le tremblement incessant de mes épaules, secouant
mon être tout entier faisait passer sous mon front d’insupportables
douleurs. Je ne sais combien de minutes cela put durer et je ne sais
ce qu’elles purent à ce moment comprendre, ces deux femmes
silencieuses que pénétrait ma souffrance… Je ne sais ce qu’elles
purent comprendre, l’une avec ses souvenirs, l’autre avec ses
regrets, chacune avec sa peine, qui venait de l’amour. Maman dit
très bas :
— Ma pauvre petite…
— Ma petite, dit Guicharde.
Chacune me touchait au bras et je dus écarter mes deux mains
pour les leur donner. Je tenais toujours mes yeux serrés, je pleurais
toujours. Cependant je m’apaisais peu à peu, et c’est elles
maintenant dont je sentais les pauvres doigts trembler
passionnément dans les miens.

*
* *
La pluie tombe depuis huit jours. Nous serons bientôt en
décembre. Une odeur froide, qui semble venir des pierres trempées
d’eau et prêtes à se dissoudre, — pierres des vieux murs
ruisselants, pierres des pavés entre lesquelles bondissent de petits
flots ininterrompus, monte de toute la ville. Une danse enragée et
lourde, qui menace de tout enfoncer, ne cesse de bondir et de
piétiner là-haut les tuiles du vieux toit. Il y a dans ce bruit, pressé et
continu, je ne sais quelle monotonie affolée qui étourdit, engourdit, et
mêle à la somnolence un insupportable malaise. — Automne tout
pareil à celui d’alors, à l’automne qui suivit ce soir où je n’allai pas
chez François Landargues, pour supporter le mal qui vient de vous,
il faudrait être au fond de soi très riche ou d’une entière pauvreté.
Mais je suis également loin de la force et de la stupeur. Les
médiocres comme moi ne savent que sentir.
… Nul jour ne se détache entre les mornes jours qui suivirent. Je
ne vois pas ce temps derrière moi comme une suite d’heures
formant des semaines avec leurs dimanches. C’est une seule masse
grise et pesante comme ces vapeurs qui roulent en novembre sur
les prairies crépusculaires. Le temps était mauvais ; la nuit tombait
vite. Émue encore des confidences que j’avais dû lui faire, maman
me considérait trop souvent avec une frayeur désolée. Et puis elle
fermait les yeux, et la méditation qu’il lui fallait subir creusait en
quelques minutes son visage si pâle et si fin. C’est elle, dans ces
moments, qui portait mes remords et elle ne se consolait point de
tout ce que sa chair et son âme avaient mis en moi de faible et de
passionné. — Elle ne me parlait de rien d’ailleurs. J’avais supplié
qu’il en fût ainsi, elle admettait ma prière, et le nom des Landargues
qui, dans nos heures provinciales, revenait jusqu’alors assez
souvent entre nous, n’était plus jamais prononcé.
Je ne me plaignais d’aucune peine, je n’en voulais point
éprouver, et, m’appliquant à rire souvent, je mettais toute ma bonne
volonté à m’occuper sans cesse et utilement, aidant au ménage
comme à la couture, pliant le linge et préparant les pommes et les
figues pour les conserves de l’hiver. Mais ma souffrance, que
semblaient écarter tant de petits gestes, dès qu’ils s’interrompaient
revenait aussitôt se serrer contre mes épaules, et tout mon mal, se
remuant avec force, étirait ses griffes au dedans de moi. D’une
imagination ou d’une mémoire tout à la fois inlassable et épuisée, je
cherchais François, ses phrases durant nos rencontres, ses regards
et ses gestes. Et souvent je chérissais tout de lui, ses tristesses et
ses sourires, et jusqu’à son cœur sec, jusqu’à ses méchancetés
douloureuses ; mais souvent aussi, le comprenant plus clairement, je
n’avais plus pour lui que de la répulsion.
Deux fois déjà, dans la rue Puits-aux-Bœufs et sur le quai du
Rhône, je l’avais revu. On ne me permettait plus de sortir seule, je
ne le demandais pas ; Guicharde chaque fois marchait auprès de
moi. Et, sans presser ni ralentir le pas, il avait salué, d’un geste
indifférent, laissant toutefois s’attacher sur moi un regard d’où ne
venaient ni regrets ni prière, mais seulement, blessante de cette
façon aiguë qu’il savait trop bien faire sentir, la plus méprisante
ironie. M’aimait-il, m’avait-il aimée ? Était-ce de l’amour, ce que moi-
même j’avais éprouvé pour lui ?… Mais les jours passèrent et je
commençais de ne plus bien connaître les causes de ce grand
tourment qui m’occupait encore… Lui-même peu à peu s’en allait de
moi. Et je me rappelle, comme le printemps allait venir, les belles
heures que je passais à la fenêtre de ma chambre, qui était la plus
petite au bout du couloir blanchi à la chaux. Quel bonheur me venait
alors de mon cœur vide, paisible et léger ! Le soleil disparaissait
derrière les monts de l’Ardèche, et devant moi, du ciel où s’étaient
dissous les derniers rayons au fleuve qui le recevait avec eux, la
couleur du miel occupait tout l’espace.
Pauvres âmes que les petites et les ignorantes comme la
mienne, tour à tour paisibles et brûlées, savourant leur folie,
appréciant leur sagesse, et ne sachant jamais bien où il leur
convient de s’établir !

*
* *
Le printemps fut aigre et changeant comme il est souvent dans
nos pays, avec des coups de vent glacé qui secouent sur leur tige et
font tomber les fleurs naissantes, et des soleils si chauds que le blé
vert semble s’allonger dans la minute que l’on met à le regarder. Je
recommençais de sortir seule dans les petites rues qui tournent
autour de la maison et j’apercevais quelquefois le docteur Gourdon.
Il venait là pour soigner l’enfant d’un charpentier, atteint de
tuberculose osseuse et auquel s’intéressait Mme Livron qui est fort
riche, et grande amie de la vieille Mme Landargues. Il me saluait
avec un grand respect et me regardait longuement.
Un jour, il me parla. C’était devant la « Maison des Têtes », où
trois seigneurs et quatre dames, du temps du roi François Ier,
sculptés merveilleusement dans la pierre brunie, penchent au-
dessus des fenêtres à croisillons leurs têtes coiffées de plumes ou
de perles. La rue est malpropre et fort étroite. Au moment que je
passai auprès du docteur, je glissai sur une pelure de pomme et
manquai de tomber. Il étendit le bras pour me retenir et, comme je le
remerciais, en riant de ma maladresse, il rit avec moi. Ensuite, il me
demanda si ma santé était bonne, et s’informa avec un grand intérêt
de ma mère qu’il apercevait quelquefois le dimanche et qu’il trouvait,
me dit-il, un peu pâle et fatiguée. Je répondis qu’elle était, en effet,
d’une santé fragile, et nous demeurions l’un devant l’autre, ne
sachant plus bien ce qu’il fallait ajouter.
Alors, ayant, me parut-il, hésité légèrement, il me demanda :
— Y a-t-il longtemps, mademoiselle, que vous n’avez vu M.
François Landargues ?
La question n’était que banale. Elle me troubla cependant, car je
ne l’attendais point et je répondis : « Très longtemps », avec une
indifférence excessive et maladroite. Fabien Gourdon ne fut point
assez délicat pour ignorer mon trop visible malaise :
— Oh ! dit-il, baissant un peu la voix, je vous demande pardon
d’avoir réveillé des souvenirs…
— Il n’y a pas de souvenirs, ripostai-je.
— A la bonne heure ! approuva Gourdon.
Et il soupira, parce qu’il supposait sans doute que j’avais le cœur
gros et qu’il tenait à me rendre évidente toute sa sympathie :
— Que voulez-vous !… Il était bien à prévoir que Mme
Landargues, si intransigeante, ne permettrait pas à son petit-fils de
se marier selon sa tendresse !
Avait-il donc pu croire que François désirait m’épouser ? Je fus
touchée, et cela me flatta de découvrir chez quelqu’un cette pensée
qui ne m’était jamais venue. Je regardai mieux Gourdon. Il était
admiratif, pitoyable et sincère. Alors je pensai qu’il était honnête de
cœur et de cerveau, et je le fus sans doute moins que lui, car, ayant
fait un geste vague qui pouvait marquer un grand détachement pour
ces choses déjà lointaines, je ne le détrompai pas.

*
* *

Quelques jours plus tard, maman, ayant rendu visite à Mme


Périsse qui était veuve d’un notaire de Vaizon et lui montrait de la
sympathie, en revint tout agitée : elle avait rencontré là le docteur
Gourdon qui, fort aimablement, lui avait demandé la permission de la
venir voir. Elle ne pouvait comprendre cet événement dont elle ne
cessa plus de discuter avec Guicharde, et toutes deux, aidées
d’Adélaïde, commencèrent de grands nettoyages dans notre salon
qui était une pièce humide et sombre, où nous n’entrions jamais,
meublée d’un canapé d’acajou, de quatre fauteuils et d’un petit
guéridon.
Mais Fabien Gourdon ne leur laissa pas le temps de le mettre en
état ; il arriva dès le surlendemain, et nous dûmes le recevoir sur la
terrasse et lui offrir simplement une de nos chaises de paille que,
d’ailleurs, il déclara très confortable. Il dit aussi que notre vue était la
meilleure du pays, notre jardin le mieux soigné, et il ne cessait
d’appeler maman « madame Landargues », mettant à prononcer ce
nom une déférence qui la flattait extrêmement. Je vis tout de suite
qu’il lui plaisait beaucoup et qu’il plaisait à Guicharde. Il s’en aperçut
de son côté, et, prolongeant sa visite qui dura plus de deux heures, il
nous apprit dès ce jour-là complaisamment sur lui-même tout ce qu’il
était possible d’en savoir.
Il nous parla de ses fatigues, de ses malades, et de son
dévouement. Il nous parla de sa famille, de son enfance, de sa
mère, qui, restée veuve très jeune, l’avait élevé. Ses vertus, nous
déclarait-il, et sa bonne entente de toutes choses étaient
remarquables. « C’était une femme d’ordre ; chez nous une servante
n’aurait pu manger un croûton de pain en sus de sa ration sans
qu’elle s’en aperçût. » Il déclarait encore : « C’était une femme
pratique. » Et il nous racontait comment, quand il avait dix-huit ans,
elle avait discuté avec lui du choix d’une carrière, comme ils avaient
pesé les moindres dépenses, escompté dans les bénéfices que le
pays est assez malsain, en somme, avec la chaleur et le grand vent
et que ces chauds et froids qui font longtemps tousser les malades
autorisent le médecin à de fréquentes visites. Ces calculs lui
inspiraient une grande admiration et il les offrait à la nôtre. On voyait
bien qu’il continuait de les pratiquer et menait tous ses actes avec
une prudence étroite et réfléchie.
J’enviais ma mère et ma sœur de savoir si bien l’écouter, avec
toutes les marques d’un contentement sincère, un peu penchées et
modestement repliées sur elles-mêmes, et les mains jointes au bord
de leurs genoux. Pour moi, pendant ce temps, j’étais tout occupée
de me défendre contre un souvenir, le souvenir du jour où Fabien
Gourdon m’avait saluée pour la première fois, dans l’ombre ronde du
gros orme où François Landargues était à mes côtés…
Les paroles de François à ce moment, le rire de François
m’obsédaient au point que, pour ne plus les entendre, il me venait
l’envie de presser mes deux mains contre mes oreilles. Sentant
peut-être au fond des jours futurs ce qui se préparait pour moi,
j’aurais voulu supplier Fabien Gourdon de ne point parler ainsi
quand certaines de ses phrases, plus déplaisantes que les autres,
me semblaient trop bien justifier d’autres phrases ironiques et
dédaigneuses… Et ce fut surtout quand, revenant à sa famille, il se
mit à parler de tous ces Gourdon, établis à Lagarde depuis plus de
trois cents ans.
— Noblesse bourgeoise, affirma-t-il, mais plus ancienne que bien
d’autres, et de très grand mérite.
Et, non sans orgueil, il entreprit de nous conter l’histoire des plus
considérables d’entre ces ancêtres. L’un d’eux, médecin, attaché
pendant six mois à la personne d’un marquis de Saint-Restitut, qui
fut ambassadeur du roi en Italie, l’accompagna dans ses voyages, et
Fabien visiblement en sentait encore la gloire. Un autre, notaire, eut,
vingt ans durant, la confiance d’un puissant descendant des
seigneurs de Mornas. Et cela paraissait au docteur beau comme une
légende… « Petites gens, avait dit François, petites vanités, grandes
platitudes… » Et, me les dépeignant avec son rire mauvais tels qu’il
me fallait bien les connaître aujourd’hui, serviles et médiocres, ne
cessant de tourner, dans leur avidité vaine, autour de la puissance et
de la richesse, n’avait-il pas dit encore : « La race est immuable et
celui-ci leur ressemble » ?…
Souvenirs détestables ! Sur la terrasse paisible que baignait le
soleil d’avril, aux côtés de maman et de Guicharde si doucement
satisfaites, je continuais de me défendre contre eux. Et de toute ma
force, imitant la sagesse de mes chères femmes, je m’appliquais à
considérer tout ce que cet homme nous apprenait de sa famille et de
lui-même, selon les apparences qu’il en voulait donner et qui étaient
excellentes.

*
* *

Maman prit à cette visite tant de plaisir qu’elle osa prier le


docteur de revenir. Il le fit la semaine suivante et désormais
fréquenta chez nous très régulièrement. Selon ses occupations, il
arrivait quelquefois à l’heure de midi quand, par les beaux jours de
printemps, la maison la plus modeste sent les fraises et le pain
chaud. Il venait plus souvent vers le soir, quand les rondes chauves-
souris commencent de tourner et de palpiter autour du figuier,
pareilles à de petits cœurs obscurs et frémissants. Un matin
qu’Orphise nous avait offert une poule encore savoureuse, maman
le pria de partager notre repas. Un soir il resta si longtemps qu’on ne
pouvait plus voir quand il partit les maisons de la plaine ; il n’y avait
plus d’éveillé devant nous que le grand Rhône et sa course
bondissante qui voulait emporter avec elle, mais ne savait que briser
en éclats la douceur des étoiles.
Après qu’il était parti, Guicharde et maman demeuraient
silencieuses. Elles évitaient de me parler de lui et je voyais bien
qu’une espérance trop belle les oppressait l’une et l’autre.
Cependant elles s’inquiétaient si je paraissais rêver à mon tour et
Guicharde me disait :
— Allons à la feuille.
Car pour augmenter de quelques dizaines de francs nos petites
rentes, elle avait décidé, comme on dit à Lagarde, de « faire des
vers à soie. » Elle avait acheté trois onces de graine et les magnans
venaient d’éclore. Nous avions installé les « canisses » qui les
portaient dans un petit bâtiment de la terrasse où mon grand-père
autrefois avait son atelier ; nous y faisions de grands feux de
broussailles et de branches et trois fois le jour, dans les champs
inclinés qui couvrent la colline, nous allions prendre aux mûriers
ronds leur feuille épaisse et tendre qui nous mouillait les doigts.
La terre était toute frissonnante de sa vie nouvelle ; pour aller
d’un arbre à l’autre, nous devions prendre bien garde de ne pas
fouler l’orge et le blé nouveaux qui sortaient de terre. L’acacia aux
fleurs fragiles, le micocoulier qui, pendant quelques jours, dans son
immense et neigeux épanouissement, semble n’avoir plus de
feuilles, le roncier rose et les quelques fleurs de grenadier qui
rayonnent çà et là dans les jardins provençaux étaient tout éclatants
de leurs belles couleurs et d’un tumulte d’abeilles. « Écoute-les,
disais-je à Guicharde, écoute les abeilles. » Et nous entendions
aussi, de l’autre côté du fleuve, sur la grande route, les sonnailles
nostalgiques des longs troupeaux qui de la Camargue remontent
vers les Alpes pour y passer la saison chaude. Elles résonnent de
l’aube au soir pendant ces jours de printemps. Et la poussière que
font lever tant de bêtes en marche traîne au-dessus des platanes
réguliers et semble dans le grand soleil un nuage plus bas que les
autres et comme alourdi d’un or plus pesant.
… Or, un jeudi de grande lessive où Guicharde avait dû rester à
la maison, j’étais allée seule à la feuille et portant au bras le grand
panier où s’entassait ma récolte, je revenais lentement par le roide
chemin qui monte à la ville. J’eus la surprise de voir ma sœur qui
descendait ce chemin presque en courant. Sans doute elle venait
au-devant de moi, car elle s’arrêta en me voyant. Elle avait sa
blouse de toile qu’elle portait seulement dans la maison et point de
chapeau. Elle me cria :
— Viens vite !
— Qu’est-ce qu’il y a donc ?
Sa présence et son agitation m’effrayaient. Quand je fus près
d’elle, elle me saisit le bras ; et elle riait en me regardant avec des
larmes plein les yeux.
— Non ! n’aie pas peur. Viens vite, maman t’attend.
— Mais qu’y a-t-il ?
— Maman te dira.
Dans notre marche rapide, je sentais les bonnes odeurs du
printemps glisser sur mon visage comme deux mains qui l’eussent
enfermé. Nous entrions dans la ville. Le bleu qui coulait du ciel
pénétrait par les fenêtres ouvertes jusqu’au fond des maisons. Les
miroirs accrochés le recueillaient pour en répandre la bienfaisance à
travers les sombres pièces ; de beaux cuivres luisaient sur les
meubles luisants.
— Guicharde, c’est du bonheur ?
— Tu vas savoir.
Quand nous fûmes à notre porte, elle cria : « La voilà ! » et
j’entendis maman qui courait dans la salle. Elle se jeta dans mes
bras, elle m’entraîna ; et quand Guicharde eut refermé la porte
derrière nous :
— Alvère !… le docteur Gourdon est venu tout à l’heure te
demander en mariage.
Elles se mirent à pleurer l’une et l’autre, tandis que, m’appuyant
au bord de la table, je tournai les yeux vers le beau ciel qui pénétrait
aussi notre maison.
— Un mari pour toi, un mari ! disait maman, grave jusqu’à la
ferveur et joignant les mains.
— Un mari !… répétait Guicharde.
Elles me pressaient contre elles, puis, s’écartant un peu, me
regardaient tout éblouies. On eût dit qu’un miracle avait passé sur
moi.
— Tu l’aimes, n’est-ce pas, tu l’aimes ? demandait Guicharde.
Et maman disait gravement :
— Ah ! comme il te faudra l’aimer !
Il devait, me dirent-elles, revenir le soir même pour chercher ma
réponse, dont il ne doutait pas. Avant qu’il fût là et comme la nuit
déjà commençait de descendre, je m’en allai dans notre jardin et je
m’assis au bord du bassin sur la margelle de briques. Tout mon
cœur désirait se remplir d’espérance ; cependant mes paupières
étaient lourdes et je baissais les yeux. La lune reposait comme une
perle au fond de l’eau noire et, quand un souffle passait, elle
tremblait et semblait se dissoudre en petits flots pressés et
magnifiques.

*
* *

… A ce point où j’en suis de mon pauvre récit, il faudrait raconter,


je le comprends, ce que furent les premières semaines et les
premiers mois de notre mariage, et comme d’abord, en dépit de tout
ce que j’avais pu redouter, il me parut bien que j’étais heureuse,
Fabien peut-être me répétait un peu trop souvent : « François
Landargues t’aimait, n’est-ce pas… il t’aimait ? » Et peut-être dans
ces moments-là, cette admiration passionnée que je lui inspirais,
cette tendresse violente, cet amour emporté prenaient plus de
passion, de violence et d’emportement. Mais négligeant tout,
oubliant tout, il semblait au long des journées ne plus pouvoir se
séparer de moi ; la douceur d’être aimée empêchait qu’il me fût
possible de connaître nulle autre chose ; et quand Fabien
commença de reprendre ses visites et d’aller depuis le matin à
travers la campagne, il me faut bien me rappeler que j’occupais
seulement mes journées à l’attendre et qu’entre tous les bruits du
soir aucun ne me plaisait autant que le halètement pressé du petit
moteur qui emportait sur les routes et ramenait vers moi sa voiture
grise, un peu basse et lourde, pareille à quelque gros cloporte roulé
dans la poussière.
… Oui, maintenant sans doute il me faudrait dire tout cela… Mais
ce temps dura peu. Ce que Fabien appelait sa raison lui revint aussi
rapidement que l’eau des marais recouvre le sable un instant tiédi et
délivré par le soleil et le grand vent, et tout aussitôt, recommençant
de me vanter les sèches vertus de sa mère et ne cessant plus de me
les donner en exemple, il organisa notre vie selon cette prudence et
ces petits calculs qui menaient non seulement ses moindres actes,
mais tout ce qu’il pouvait avoir de pensées et de sentiments.
Quoi qu’il demandât cependant, et quoi que valussent ses
conseils, il m’était doux encore de n’examiner rien et de lui marquer
de l’obéissance, et je m’appliquais à bien considérer qu’il avait
raison en toutes choses… Mais peu à peu cette bonne volonté qui
comblait tout mon cœur, ce cher aveuglement auquel je m’obstinais,
allaient se défaisant malgré tout mon effort… Peu à peu… peu à
peu… Ah ! pour bien expliquer cela, sans doute faudrait-il avoir lu
plus de choses, connaître plus de mots et, dans ce ténébreux et
délicat domaine des exigences secrètes et des blessures indéfinies,
savoir se conduire avec moins d’inquiétude et de maladresse…
C’est un mot, une fois, que l’on voudrait n’avoir pas entendu ;
l’imprudence, un autre jour, de demander : à quoi penses-tu ? et
d’apercevoir, quand cette pensée vous est dite dans sa sincérité,
tout ce qu’elle a de vulgaire et de déplaisant. Et c’est enfin, après
tant de froissements, la révélation plus précise de cette misère
d’âme que depuis tant de jours on se défendait si tristement de
connaître ou de soupçonner…
L’automne était à son milieu ; les jours de pluie déjà s’emmêlaient
aux beaux jours, et, dans la même minute, le souffle qui passait,
remuait, avec toute l’ardeur des derniers soleils, l’acidité piquante du
froid qui allait venir. Comme le soir tombait, le vent du nord
commença de tordre et de dresser à la cime de notre acacia les
petites feuilles sèches ; il secoua durement les portes, glissa aux
fentes trop larges des volets et, déjà frissonnante, j’allumai dans ma
chambre un grand feu de bois, le premier feu de l’année. La pièce
morne aussitôt en fut tout embellie : une âme claire dansait au flanc
lourd des vieux meubles ; la mélancolie inquiète que je commençais
quelquefois de sentir et qui m’avait tenue tout le jour se dissipa ; et
j’attendais Fabien au coin de ce feu aussi tendrement, je pense, que
je l’avais attendu, pendant nos semaines amoureuses, à ma fenêtre
ouverte sur le beau temps. — Mais il arriva tout agité, et, me
racontant sa journée, il m’apprit aussitôt que, passant devant la
Cloche, il y était entré pour rendre visite à la vieille Mme Landargues
et qu’elle l’avait fort bien reçu.
Or, cette femme impitoyable, de cœur si orgueilleux et dur dans
ses rancunes, pas plus qu’elle n’en prêtait à quoi que ce fût de nos
humbles vies, n’avait prêté d’attention à mon mariage. Elle avait eu
l’insolence de dire à Fabien qui le lui annonçait : « Ne me parlez pas
de ces personnes, je vous prie, si vous désirez rester de mes
amis… » Depuis cette parole il ne l’avait pas revue ; il n’avait pas
revu François, voyageant en Espagne, — avec Julie Bérard,
affirmait-on — et qui lui avait envoyé sur sa carte quatre mots
exactement de félicitations. Sans doute il se vantait de rencontrer
quelquefois au café un certain Romain de Buires, neveu de François
par sa mère, et qui, durant ses absences, le suppléait dans la
direction des carrières. Il disait, en parlant de ce jeune homme :
« Mon ami de Buires… » Mais cela était seulement un peu ridicule.
Et je voulais espérer que les Landargues maintenant seraient
ignorés de nous comme ils entendaient, avec tant de mépris, que
nous le fussions d’eux-mêmes.
Je ne pus donc, en écoutant Fabien, me tenir de m’exclamer. Il
me considéra avec une extrême surprise.
— Mais, me dit-il, elle s’est toujours montrée fort aimable à mon
égard. Je ne serai pas si sot que de laisser perdre une semblable
relation.
Et ce furent, je crois bien, la simplicité, la sincérité avec
lesquelles il prononça cette petite phrase qui me firent le plus de
mal.
— Et… elle t’a demandé de mes nouvelles ?
Les larmes déjà me montaient aux yeux. Ma voix tremblait.
— Mais non, dit-il toujours simplement et sans ressentir l’offense
pour lui plus que pour moi-même. Que veux-tu ? Elle est ainsi. Nous
avons parlé, absolument comme autrefois, d’histoire et de médailles.
A ce propos, elle m’a conseillé…
— Ah !… criai-je, tu ne comprends donc pas !…
Il haussa les épaules, en déclarant :
— Je comprends que tu penses seulement à tes susceptibilités et
que cela est ridicule. Il faut dans la vie avoir plus d’adresse.
Et, sans me laisser rien ajouter, il m’apprit aussitôt que François
était revenu d’Espagne, mais fort malade, et que Fardier l’avait
engagé à faire dans les montagnes un séjour qui pouvait être de
longue durée. A ce propos, haussant les épaules, il s’emporta contre
ce vieil homme dont les Landargues faisaient tant de cas, déclarant
ses ordonnances stupides, et qu’il était un âne ; les pires malheurs
pouvaient bien arriver aux imbéciles capables de se remettre entre
ses mains… Et certes, je savais bien qu’il n’aimait pas Fardier, ni
Mandel, d’ailleurs, son autre confrère à Lagarde ; mais jamais
encore il ne m’avait paru mettre dans ses jugements tant d’aigreur
brutale et de visible envie. — Enfin, il me quitta pour aller chercher le
courrier dans son cabinet et ce départ me fit du bien. Mais les
joyeuses flammes de tout à l’heure s’étaient éteintes derrière les
hauts chenets rouillés. Une âcre et sifflotante fumée montait des
bûches noircies, et, serrant contre ma poitrine mes deux bras
croisés, je tremblais dans la pièce sombre, entre les meubles
pesants, d’un petit frisson interminable et douloureux.

C’est ce jour-là, oui, ce jour-là, que je revis pour la première fois


mon mari tel qu’il n’avait point cessé d’être, avec son cœur
courtisan, son imagination petite et pesante, et toute la misère de
ses moindres sentiments. Mais que de jours encore il me fallut avant
de revenir à la désolante assurance que, bien réellement, il était
ainsi ! Que de luttes, que de décourageantes certitudes, sans cesse
plus nombreuses et pressantes, venant tourner autour de moi, se
faisant accepter malgré ma défense et me laissant chacune sa
blessure et son tourment ! Hélas ! il me fallait bien voir maintenant
que ce qu’il voulait m’apprendre par tous ses conseils pour la bonne
tenue de notre maison, c’était seulement cette méfiance à l’égard
des serviteurs, cette haineuse exigence, cette espèce d’avarice
enseignée par sa mère et qu’il entendait bien me faire pratiquer. Ses
recommandations au moment où j’allais faire ou recevoir une visite
étaient toutes pénétrées de la plus mesquine et de la plus aigre
vanité. Et je ne sais rien de plus lamentable que ses inquiétudes
quand, me parlant de lui-même et de ses talents abondants, il
enrageait de n’occuper pas à Lagarde la situation qu’il méritait et
déclarait qu’il y saurait bien parvenir… Il avait dans sa clientèle
quelques bourgeois riches et deux propriétaires importants de la
plaine, et sans cesse il rappelait leurs noms, soucieux de leurs plus
vagues malaises et si satisfait de les approcher que, volontiers, je le
crois bien, il n’eût accepté d’eux aucun payement. Mais il enrageait
d’avoir surtout à soigner de pauvres gens et se montrait avec eux
d’une impitoyable âpreté.
Deux fois par semaine avait lieu sa consultation. Alors il fallait
qu’un religieux silence occupât la maison. La femme qui nous servait
devait mettre un tablier à volants de dentelle comme dans les villes
et, dans la salle à manger où attendait l’humble clientèle aux faces

You might also like