An Introduction to Parallel Programming 2. Edition Pacheco - eBook PDF download
An Introduction to Parallel Programming 2. Edition Pacheco - eBook PDF download
https://ebooksecure.com/download/an-introduction-to-parallel-
programming-ebook-pdf/
http://ebooksecure.com/product/ebook-pdf-introduction-to-
programming-using-python-an-1/
https://ebooksecure.com/download/parallel-programming-concepts-
and-practice-ebook-pdf/
http://ebooksecure.com/product/ebook-pdf-java-an-introduction-to-
problem-solving-and-programming-7th-edition/
http://ebooksecure.com/product/ebook-pdf-java-an-introduction-to-
problem-solving-and-programming-8th-edition/
(eBook PDF) Microsoft Visual C#: An Introduction to
Object-Oriented Programming 7th Edition
http://ebooksecure.com/product/ebook-pdf-microsoft-visual-c-an-
introduction-to-object-oriented-programming-7th-edition/
http://ebooksecure.com/product/python-programming-an-
introduction-to-computer-science-3rd-edition-by-john-zelle-ebook-
pdf/
http://ebooksecure.com/product/ebook-pdf-introduction-to-
programming-using-visual-basic-10th-edition/
https://ebooksecure.com/download/introduction-to-java-
programming-comprehensive-version-ebook-pdf/
http://ebooksecure.com/product/ebook-pdf-introduction-to-java-
programming-brief-version-global-edition-11th-edition/
An Introduction to Parallel
Programming
SECOND EDITION
Peter S. Pacheco
University of San Francisco
Matthew Malensek
University of San Francisco
Table of Contents
Cover image
Title page
Copyright
Dedication
Preface
1.10. Summary
1.11. Exercises
Bibliography
2.6. Performance
2.9. Assumptions
2.10. Summary
2.11. Exercises
Bibliography
3.8. Summary
3.9. Exercises
Bibliography
4.5. Busy-waiting
4.6. Mutexes
4.11. Thread-safety
4.12. Summary
4.13. Exercises
Bibliography
5.10. Tasking
5.11. Thread-safety
5.12. Summary
5.13. Exercises
Bibliography
6.13. CUDA trapezoidal rule III: blocks with more than one warp
6.15. Summary
6.16. Exercises
Bibliography
7.5. Summary
7.6. Exercises
Bibliography
Bibliography
Bibliography
Bibliography
Index
Copyright
Morgan Kaufmann is an imprint of Elsevier
50 Hampshire Street, 5th Floor, Cambridge, MA 02139,
United States
Notices
Knowledge and best practice in this field are constantly
changing. As new research and experience broaden our
understanding, changes in research methods,
professional practices, or medical treatment may become
necessary.
Practitioners and researchers must always rely on their
own experience and knowledge in evaluating and using
any information, methods, compounds, or experiments
described herein. In using such information or methods
they should be mindful of their own safety and the safety
of others, including parties for whom they have a
professional responsibility.
ISBN: 978-0-12-804605-0
Typeset by VTeX
Printed in United States of America
Here the prefix indicates that each core is using its own,
private variables, and each core can execute this block of
code independently of the other cores.
After each core completes execution of this code, its
variable will store the sum of the values computed by
its calls to . For example, if there are eight
cores, , and the 24 calls to return the
values
1, 4, 3, 9, 2, 8, 5, 1, 1, 6, 2, 7, 2, 5, 0, 4, 1, 8, 6, 5,
1, 2, 3, 9,
then the values stored in might be
The idea here is that each core will wait in the function
until all the cores have entered the function—in
particular, until the master core has entered this function.
Currently, the most powerful parallel programs are
written using explicit parallel constructs, that is, they are
written using extensions to languages such as C, C++, and
Java. These programs include explicit instructions for
parallelism: core 0 executes task 0, core 1 executes task 1,
…, all cores synchronize, …, and so on, so such programs
are often extremely complex. Furthermore, the complexity
of modern cores often makes it necessary to use
considerable care in writing the code that will be executed
by a single core.
There are other options for writing parallel programs—
for example, higher level languages—but they tend to
sacrifice performance to make program development
somewhat easier.
1.10 Summary
For many years we've reaped the benefits of having ever-
faster processors. However, because of physical limitations,
the rate of performance improvement in conventional
processors has decreased dramatically. To increase the
power of processors, chipmakers have turned to multicore
integrated circuits, that is, integrated circuits with multiple
conventional processors on a single chip.
Ordinary serial programs, which are programs written
for a conventional single-core processor, usually cannot
exploit the presence of multiple cores, and it's unlikely that
translation programs will be able to shoulder all the work
of converting serial programs into parallel programs—
programs that can make use of multiple cores. As software
developers, we need to learn to write parallel programs.
When we write parallel programs, we usually need to
coordinate the work of the cores. This can involve
communication among the cores, load balancing, and
synchronization of the cores.
In this book we'll be learning to program parallel
systems, so that we can maximize their performance. We'll
be using the C language with four different application
program interfaces or APIs: MPI, Pthreads, OpenMP, and
CUDA. These APIs are used to program parallel systems
that are classified according to how the cores access
memory and whether the individual cores can operate
independently of each other.
In the first classification, we distinguish between shared-
memory and distributed-memory systems. In a shared-
memory system, the cores share access to one large pool of
memory, and they can coordinate their actions by accessing
shared memory locations. In a distributed-memory system,
each core has its own private memory, and the cores can
coordinate their actions by sending messages across a
network.
In the second classification, we distinguish between
systems with cores that can operate independently of each
other and systems in which the cores all execute the same
instruction. In both types of system, the cores can operate
on their own data stream. So the first type of system is
called a multiple-instruction multiple-data or MIMD
system, and the second type of system is called a single-
instruction multiple-data or SIMD system.
MPI is used for programming distributed-memory MIMD
systems. Pthreads is used for programming shared-memory
MIMD systems. OpenMP can be used to program both
shared-memory MIMD and shared-memory SIMD systems,
although we'll be looking at using it to program MIMD
systems. CUDA is used for programming Nvidia graphics
processing units or GPUs. GPUs have aspects of all four
types of system, but we'll be mainly interested in the
shared-memory SIMD and shared-memory MIMD aspects.
Concurrent programs can have multiple tasks in
progress at any instant. Parallel and distributed
programs usually have tasks that execute simultaneously.
There isn't a hard and fast distinction between parallel and
distributed, although in parallel programs, the tasks are
usually more tightly coupled.
Parallel programs are usually very complex. So it's even
more important to use good program development
techniques with parallel programs.
1.11 Exercises
1.1 Devise formulas for the functions that calculate
and in the global sum example.
Remember that each core should be assigned
roughly the same number of elements of
computations in the loop. : First consider the
case when n is evenly divisible by p.
1.2 We've implicitly assumed that each call to
requires roughly the same amount of
work as the other calls. How would you change your
answer to the preceding question if call requires
times as much work as the call with ? How
would you change your answer if the first call ( )
requires 2 milliseconds, the second call ( )
requires 4, the third ( ) requires 6, and so on?
1.3 Try to write pseudocode for the tree-structured
global sum illustrated in Fig. 1.1. Assume the
number of cores is a power of two (1, 2, 4, 8, …).
: Use a variable to determine whether a
core should send its sum or receive and add. The
should start with the value 2 and be doubled
after each iteration. Also use a variable to
determine which core should be partnered with the
current core. It should start with the value 1 and
also be doubled after each iteration. For example, in
the first iteration and , so 0
receives and adds, while 1 sends. Also in the first
iteration and , so 0 and
1 are paired in the first iteration.
1.4 As an alternative to the approach outlined in the
preceding problem, we can use C's bitwise operators
to implement the tree-structured global sum. To see
how this works, it helps to write down the binary
(base 2) representation of each of the core ranks and
note the pairings during each stage: =8.5cm
From the table, we see that during the first stage each
core is paired with the core whose rank differs in the
rightmost or first bit. During the second stage, cores
that continue are paired with the core whose rank
differs in the second bit; and during the third stage,
cores are paired with the core whose rank differs in
the third bit. Thus if we have a binary value that
is 0012 for the first stage, 0102 for the second, and
1002 for the third, we can get the rank of the core
we're paired with by “inverting” the bit in our rank
that is nonzero in . This can be done using the
bitwise exclusive or ∧ operator.
Implement this algorithm in pseudocode using the
bitwise exclusive or and the left-shift operator.
1.5 What happens if your pseudocode in Exercise 1.3 or
Exercise 1.4 is run when the number of cores is not a
power of two (e.g., 3, 5, 6, 7)? Can you modify the
pseudocode so that it will work correctly regardless
of the number of cores?
1.6 Derive formulas for the number of receives and
additions that core 0 carries out using
a. the original pseudocode for a global sum, and
b. the tree-structured global sum.
Make a table showing the numbers of receives and
additions carried out by core 0 when the two sums
are used with cores.
1.7 The first part of the global sum example—when
each core adds its assigned computed values—is
usually considered to be an example of data-
parallelism, while the second part of the first global
sum—when the cores send their partial sums to the
master core, which adds them—could be considered
to be an example of task-parallelism. What about the
second part of the second global sum—when the
cores use a tree structure to add their partial sums?
Is this an example of data- or task-parallelism? Why?
1.8 Suppose the faculty members are throwing a party
for the students in the department.
a. Identify tasks that can be assigned to the
faculty members that will allow them to use task-
parallelism when they prepare for the party.
Work out a schedule that shows when the various
tasks can be performed.
b. We might hope that one of the tasks in the
preceding part is cleaning the house where the
party will be held. How can we use data-
parallelism to partition the work of cleaning the
house among the faculty?
c. Use a combination of task- and data-parallelism
to prepare for the party. (If there's too much
work for the faculty, you can use TAs to pick up
the slack.)
1.9 Write an essay describing a research problem in
your major that would benefit from the use of
parallel computing. Provide a rough outline of how
parallelism would be used. Would you use task- or
data-parallelism?
Bibliography
[5] Clay Breshears, The Art of Concurrency: A Thread
Monkey's Guide to Writing Parallel Applications.
Sebastopol, CA: O'Reilly; 2009.
[28] John Hennessy, David Patterson, Computer
Architecture: A Quantitative Approach. 6th ed.
Burlington, MA: Morgan Kaufmann; 2019.
[31] IBM, IBM InfoSphere Streams v1.2.0 supports
highly complex heterogeneous data analysis, IBM
United States Software Announcement 210-037,
Feb. 23, 2010
http://www.ibm.com/common/ssi/rep_ca/7/897/ENUS
210-037/ENUS210-037.PDF.
[36] John Loeffler, No more transistors: the end of
Moore's Law, Interesting Engineering, Nov 29, 2018.
See https://interestingengineering.com/no-more-
transistors-the-end-of-moores-law.
Chapter 2: Parallel
hardware and parallel
software
It's perfectly feasible for specialists in disciplines other
than computer science and computer engineering to write
parallel programs. However, to write efficient parallel
programs, we often need some knowledge of the underlying
hardware and system software. It's also very useful to have
some knowledge of different types of parallel software, so
in this chapter we'll take a brief look at a few topics in
hardware and software. We'll also take a brief look at
evaluating program performance and a method for
developing parallel programs. We'll close with a discussion
of what kind of environment we might expect to be working
in, and a few rules and assumptions we'll make in the rest
of the book.
This is a long, broad chapter, so it may be a good idea to
skim through some of the sections on a first reading so that
you have a good idea of what's in the chapter. Then, when a
concept or term in a later chapter isn't quite clear, it may
be helpful to refer back to this chapter. In particular, you
may want to skim over most of the material in
“Modifications to the von Neumann Model,” except “The
Basics of Caching.” Also, in the “Parallel Hardware”
section, you can safely skim the material on
“Interconnection Networks.” You can also skim the material
on “SIMD Systems” unless you're planning to read the
chapter on CUDA programming.
Another Random Scribd Document
with Unrelated Content
The Project Gutenberg eBook of Ambition
This ebook is for the use of anyone anywhere in the United States
and most other parts of the world at no cost and with almost no
restrictions whatsoever. You may copy it, give it away or re-use it
under the terms of the Project Gutenberg License included with this
ebook or online at www.gutenberg.org. If you are not located in the
United States, you will have to check the laws of the country where
you are located before using this eBook.
Title: Ambition
Language: English
By WILLIAM L. BADE
Illustrated by L. WOROMAY
There was a thump. Maitland stirred, came half awake, and opened
his eyes. The room was dark except where a broad shaft of
moonlight from the open window fell on the foot of his bed. Outside,
the residential section of the Reservation slept silently under the pale
illumination of the full Moon. He guessed sleepily that it was about
three o'clock.
What had he heard? He had a definite impression that the sound
had come from within the room. It had sounded like someone
stumbling into a chair, or—
Something moved in the darkness on the other side of the room.
Maitland started to sit up and it was as though a thousand volts had
shorted his brain....
This time, he awoke more normally. He opened his eyes, looked
through the window at a section of azure sky, listened to the singing
of birds somewhere outside. A beautiful day. In the middle of the
process of stretching his rested muscles, arms extended back, legs
tensed, he froze, looking up—for the first time really seeing the
ceiling. He turned his head, then rolled off the bed, wide awake.
This wasn't his room!
The lawn outside wasn't part of the Reservation! Where the labs and
the shops should have been, there was deep prairie grass, then a
green ocean pushed into waves by the breeze stretching to the
horizon. This wasn't the California desert! Down the hill, where the
liquid oxygen plant ought to have been, a river wound across the
scene, almost hidden beneath its leafy roof of huge ancient trees.
Shock contracted Maitland's diaphragm and spread through his body.
His breathing quickened. Now he remembered what had happened
during the night, the sound in the darkness, the dimly seen figure,
and then—what? Blackout....
Where was he? Who had brought him here? For what purpose?
He thought he knew the answer to the last of those questions. As a
member of the original atomic reaction-motor team, he possessed
information that other military powers would very much like to
obtain. It was absolutely incredible that anyone had managed to
abduct him from the heavily guarded confines of the Reservation,
yet someone had done it. How?
He pivoted to inspect the room. Even before his eyes could take in
the details, he had the impression that there was something wrong
about it. To begin with, the style was unfamiliar. There were no
straight lines or sharp corners anywhere. The walls were paneled in
featureless blue plastic and the doors were smooth surfaces of
metal, half ellipses, without knobs. The flowing lines of the chair and
table, built apparently from an aluminum alloy, somehow gave the
impression of arrested motion. Even after allowances were made for
the outlandish design, something about the room still was not right.
His eyes returned to the doors, and he moved over to study the
nearer one. As he had noticed, there was no knob, but at the right
of this one, at about waist level, a push-button projected out of the
wall. He pressed it; the door slid aside and disappeared. Maitland
glanced in at the disclosed bathroom, then went over to look at the
other door.
There was no button beside this one, nor any other visible means of
causing it to open.
Baffled, he turned again and looked at the large open window—and
realized what it was that had made the room seem so queer.
It did not look like a jail cell. There were no bars....
Striding across the room, he lunged forward to peer out and
violently banged his forehead. He staggered back, grimacing with
pain, then reached forward cautious fingers and discovered a hard
sheet of stuff so transparent that he had not even suspected its
presence. Not glass! Glass was never this clear or strong. A plastic,
no doubt, but one he hadn't heard of. Security sometimes had
disadvantages.
He looked out at the peaceful vista of river and prairie. The
character of the sunlight seemed to indicate that it was afternoon.
He became aware that he was hungry.
Where the devil could this place be? And—muscles tightened about
his empty stomach—what was in store for him here?
He stood trembling, acutely conscious that he was afraid and
helpless, until a flicker of motion at the bottom of the hill near the
river drew his attention. Pressing his nose against the window, he
strained his eyes to see what it was.
A man and a woman were coming toward him up the hill. Evidently
they had been swimming, for each had a towel; the man's was hung
around his neck, and the woman was still drying her bobbed black
hair.
Maitland speculated on the possibility that this might be Sweden; he
didn't know of any other country where public bathing at this time of
year was customary. However, that prairie certainly didn't look
Scandinavian....
As they came closer, he saw that both of them had dark uniform
suntans and showed striking muscular development, like persons
who had trained for years with weights. They vanished below his
field of view, presumably into the building.
He sat down on the edge of the cot and glared helplessly at the
floor.
About half an hour later, the door he couldn't open slid aside into the
wall. The man Maitland had seen outside, now clad in gray trunks
and sandals, stood across the threshold looking in at him. Maitland
stood up and stared back, conscious suddenly that in his rumpled
pajamas he made an unimpressive figure.
The fellow looked about forty-five. The first details Maitland noticed
were the forehead, which was quite broad, and the calm, clear eyes.
The dark hair, white at the temples, was combed back, still damp
from swimming. Below, there was a wide mouth and a firm, rounded
chin.
This man was intelligent, Maitland decided, and extremely sure of
himself.
Somehow, the face didn't go with the rest of him. The man had the
head of a thinker, the body of a trained athlete—an unusual
combination.
Impassively, the man said, "My name is Swarts. You want to know
where you are. I am not going to tell you." He had an accent,
European, but otherwise unidentifiable. Possibly German. Maitland
opened his mouth to protest, but Swarts went on, "However, you're
free to do all the guessing you want." Still there was no suggestion
of a smile.
"Now, these are the rules. You'll be here for about a week. You'll
have three meals a day, served in this room. You will not be allowed
to leave it except when accompanied by myself. You will not be
harmed in any way, provided you cooperate. And you can forget the
silly idea that we want your childish secrets about rocket motors."
Maitland's heart jumped. "My reason for bringing you here is
altogether different. I want to give you some psychological tests...."
"Are you crazy?" Maitland asked quietly. "Do you realize that at this
moment one of the greatest hunts in history must be going on? I'll
admit I'm baffled as to where we are and how you got me here—but
it seems to me that you could have found someone less conspicuous
to give your tests to."
Briefly, then, Swarts did smile. "They won't find you," he said. "Now,
come with me."
Later, when that jewel of a planet had set and the stars were out, he
lay on the bed, still warm with excitement and relief. He didn't have
to worry any more about military secrets, or who Swarts was. Those
questions were irrelevant now. And now he could accept the
psychological tests at their face value; most likely, they were what
they purported to be.
Only one question of importance remained:
What year was this?
He grimaced in the darkness, an involuntary muscular expression of
jubilation and excitement. The future! Here was the opportunity for
the greatest adventure imaginable to 20th Century man.
Somewhere, out there under the stars, there must be grand
glittering cities and busy spaceports, roaring gateways to the
planets. Somewhere, out there in the night, there must be men who
had walked beside the Martian canals and pierced the shining cloud
mantle of Venus—somewhere, perhaps, men who had visited the
distant luring stars and returned. Surely, a civilization that had
developed time travel could reach the stars!
And he had a chance to become a part of all that! He could spend
his life among the planets, a citizen of deep space, a voyager of the
challenging spaceways between the solar worlds.
"I'm adaptable," he told himself gleefully. "I can learn fast. There'll
be a job for me out there...."
If—
Suddenly sobered, he rolled over and put his feet on the floor, sat in
the darkness thinking. Tomorrow. Tomorrow he would have to find a
way of breaking down Swarts' reticence. He would have to make the
man realize that secrecy wasn't necessary in this case. And if Swarts
still wouldn't talk, he would have to find a way of forcing the issue.
The fellow had said that he didn't need cooperation to get his
results, but—
After a while Maitland smiled to himself and went back to bed.
Swarts came half an hour later, and Maitland began his planned
offensive.
"What year is this?"
Swarts' steely eyes locked with his. "You know what the date is," he
stated.
"No, I don't. Not since yesterday."
"Come on," Swarts said patiently, "let's get going. We have a lot to
get through this morning."
"I know this isn't 1950. It's probably not even the 20th Century.
Venus was a morning star before you brought me here. Now it's an
evening star."
"Never mind that. Come."
Wordlessly, Maitland climbed to his feet, preceded Swarts to the
laboratory, lay down and allowed him to fasten the straps and attach
the instruments, making no resistance at all. When Swarts started
saying a list of words—doubtlessly some sort of semantic reaction
test—Maitland began the job of integrating "csc3x dx" in his head. It
was a calculation which required great concentration and frequent
tracing back of steps. After several minutes, he noticed that Swarts
had stopped calling words. He opened his eyes to find the other man
standing over him, looking somewhat exasperated and a little
baffled.
"What year is this?" Maitland asked in a conversational tone.
"We'll try another series of tests."
It took Swarts nearly twenty minutes to set up the new apparatus.
He lowered a bulky affair with two cylindrical tubes like the twin
stacks of a binocular microscope over Maitland's head, so that the
lenses at the ends of the tubes were about half an inch from the
engineer's eyes. He attached tiny clamps to Maitland's eyelashes.
"These will keep you from holding your eyes shut," he said. "You can
blink, but the springs are too strong for you to hold your eyelids
down against the tension."
He inserted button earphones into Maitland's ears—
And then the show began.
He was looking at a door in a partly darkened room, and there were
footsteps outside, a peremptory knocking. The door flew open, and
outlined against the light of the hall, he saw a man with a twelve-
gauge shotgun. The man shouted, "Now I've got you, you wife-
stealer!" He swung the shotgun around and pulled the trigger. There
was a terrible blast of sound and the flash of smokeless powder—
then blackness.
With a deliberate effort, Maitland unclenched his fists and tried to
slow his breathing. Some kind of emotional reaction test—what was
the countermove? He closed his eyes, but shortly the muscles
around them declared excruciatingly that they couldn't keep that up.
Now he was looking at a girl. She....
Maitland gritted his teeth and fought to use his brain; then he had it.
He thought of a fat slob of a bully who had beaten him up one day
after school. He remembered a talk he had heard by a politician who
had all the intelligent social responsibility of a rogue gorilla, but no
more. He brooded over the damnable stupidity and short-
sightedness of Swarts in standing by his silly rules and not telling
him about this new world.
Within a minute, he was in an ungovernable rage. His muscles
tightened against the restraining straps. He panted, sweat came out
on his forehead, and he began to curse. Swarts! How he hated....
The scene was suddenly a flock of sheep spread over a green
hillside. There was blood hammering in Maitland's temples. His face
felt hot and swollen and he writhed against the restraint of the
straps.
The scene disappeared, the lenses of the projector retreated from
his eyes and Swarts was standing over him, white-lipped. Maitland
swore at him for a few seconds, then relaxed and smiled weakly. His
head was starting to ache from the effort of blinking.
"What year is this?" he asked.
"All right," Swarts said. "A.D. 2634."
Maitland's smile became a grin.
"I really haven't the time to waste talking irrelevancies," Swarts said
a while later. "Honestly. Maitland, I'm working against a time limit. If
you'll cooperate, I'll tell Ching to answer your questions."'
"Ching?"
"Ingrid Ching is the girl who has been bringing you your meals."
Maitland considered a moment, then nodded. Swarts lowered the
projector to his eyes again, and this time the engineer did not resist.
That evening, he could hardly wait for her to come. Too excited to
sit and watch the sunset, he paced interminably about the room,
sometimes whistling nervously, snapping his fingers, sitting down
and jittering one leg. After a while he noticed that he was whistling
the same theme over and over: a minute's thought identified it as
that exuberant mounting phrase which recurs in the finale of
Beethoven's Ninth Symphony.
He forgot about it and went on whistling. He was picturing himself
aboard a ship dropping in toward Mars, making planetfall at Syrtis
Major; he was seeing visions of Venus and the awesome beauty of
Saturn. In his mind, he circled the Moon, and viewed the Earth as a
huge bright globe against the constellations....
Finally the door slid aside and she appeared, carrying the usual tray
of food. She smiled at him, making dimples in her golden skin and
revealing a perfect set of teeth, and put the tray on the table.
"I think you are wonderful," she laughed. "You get everything you
want, even from Swarts, and I have not been able to get even a
little of what I want from him. I want to travel in time, go back to
your 20th Century. And I wanted to talk with you, and he would not
let me." She laughed again, hands on her rounded hips. "I have
never seen him so irritated as he was this noon."
Maitland urged her into the chair and sat down on the edge of the
bed. Eagerly he asked, "Why the devil do you want to go to the 20th
Century? Believe me, I've been there, and what I've seen of this
world looks a lot better."
She shrugged. "Swarts says that I want to go back to the Dark Age
of Technology because I have not adapted well to modern culture.
Myself, I think I have just a romantic nature. Far times and places
look more exciting...."
"How do you mean—" Maitland wrinkled his brow—"adapt to modern
culture? Don't tell me you're from another time!"
"Oh, no! But my home is Aresund, a little fishing village at the head
of a fiord in what you would call Norway. So far north, we are much
behind the times. We live in the old way, from the sea, speak the old
tongue."
The cot creaked beside him and he felt a soft arm about his
shoulders and fingers delicately stroking his brow. Presently he
opened his eyes and looked at her. "I just don't understand," he
said. "It seemed obvious to me that whenever men were able to
reach the planets, they'd do it."
Her pitying eyes were on his face. He hitched himself around so that
he was facing her. "I've got to understand. I've got to know why.
What happened? Why don't men want the planets any more?"
"Honestly," she said, "I did not know they ever had." She hesitated.
"Maybe you are asking the wrong question."
He furrowed his brow, bewildered now by her.
"I mean," she explained, "maybe you should ask why people in the
20th Century did want to go to worlds men are not suited to
inhabit."
Maitland felt his face become hot. "Men can go anywhere, if they
want to bad enough."
"But why?"
Despite his sudden irrational anger toward her, Maitland tried to stick
to logic. "Living space, for one thing. The only permanent solution to
the population problem...."
"We have no population problem. A hundred years ago, we realized
that the key to social stability is a limited population. Our economic
system was built to take care of three hundred million people, and
we have held the number at that."
"Birth control," Maitland scoffed. "How do you make it work—secret
police?"
"No. Education. Each of us has the right to two children, and we
cherish that right so much that we make every effort to see that
those two are the best children we could possibly produce...."
She broke off, looking a little self-conscious. "You understand, what I
have been saying applies to most of the world. In some places like
Aresund, things are different. Backward. I still do not feel that I
belong here, although the people of the town have accepted me as
one of them."
"Even," he said, "granting that you have solved the population
problem, there's still the adventure of the thing. Surely, somewhere,
there must be men who still feel that.... Ingrid, doesn't it fire
something in your blood, the idea of going to Mars—just to go there
and see what's there and walk under a new sky and a smaller Sun?
Aren't you interested in finding out what the canals are? Or what's
under the clouds of Venus? Wouldn't you like to see the rings of
Saturn from, a distance of only two hundred thousand miles?" His
hands were trembling as he stopped.
She shrugged her shapely shoulders. "Go into the past—yes! But go
out there? I still cannot see why."
"Has the spirit of adventure evaporated from the human race, or
what?"
She smiled. "In a room downstairs there is the head of a lion. Swarts
killed the beast when he was a young man. He used a spear. And
time traveling is the greatest adventure there is. At least, that is the
way I feel. Listen, Bob." She laid a hand on his arm. "You grew up in
the Age of Technology. Everybody was terribly excited about what
could be done with machines—machines to blow up a city all at
once, or fly around the world, or take a man to Mars. We have had
our fill of—what is the word?—gadgets. Our machines serve us, and
so long as they function right, we are satisfied to forget about them.
"Because this is the Age of Man. We are terribly interested in what
can be done with people. Our scientists, like Swarts, are studying
human rather than nuclear reactions. We are much more fascinated
by the life and death of cultures than by the expansion or
contraction of the Universe. With us, it is the people that are
important, not gadgets."
Maitland stared at her, his face blank. His mind had just
manufactured a discouraging analogy. His present position was like
that of an earnest 12th Century crusader, deposited by some freak of
nature into the year 1950, trying to find a way of reanimating the
anti-Mohammedan movement. What chance would he have? The
unfortunate knight would argue in vain that the atomic bomb offered
a means of finally destroying the infidel....
Maitland looked up at the girl, who was regarding him silently with
troubled eyes. "I think I'd like to be alone for a while," he said.
ebooksecure.com