Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
100% found this document useful (1 vote)
41 views

Parallel Programming with Microsoft Visual C Design Patterns for Decomposition and Coordination on Multicore Architectures Patterns and Practices 1st Edition Colin Campbell - Download the full set of chapters carefully compiled

The document promotes the ebook 'Parallel Programming with Microsoft Visual C++' by Colin Campbell and Ade Miller, which focuses on design patterns for multicore architectures. It provides links to download this book and other related titles on ebookultra.com. The content includes various topics on parallel programming, including task management, data sharing, and performance optimization techniques.

Uploaded by

gentlyalsakr
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
41 views

Parallel Programming with Microsoft Visual C Design Patterns for Decomposition and Coordination on Multicore Architectures Patterns and Practices 1st Edition Colin Campbell - Download the full set of chapters carefully compiled

The document promotes the ebook 'Parallel Programming with Microsoft Visual C++' by Colin Campbell and Ade Miller, which focuses on design patterns for multicore architectures. It provides links to download this book and other related titles on ebookultra.com. The content includes various topics on parallel programming, including task management, data sharing, and performance optimization techniques.

Uploaded by

gentlyalsakr
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 56

Visit https://ebookultra.

com to download the full version and


explore more ebooks or textbooks

Parallel Programming with Microsoft Visual C


Design Patterns for Decomposition and Coordination
on Multicore Architectures Patterns and Practices
1st Edition Colin Campbell
_____ Click the link below to download _____
https://ebookultra.com/download/parallel-programming-with-
microsoft-visual-c-design-patterns-for-decomposition-and-
coordination-on-multicore-architectures-patterns-and-
practices-1st-edition-colin-campbell/

Explore and download more ebooks or textbooks at ebookultra.com


Here are some recommended products that we believe you will be
interested in. You can click the link to download.

Parallel Programming with Microsoft NET Design Patterns


for Decomposition and Coordination on Multicore
Architectures Patterns Practices 1st Edition Colin
Campbell
https://ebookultra.com/download/parallel-programming-with-microsoft-
net-design-patterns-for-decomposition-and-coordination-on-multicore-
architectures-patterns-practices-1st-edition-colin-campbell/

Software modeling and design UML use cases patterns and


software architectures 1st Edition Hassan Gomaa

https://ebookultra.com/download/software-modeling-and-design-uml-use-
cases-patterns-and-software-architectures-1st-edition-hassan-gomaa/

Pro Objective C Design Patterns for iOS 1st Edition Carlo


Chung (Auth.)

https://ebookultra.com/download/pro-objective-c-design-patterns-for-
ios-1st-edition-carlo-chung-auth/

Go Design Patterns 1st Edition Contreras

https://ebookultra.com/download/go-design-patterns-1st-edition-
contreras/
Programming with Microsoft Visual Basic 2012 6th Edition
Diane Zak

https://ebookultra.com/download/programming-with-microsoft-visual-
basic-2012-6th-edition-diane-zak/

Winning Design LEGO MINDSTORMS NXT Design Patterns for Fun


and Competition 1st Edition James Trobaugh

https://ebookultra.com/download/winning-design-lego-mindstorms-nxt-
design-patterns-for-fun-and-competition-1st-edition-james-trobaugh/

Programming with Visual C Concepts and Projects 1st


Edition James Allert

https://ebookultra.com/download/programming-with-visual-c-concepts-
and-projects-1st-edition-james-allert/

Design Patterns 1st Edition Christopher G. Lasater

https://ebookultra.com/download/design-patterns-1st-edition-
christopher-g-lasater/

Android Design Patterns and Best Practice 1st Edition Kyle


Mew

https://ebookultra.com/download/android-design-patterns-and-best-
practice-1st-edition-kyle-mew/
Parallel Programming with Microsoft Visual C Design
Patterns for Decomposition and Coordination on
Multicore Architectures Patterns and Practices 1st
Edition Colin Campbell Digital Instant Download
Author(s): Colin Campbell, Ade Miller
ISBN(s): 9780735651753, 0735651752
Edition: 1
File Details: PDF, 3.89 MB
Year: 2011
Language: english
PARALLEL
PROGRAM M ING
WITH

MICROSOFT
V I S U A L C++
Design Patterns for
Decomposition and Coordination
on Multicore Architectures

Colin Campbell
Ade Miller

Forewords by
Tony Hey
Herb Sutter

• • • • • •
• • • • • • • •
• • • • • • •
• • • • •
parallel programming with microsoft visual c++ ®
Parallel Programming
with Microsoft Visual
C++ ®

Design Patterns for Decomposition and


Coordination on Multicore Architectures

Colin Campbell
Ade Miller
ISBN 978-0-7356-5175-3
This document is provided “as-is.” Information and views expressed in this
document, including URL and other Internet website references, may change
without notice. You bear the risk of using it. Unless otherwise noted, the
companies, organizations, products, domain names, email addresses, logos,
people, places, and events depicted in examples herein are fictitious. No
association with any real company, organization, product, domain name, email
address, logo, person, place, or event is intended or should be inferred. Comply-
ing with all applicable copyright laws is the responsibility of the user. Without
limiting the rights under copyright, no part of this document may be reproduced,
stored in or introduced into a retrieval system, or transmitted in any form or by
any means (electronic, mechanical, photocopying, recording, or otherwise), or for
any purpose, without the express written permission of Microsoft Corporation.
Microsoft may have patents, patent applications, trademarks, copyrights, or
other intellectual property rights covering subject matter in this document.
Except as expressly provided in any written license agreement from Microsoft,
the furnishing of this document does not give you any license to these patents,
trademarks, copyrights, or other intellectual property.
© 2011 Microsoft Corporation. All rights reserved.
Microsoft, MSDN, Visual Basic, Visual C++, Visual C#, Visual Studio, Windows,
Windows Live, Windows Server, and Windows Vista are trademarks of the
Microsoft group of companies.
All other trademarks are property of their respective owners.
Contents

foreword xi
Tony Hey

foreword xiii
Herb Sutter

preface xv
Who This Book Is For xv
Why This Book Is Pertinent Now xvi
What You Need to Use the Code xvi
How to Use This Book xvii
Introduction xviii
Parallelism with Control Dependencies Only xviii
Parallelism with Control and Data
Dependencies xviii
Dynamic Task Parallelism and Pipelines xviii
Supporting Material xix
What Is Not Covered xx
Goals xx

acknowledgments xxi

1 Introduction 1
The Importance of Potential Parallelism 2
Decomposition, Coordination, and Scalable Sharing 3
Understanding Tasks 3
Coordinating Tasks 4
Scalable Sharing of Data 5
Design Approaches 6
Selecting the Right Pattern 7
A Word about Terminology 8
The Limits of Parallelism 8
A Few Tips 10
Exercises 11
For More Information 11
vi

2 Parallel Loops 13
The Basics 14
Parallel for Loops 14
parallel_for_each 15
What to Expect 16
An Example 17
Sequential Credit Review Example 18
Credit Review Example Using
parallel_for_each 18
Performance Comparison 19
Variations 19
Breaking out of Loops Early 19
Exception Handling 20
Special Handling of Small Loop Bodies 21
Controlling the Degree of Parallelism 22
Anti-Patterns 23
Hidden Loop Body Dependencies 23
Small Loop Bodies with Few Iterations 23
Duplicates in the Input Enumeration 23
Scheduling Interactions with
Cooperative Blocking 24
Related Patterns 24
Exercises 24
Further Reading 25

3 Parallel Tasks 27
The Basics 28
An Example 29
Variations 31
Coordinating Tasks with Cooperative Blocking 31
Canceling a Task Group 33
Handling Exceptions 35
Speculative Execution 36
Anti-Patterns 37
Variables Captured by Closures 37
Unintended Propagation of Cancellation Requests 38
The Cost of Synchronization 39
Design Notes 39
Task Group Calling Conventions 39
Tasks and Threads 40
How Tasks Are Scheduled 40
Structured Task Groups and Task Handles 41
Lightweight Tasks 41
Exercises 42
Further Reading 42
vii

4 Parallel Aggregation 45
The Basics 46
An Example 49
Variations 55
Considerations for Small Loop Bodies 55
Other Uses for Combinable Objects 55
Design Notes 55
Related Patterns 57
Exercises 58
Further Reading 58

5 Futures 61
The Basics 62
Futures 63
Example: The Adatum Financial Dashboard 65
The Business Objects 66
The Analysis Engine 67
Variations 70
Canceling Futures 70
Removing Bottlenecks 70
Modifying the Graph at Run Time 71
Design Notes 72
Decomposition into Futures 72
Functional Style 72
Related Patterns 72
Pipeline Pattern 73
Master/Worker Pattern 73
Dynamic Task Parallelism Pattern 73
Discrete Event Pattern 73
Exercises 73

6 Dynamic Task Parallelism 75


The Basics 75
An Example 77
Variations 80
Parallel While-Not-Empty 80
Adding Tasks to a Pending Wait Context 81
Exercises 83
Further Reading 83

7 Pipelines 85
Types of Messaging Blocks 86
The Basics 86
viii

An Example 92
Sequential Image Processing 92
The Image Pipeline 94
Performance Characteristics 96
Variations 97
Asynchronous Pipelines 97
Canceling a Pipeline 101
Handling Pipeline Exceptions 102
Load Balancing Using Multiple Producers 104
Pipelines and Streams 106
Anti-Patterns 107
Copying Large Amounts of Data between
Pipeline Stages 107
Pipeline Stages that Are Too Small 107
Forgetting to Use Message Passing for Isolation 107
Infinite Waits 107
Unbounded Queue Growth 107
More Information 107
Design Notes 108
Related Patterns 109
Exercises 109
Further Reading 109

appendices

a the task scheduler and


resource manager 111
Resource Manager 113
Why It’s Needed 113
How Resource Management Works 113
Dynamic Resource Management 115
Oversubscribing Cores 116
Querying the Environment 116
Kinds of Tasks 116
Lightweight Tasks 117
Tasks Created Using PPL 117
Task Schedulers 118
Managing Task Schedulers 118
Creating and Attaching a Task Scheduler 119
Detaching a Task Scheduler 120
Destroying a Task Scheduler 120
Scenarios for Using Multiple Task Schedulers 120
Implementing a Custom Scheduling Component 121
ix

The Scheduling Algorithm 121


Schedule Groups 121
Adding Tasks 122
Running Tasks 123
Enhanced Locality Mode 124
Forward Progress Mode 125
Task Execution Order 125
Tasks That Are Run Inline 125
Using Contexts to Communicate with the Scheduler 126
Debugging Information 126
Querying for Cancellation 126
Interface to Cooperative Blocking 127
Waiting 127
The Caching Suballocator 127
Long-Running I/O Tasks 128
Setting Scheduler Policy 128
Anti-Patterns 129
Multiple Resource Managers 129
Resource Management Overhead 129
Unintentional Oversubscription from Inlined Tasks 130
Deadlock from Thread Starvation 131
Ignored Process Affinity Mask 131
References 132

b debugging and profiling parallel


applications 133
The Parallel Tasks and Parallel Stacks Windows 133
Breakpoints and Memory Allocation 136
The Concurrency Visualizer 137
Scenario Markers 141
Visual Patterns 142
Oversubscription 142
Lock Contention and Serialization 143
Load Imbalance 145
Further Reading 147

c technology overview 149


Further Reading 151

glossary 153

index
Foreword

At its inception some 40 or so years ago, parallel computing was the


province of experts who applied it to exotic fields, such as high en-
ergy physics, and to engineering applications, such as computational
fluid dynamics. We’ve come a long way since those early days.
This change is being driven by hardware trends. The days of per-
petually increasing processor clock speeds are now at an end. Instead,
the increased chip densities that Moore’s Law predicts are being used
to create multicore processors, or single chips with multiple processor
cores. Quad-core processors are now common, and this trend will
continue, with 10’s of cores available on the hardware in the not-too-
distant future.
In the last five years, Microsoft has taken advantage of this tech-
nological shift to create a variety of parallel implementations. These
include the Microsoft® Windows® High Performance Cluster (HPC)
technology for message-passing interface (MPI) programs, Dryad,
which offers a Map-Reduce style of parallel data processing, the Win-
dows Azure™ technology platform, which can supply compute cores
on demand, the Parallel Patterns Library (PPL) and Asynchronous
Agents Library for native code, and the parallel extensions of the
Microsoft .NET Framework 4.
Multicore computation affects the whole spectrum of applica-
tions, from complex scientific and design problems to consumer ap-
plications and new human/computer interfaces. We used to joke that
“parallel computing is the future, and always will be,” but the pessi-
mists have been proven wrong. Parallel computing has at last moved
from being a niche technology to being center stage for both applica-
tion developers and the IT industry.
But, there is a catch. To obtain any speed-up of an application,
programmers now have to divide the computational work to make
efficient use of the power of multicore processors, a skill that still
belongs to experts. Parallel programming presents a massive challenge
for the majority of developers, many of whom are encountering it for

xi
xii for ewor d

the first time. There is an urgent need to educate them in practical


ways so that they can incorporate parallelism into their applications.
Two possible approaches are popular with some of my computer
science colleagues: either design a new parallel programming language,
or develop a “heroic” parallelizing compiler. While both are certainly
interesting academically, neither has had much success in popularizing
and simplifying the task of parallel programming for non-experts. In
contrast, a more pragmatic approach is to provide programmers with
a library that hides much of parallel programming’s complexity and
teach programmers how to use it.
To that end, the Microsoft Visual C++® Parallel Patterns Library
and Asynchronous Agents Library present a higher-level programming
model than earlier APIs. Programmers can, for example, think in terms
of tasks rather than threads, and avoid the complexities of thread
management. Parallel Programming with Microsoft Visual C++ teaches
programmers how to use these libraries by putting them in the con-
text of design patterns. As a result, developers can quickly learn to
write parallel programs and gain immediate performance benefits.
I believe that this book, with its emphasis on parallel design pat-
terns and an up-to-date programming model, represents an important
first step in moving parallel programming into the mainstream.

Tony Hey
Corporate Vice President, Microsoft Research
Foreword

This timely book comes as we navigate a major turning point in our


industry: parallel hardware + mobile devices = the pocket supercom-
puter as the mainstream platform for the next 20 years.
Parallel applications are increasingly needed to exploit all kinds of
target hardware. As I write this, getting full computational perfor-
mance out of most machines—nearly all desktops and laptops, most
game consoles, and the newest smartphones—already means harness-
ing local parallel hardware, mainly in the form of multicore CPU pro-
cessing; this is the commoditization of the supercomputer. Increas-
ingly in the coming years, getting that full performance will also mean
using gradually ever-more-heterogeneous processing, from local
general-purpose computation on graphics processing units (GPGPU)
flavors to harnessing “often-on” remote parallel computing power in
the form of elastic compute clouds; this is the generalization of the
heterogeneous cluster in all its NUMA glory, with instantiations rang-
ing from on-die to on-machine to on-cloud, with early examples of
each kind already available in the wild.
Starting now and for the foreseeable future, for compute-bound
applications, “fast” will be synonymous not just with “parallel,” but
with “scalably parallel.” Only scalably parallel applications that can be
shipped with lots of latent concurrency beyond what can be ex-
ploited in this year’s mainstream machines will be able to enjoy the
new Free Lunch of getting substantially faster when today’s binaries
can be installed and blossom on tomorrow’s hardware that will have
more parallelism.
Visual C++ 2010 with its Parallel Patterns Library (PPL), described
in this book, helps enable applications to take the first steps down
this new path as it continues to unfold. During the design of PPL,
many people did a lot of heavy lifting. For my part, I was glad to be
able to contribute the heavy emphasis on lambda functions as the key
central language extension that enabled the rest of PPL to be built as
Standard Template Library (STL)-like algorithms implemented as a

xiii
xiv

normal library. We could instead have built a half-dozen new kinds of


special-purpose parallel loops into the language itself (and almost did),
but that would have been terribly invasive and non-general. Adding a
single general-purpose language feature like lambdas that can be used
everywhere, including with PPL but not limited to only that, is vastly
superior to baking special cases into the language.
The good news is that, in large parts of the world, we have as an
industry already achieved pervasive computing: the vision of putting
a computer on every desk, in every living room, and in everyone’s
pocket. But now we are in the process of delivering pervasive and
even elastic supercomputing: putting a supercomputer on every desk,
in every living room, and in everyone’s pocket, with both local and
non-local resources. In 1984, when I was just finishing high school, the
world’s fastest computer was a Cray X-MP with four processors,
128MB of RAM, and peak performance of 942MFLOPS—or, put an-
other way, a fraction of the parallelism, memory, and computational
power of a 2005 vintage Xbox, never mind modern “phones” and Ki-
nect. We’ve come a long way, and the pace of change is not only still
strong, but still accelerating.
The industry turn to parallelism that has begun with multicore
CPUs (for the reasons I outlined a few years ago in my essay “The Free
Lunch Is Over”) will continue to be accelerated by GPGPU comput-
ing, elastic cloud computing, and other new and fundamentally paral-
lel trends that deliver vast amounts of new computational power in
forms that will become increasingly available to us through our main-
stream programming languages. At Microsoft, we’re very happy to be
able to be part of delivering this and future generations of tools for
mainstream parallel computing across the industry. With PPL in par-
ticular, I’m very pleased to see how well the final product has turned
out and look forward to seeing its capabilities continue to grow as we
re-enable the new Free Lunch applications—scalable parallel applica-
tions ready for our next 20 years.

Herb Sutter
Principal Architect, Microsoft
Bellevue, WA, USA
February 2011
Preface

This book describes patterns for parallel programming, with code


examples, that use the new parallel programming support in the Mi-
crosoft® Visual C++® development system. This support is com-
monly referred to as the Parallel Patterns Library (PPL). There is also
an example of how to use the Asynchronous Agents Library in con-
junction with the PPL. You can use the patterns described in this book
to improve your application’s performance on multicore computers.
Adopting the patterns in your code can make your application run
faster today and also help prepare for future hardware environments,
which are expected to have an increasingly parallel computing archi-
tecture.

Who This Book Is For


The book is intended for programmers who write native code for the
Microsoft Windows® operating system, but the portability of PPL
makes this book useful for platforms other than Windows. No prior
knowledge of parallel programming techniques is assumed. However,
readers need to be familiar with features of the C++ environment such
as templates, the Standard Template Library (STL) and lambda expres-
sions (which are new to Visual C++ in the Microsoft Visual Studio®
2010 development system). Readers should also have at least a basic
familiarity with the concepts of processes and threads of execution.
Note: The examples in this book are written in C++ and use the
features of the Parallel Patterns Library (PPL).
Complete code solutions are posted on CodePlex. See http://
parallelpatternscpp.codeplex.com/.
There is also a companion volume to this guide, Parallel
Programming with Microsoft .NET, which presents the same
patterns in the context of managed code.

xv
xvi pr eface

Why This Book Is Pertinent Now


The advanced parallel programming features that are delivered with
Visual Studio 2010 make it easier than ever to get started with parallel
programming.
The Parallel Patterns Library and Asynchronous Agents Library
are for C++ programmers who want to write parallel programs. They
simplify the process of adding parallelism and concurrency to applica-
tions. PPL dynamically scales the degree of parallelism to most effi-
ciently use all the processors that are available. In addition, PPL and
agents assist in the partitioning of work and the scheduling of tasks
in threads. The library provides cancellation support, state manage-
ment, and other services. These libraries make use of the Concurrency
Runtime, which is part of the Visual C++ platform.
Visual Studio 2010 includes tools for debugging parallel applica-
tions. The Parallel Stacks window shows call stack information for all
the threads in your application. It lets you navigate between threads
and stack frames on those threads. The Parallel Tasks window re-
sembles the Threads window, except that it shows information about
each task instead of each thread. The Concurrency Visualizer views in
the Visual Studio profiler enable you to see how your application in-
teracts with the hardware, the operating system, and other processes
on the computer. You can use the Concurrency Visualizer to locate
performance bottlenecks, processor underutilization, thread conten-
tion, cross-core thread migration, synchronization delays, areas of
overlapped I/O, and other information.
For a complete overview of the parallel technologies available
from Microsoft, see Appendix C, “Technology Overview.”

What You Need to Use the Code


The code that is used for examples in this book is at http://parallelpat-
ternscpp.codeplex.com/. These are the system requirements:
• Microsoft Windows Vista® SP1, Windows 7, Windows Server®
2008, or Windows XP SP3 (32-bit or 64-bit) operating system.
• Microsoft Visual Studio 2010 SP1 (Ultimate or Premium edition
is required for the Concurrency Visualizer, which allows you to
analyze the performance of your application); this includes the
PPL, which is required to run the samples and the Asynchronous
Agents Library.
xvii

How to Use This Book


This book presents parallel programming techniques in terms of par-
ticular patterns. Figure 1 shows the different patterns and their rela-
tionships to each other. The numbers refer to the chapters in this
book where the patterns are described.
1 Introduction

Data Parallelism Task Parallelism

Coordinated by
control flow only

2 Parallel Loops 3 Parallel Tasks

Coordinated by control
flow and data flow

4 Parallel Aggregation 5 Futures 7 Pipelines

6 Dynamic Task Parallelism

figure 1
Parallel programming patterns

After the introduction, the book has one branch that discusses
data parallelism and another that discusses task parallelism.
Both parallel loops and parallel tasks use only the program’s con-
trol flow as the means to coordinate and order tasks. The other pat-
terns use both control flow and data flow for coordination. Control
flow refers to the steps of an algorithm. Data flow refers to the avail-
ability of inputs and outputs.
xviii pr eface

Introduction
Chapter 1, “Introduction,” introduces the common problems faced by
developers who want to use parallelism to make their applications run
faster. It explains basic concepts and prepares you for the remaining
chapters. There is a table in the “Design Approaches” section of Chapter
1 that can help you select the right patterns for your application.

Parallelism with Control Dependencies


Only
Chapters 2 and 3 deal with cases where asynchronous operations are
ordered only by control flow constraints:
• Chapter 2, “Parallel Loops.” Use parallel loops when you want
to perform the same calculation on each member of a collection
or for a range of indices, and where there are no dependencies
between the members of the collection. For loops with depen-
dencies, see Chapter 4, “Parallel Aggregation.”
• Chapter 3, “Parallel Tasks.” Use parallel tasks when you have
several distinct asynchronous operations to perform. This
chapter explains why tasks and threads serve two distinct
purposes.

Parallelism with Control and Data


Dependencies
Chapters 4 and 5 show patterns for concurrent operations that are
constrained by both control flow and data flow:
• Chapter 4, “Parallel Aggregation.” Patterns for parallel aggre-
gation are appropriate when the body of a parallel loop includes
data dependencies, such as when calculating a sum or searching
a collection for a maximum value.
• Chapter 5, “Futures.” The Futures pattern occurs when opera-
tions produce some outputs that are needed as inputs to other
operations. The order of operations is constrained by a directed
graph of data dependencies. Some operations are performed in
parallel and some serially, depending on when inputs become
available.

Dynamic Task Parallelism and Pipelines


Chapters 6 and 7 discuss some more advanced scenarios:
• Chapter 6, “Dynamic Task Parallelism.” In some cases, opera-
tions are dynamically added to the backlog of work as the
computation proceeds. This pattern applies to several domains,
including graph algorithms and sorting.
• Chapter 7, “Pipelines.” Use a pipeline to feed successive
outputs of one component to the input queue of another
xix

component, in the style of an assembly line. Parallelism results


when the pipeline fills, and when more than one component is
simultaneously active.

Supporting Material
In addition to the patterns, there are several appendices:
• Appendix A, “The Task Scheduler and Resource Manager.”
This appendix gives an overview of how the Concurrency
Runtime’s task scheduler and resource manager function.
• Appendix B, “Debugging and Profiling Parallel Applications.”
This appendix gives you an overview of how to debug and
profile parallel applications in Visual Studio 2010.
• Appendix C, “Technology Roadmap.” This appendix describes
the various Microsoft technologies and frameworks for parallel
programming.
• Glossary. The glossary contains definitions of the terms used in
this book.
Everyone should read Chapters 1, 2, and 3 for an introduction and Don’t apply the patterns in
overview of the basic principles. Although the succeeding material is this book blindly to your
presented in a logical order, each chapter, from Chapter 4 on, can be applications.
read independently.
Callouts in a distinctive style, such as the one shown in the mar-
gin, alert you to things you should watch out for.
It’s very tempting to take a new tool or technology and try and
use it to solve whatever problem is confronting you, regardless of the
tool’s applicability. As the saying goes, “when all you have is a hammer,
everything looks like a nail.” The “everything’s a nail” mentality can
lead to very unfortunate results, which one hopes the bunny in Figure
2 will be able to avoid.
You also want to avoid unfortunate results in your parallel pro-
grams. Adding parallelism to your application costs time and adds
complexity. For good results, you should only parallelize the parts of
your application where the benefits outweigh the costs.

figure 2
When all you have is a hammer, everything looks like a nail.
Other documents randomly have
different content
140 50 Lateral line No dorsal line
138 32 Faint trace lateral lines No dorsal line
137 68 Lateral line Trace dorsal line
137 47 Lateral line Trace dorsal line
136 45 Lateral line No dorsal line
135 65 Lateral line No dorsal line
135 53 Trace lateral line No dorsal line
134 65 Lateral line No dorsal line
133 60 Lateral line No dorsal line
132 63 Lateral line Trace dorsal line
131 50 Lateral line No dorsal line
131 16 Lateral line No dorsal line
130 34 Lateral line No dorsal line
2. Dark hair-brown above; bright gamboge below; chin Indian
purple.
146 70 Lateral line No dorsal line
131 20 Two lateral lines Trace dorsal line
3. Dark purplish drab above; wax-yellow with Paris or chromium
green below; chin and throat lighter Indian purple.
140 40 Two lateral lines Trace dorsal line
134 20 Lateral line Faint trace dorsal line
123 25 Lateral line No dorsal line
120 60 Lateral line Fair dorsal line
4. Hair-brown above; gamboge below; chin Indian purple.
130 65 Two lateral lines Dorsal line
120 52 Lateral line Faint dorsal line
5. Dark drab above; waxy gamboge below.
126 65 Two lateral lines Distinct dorsal line
126 60 Lateral line Indistinct dorsal line
125 20 Two lateral lines Faint dorsal line
125 60 Two lateral lines Indistinct dorsal line
6a. Bronzed drab above; light wax-color below; chin light Indian
purple.
125 63 Two lateral lines Faint dorsal line
6b. Drab above; light wax-color below; chin light Indian purple.
117 55 Two lateral lines Faint dorsal line
116 55 Two lateral lines Faint trace dorsal line
112 20 Two lateral lines Dorsal line
105 48 Two lateral lines Dorsal line
7. Grayish drab above; wax-yellow below; chin lighter Indian purple.
126 30 Two lateral lines Faint trace dorsal line
122 60 Two lateral lines Trace dorsal line
121 20 Two lateral lines Incomplete dorsal line
119 55 Strong lateral line Trace dorsal line
116 55 Strong lateral line Faint trace dorsal line
8. Dark drab-gray above; dull wax-yellow below; chin light Indian
purple.
124 60 Lateral line Faint dorsal line
9. Drab-gray above; straw and Naples yellow below; chin light Indian
purple.
118 56 Two lateral lines Dorsal line
10. Bronzed drab-gray above; pale wax-yellow below; chin light
Indian purple.
Very distinct dorsal
92 41 Two lateral lines
line
These notes show clearly that the intensity of pigmentation
increases quite gradually and fairly regularly with the size of the
individual, and that while young specimens may be nearly as pale as
some dark individuals of A. pulchra, all of the large specimens are of
the dark type. It is also true in a general way that the smaller the
specimen the more distinctly the lines are shown.
In the light of our present knowledge, therefore, it seems necessary
to regard Anniella nigra as a local and probably recently
differentiated race rather than as a melanistic phase of Anniella
pulchra. While the difference is purely one of color, no intergradation
has yet been shown to occur in adult specimens, and the two forms
must therefore be recognized as distinct species occupying separate
areas in different faunal zones.
If then we ignore the localities of the type specimens of "A. texana"
and A. nigra, as open to question until confirmed by the finding of
additional specimens, the known distribution of the species of the
genus Anniella is as follows:
Anniella pulchra.
Upper Austral Zone.
San Diegan Fauna.
San Diego County.
San Diego, Coronado, mountains near San Diego.
Riverside County.
San Jacinto.
San Bernardino County.
San Bernardino.
Californian Fauna.
Kern County.
Oil City to Poso Creek.
Tulare County.
Sequoia National Park.
Fresno County.
Fresno.
Monterey County (interior).
San Ardo.
San Benito County.
Bear Valley.
Contra Costa County.
Anniella nigra.
Transition Zone.
Pacific Fauna.
Monterey County (coast).
Monterey, Pacific Grove, Point Pinos, Carmel Bay.
San Francisco County.
San Francisco.
San Francisco, California,
August 18, 1905.
PROCEEDINGS
OF THE

CALIFORNIA ACADEMY OF SCIENCES


Third Series

Zoology Vol. IV, No. 3

Issued December 2, 1905


ON THE OCCURRENCE OF THE LEATHER-BACK
TURTLE, DERMOCHELYS, ON THE
COAST OF CALIFORNIA

BY JOHN VAN DENBURGH


Curator of the Department of Herpetology.

Plates IX-XI
Records of the occurrence of the great marine Leather-back Turtle in
the Pacific Ocean are so few that any additional observations are of
much interest. Temminck and Schlegel[19] report upon a specimen
captured near the Bay of Nagasaki, Japan, in May, 1825. Mr.
Swinhoe[20] saw a large one at Amoy, China, in October, 1859.
Aflalo[21] has described a pair from Thursday Island, Queensland,
Australia. Krefft[22] mentions an example nine feet long from the
coast of New South Wales. McCoy[23] figures one caught at Portland,
Victoria, Australia, in 1862. Another was harpooned by Captain
Subritzky in the Bay of Islands, New Zealand, in May, 1892.[24]
Boulenger[25] mentions a skull from the Solomon Islands. The
species has been recorded from the coast of Chile by Molina[26] and
Philippi,[27] and from Guaymas, Mexico, by Mr. Belding.[28]
Thus it appears that the only record of the occurrence of the
Leather-back Turtle in the waters of the western coast of the North
American continent is the brief note by Mr. Belding in the West
American Scientist, which reads as follows:
"I saw at Guaymas a Leather-back Turtle (Dermatochelys) which
weighed 1,102 lbs."
I am now able to record the capture of three specimens of this turtle
on the coast of California.
Early in January of the present year I received word that a large sea
turtle had been caught near Santa Barbara, California, and at once
arranged to purchase it for the Academy. A photograph (Plate IX)
sent me at the time showed it to be a fine specimen of the Leather-
back Turtle. Upon its arrival in San Francisco this turtle proved to be
a female measuring six feet and seven inches from the tip of its
snout to the end of its tail. Its weight was given on the bill of lading
as 800 pounds, but this may have been estimated rather than
actually determined. It was secured by Mr. G. W. Gourley and Albert
F. Stafford, about January 2, in twenty-five fathoms of water in the
open sea about two miles south of Santa Barbara.
Mr. Gourley has given me the following glowing account of its
capture:
"Santa Barbara, Cal.,
"Jan. 17, 1905.
"Dear Sir:—Your note of 13th inst. received.... In regard to the
details of the capture I will say that the turtle was first seen
swimming on the surface about two miles off shore and to the
southwestward of the Santa Barbara whistling buoy. I went after it
(accompanied by a boy) in an 18 foot sailboat. I had a gaff with a
hook on the end of it and bent about 200 feet of rope onto the
handle. I had also prepared a number of other ropes with nooses on
them to be ready for quick work.
"On approaching the turtle it did not hear the wash of the boat until
we were within about 25 feet of it, when it made a rush to windward
and started to dive, but the momentum of the boat when I luffed
into the wind carried her right along side of him and I dropped the
tiller and got forward with the gaff-hook and swung over the side in
the weather rigging and got the hook fast in the leathery part of his
neck. He immediately sounded and run out the full length of the line
—about 200 feet—and towed the boat about half a mile further out
to sea. He then came to the surface and we over-handed the line
and pulled up close to him again. When he caught sight of the boat
he turned and came toward us and threw one of his flippers over the
gunwale of the boat, nearly capsizing her.[29] I climbed up on the
upper side and shoved him off with an oar. He grabbed the end of
the oar and bit the end of it off like a piece of cheese. His
movements in the water were very swift; using his fore flipper he
could turn almost instantly from one side to the other and his head
would project about 18 inches from the body. I succeeded in
throwing a noose over his head and later by attracting his attention
in the opposite direction got ropes around both flippers—finally
having five lines on him—and started to tow him toward the shore.
He repeatedly slipped the ropes off from his neck and flippers—
several times getting almost entirely free. We were from 11:30 A. M.
till nearly 4 P. M. in finally landing him. When about half way to
shore he suddenly turned and made a break out to sea, towing the
boat stern first with all sail drawing full for several hundred yards
with little effort. He emitted at intervals a noise resembling the grunt
of a wild boar. There were (when we first tackled him) about a
dozen ramoras attached to different parts of the body. Most of them
stayed with him all through the struggle and only deserted him when
I hoisted him to the deck of the dock. I captured two of them and
kept them in a bucket for several days. One was about ten inches
long. The turtle lived for four days after taking out of the water—
being very lively when first landed and gradually subsiding. I don't
think this species ever come out of the water on their own
responsibility
"So far as I can learn there has been but one other of this kind ever
taken on this coast. It was less than half the size of this and was
entangled in a fisherman's net and was wounded in capturing, so
that it died soon after. The meat was sold to the hotels here and was
very fine eating.
"Respectfully,
"G. W. Gourley."
Inquiry regarding the second specimen referred to in Mr. Gourley's
letter finally resulted, through the kindness of Dr. Frank M.
Anderson, in my securing from Mr. E. B. Hoyt of San Luis Obispo, a
photograph of this turtle, taken soon after its death. Mr. Hoyt tells
me that this photograph was taken by himself at Santa Barbara in
July or August, 1901. It shows the animal covering more than half
the length of the floor of a dray on which it was lying. This
photograph is reproduced in Plate X.
The third individual of this species was preserved in the museum at
Coronado, San Diego County, which I am told is now a thing of the
past. All that I have been able to learn of its history is contained in
the following note from Mrs. E. S. Newcomb, who was in charge of
the collection:
"Coronado, March 21, 1896.
"Dear Sir:—I am only posted in regard to one marine turtle, which
hangs in the entrance of our museum, and provokes various witty
remarks from the travelling public.... This turtle was caught off Point
Loma [San Diego Co.] by a fisherman, weight 800 lbs. He sold it to
the market, where Prof. Ward recognized the skin as belonging to
the Harp or Lute turtle, and purchased it for this museum. It has
been here eight years. I am sorry my information is so meagre, but
it is the best I can give you.
"Yours sincerely,
"(Mrs.) E. S. Newcomb."
With no material for comparison I am unable to form an opinion as
to the identity or specific distinctness of the Leather-back Turtles of
the Atlantic, Indian, and Pacific oceans; but Distant's photograph of
an individual from South Africa[30] certainly shows a style of
coloration very different from that seen in those reproduced here.
A view of the superior surface of the hyoid is given (Plate XI) which
makes it evident that the specimen figured by Gervais[31] was
incomplete.
San Francisco, California,
August 4, 1905.
EXPLANATION OF PLATE IX.
Photograph of Leather-back Turtle captured at Santa Barbara, California, January,
1905.
Proc. Cal. Acad. Sci. 3D. Ser. Zool. Vol. IV.
[Van Denburgh] Plate IX.
EXPLANATION OF PLATE X.
Photograph of Leather-back Turtle captured at Santa Barbara, California, in July or
August, 1901.
Proc. Cal. Acad. Sci. 3D. Ser. Zool. Vol. IV.
[Van Denburgh] Plate X.
EXPLANATION OF PLATE XI.
Hyoid of Leather-back Turtle captured at Santa Barbara, California, January, 1905.
Proc. Cal. Acad. Sci. 3D. Ser. Zool. Vol. IV.
[Van Denburgh] Plate XI.
PROCEEDINGS
OF THE

CALIFORNIA ACADEMY OF SCIENCES


Third Series

Zoology Vol. IV, No. 4[32]

Issued March 14, 1906


DESCRIPTION OF A NEW SPECIES OF THE GENUS
PLETHODON (PLETHODON VANDYKEI) FROM
MOUNT RAINIER, WASHINGTON

BY JOHN VAN DENBURGH


Curator of the Department of Herpetology.

In a small collection of amphibians secured in Washington by Dr.


Edwin Cooper Van Dyke, Curator of the Department of Entomology,
is an apparently undescribed species of salamander, which I take
pleasure in naming, in honor of its collector,

Plethodon vandykei sp. nov.


Diagnosis.—Similar in general appearance to Plethodon intermedius, but much
larger and stouter; costal grooves 12-13; toes and fingers webbed, only 2
phalanges of third and fourth toes free; adpressed limbs separated by 1 costal
interspace; tail but slightly compressed; paratoid well developed; a dorsal
band, not red; lower surfaces black.
Type.—Cal. Acad. Sci. No. 6910, Paradise Valley, Mt. Rainier Park, Washington,
Dr. E. C. Van Dyke, July 15-31, 1905.
Description.—General form similar to P. oregonensis, but body not quite so
much flattened, tail less compressed, and limbs shorter and stouter; tail
cylindro-conic, somewhat compressed in posterior half, nearly equal to length
of head and body; head depressed, about width of widest part of body; snout
broadly truncate from above, rounded in profile; eyes moderate, smaller than
in P. oregonensis, rather prominent, separated anteriorly by nearly twice the
length of the orbital slit; nostrils small, near corners of snout, separated by
about their distance from pupil; subnasal groove descending nearly to margin
of lip; line of lip descending slightly below corner of snout and ascending
below posterior edge of orbit; palatine teeth in 2 slightly curved series
beginning some distance behind and a little internal to the internal nares,
converging obliquely backward, and scarcely separated on the median line;
parasphenoid teeth in 1 patch throughout, separated from palatine teeth by
an interval equal to distance from nostril to edge of lip; internal nares rather
small; tongue large, ovate, not emarginate, attached along median line but
free laterally and for a short distance behind; neck a little narrower than body,
with large elongate parotoid gland divided by a longitudinal groove running
posteriorly and downward from eye to gular fold, other grooves behind, above
and in front of parotoid; a groove along vertebral line; costal grooves between
limbs 12 on right, 13 on left, not continued to midline either above or below;
limbs a little shorter and stouter than in P. oregonensis, anterior with 4 and
posterior with 5 digits; digits rather short, with broad rounded ends each with
a terminal pad below, inner shortest, third longest, second finger longer than
fourth, second toe shorter than fourth which is but little shorter than third;
web well developed, extending nearly to end of inner digits, 2 phalanges of
third and fourth toes free, feet very broadly palmate; tail slender, slightly
compressed in posterior two-thirds, with rather indefinite grooves on proximal
half; skin shiny, but roughened above and laterally and pitted below by the
mouths of small glands; adpressed limbs separated by about the distance
between 2 costal grooves.

A broad band extends along the whole dorsal surface from the snout
to the tip of the tail. In the alcoholic specimen this band is dark clay-
color, dotted with black on the upper surface of the head. It is
broadest on the back of the head and narrowest above the anus.
The upper surfaces of the limbs and the side of the snout are clay-
color dotted with black. A black line runs from the eye to the nostril.
The hands and feet are black dotted with clay-color. The chin and
central gular region are white with a few scattered black dots. The
sides of the neck and the sides and lower surfaces of the body and
tail are intense black with a few scattered whitish dots on the belly
and sides of tail and with a zone of crowded white dots along the
sides of the neck and body.
Snout to anus 60
Front of anus to end of tail 56
Width of head 9
Nostril to orbit 2
Snout to orbit 4
Snout to gular fold 13
Snout to fore limb 17
Gular fold to anus 47
Axilla to groin 34
Adpressed limbs separated by 3
Fore limb 15½
Hind limb 18½
Heel to end of longest toe 7
Breadth of foot 6
San Francisco, California,
December 21, 1905.
PROCEEDINGS
OF THE

CALIFORNIA ACADEMY OF SCIENCES


Third Series

Zoology Vol. IV, No. 5

Issued March 14, 1906


ON THE OCCURRENCE OF THE SPOTTED NIGHT
SNAKE, HYPSIGLENA OCHRORHYNCHUS, IN
CENTRAL CALIFORNIA; AND ON THE
SHAPE OF THE PUPIL IN THE
REPTILIAN GENUS ARIZONA

BY JOHN VAN DENBURGH


Curator of the Department of Herpetology.

On the Occurrence of the Spotted Night Snake,


Hypsiglena ochrorhynchus, in Central California

The little snake to which Cope, in 1860,[33] gave the name


Hypsiglena ochrorhynchus was first described from specimens
secured at Cape San Lucas, Lower California. It has since been
found to range across Arizona and northern Mexico to Texas. As
recently as 1893, so little was known of the distribution of this snake
in California that Dr. Stejneger,[34] in recording the single specimen
secured by the Death Valley Expedition in the Argus Range, Inyo
County, California, thought that it added a species to the known
fauna of the State. This snake had, however, already been taken at
San Diego, California, as mentioned by Professor Cope[35] in 1883.
More recently, the species has been recorded by Cope[36] from
Witch Creek, San Diego County, and by myself[37] from the
Cuyamaca Mountains, San Diego County; Strawberry Valley and San
Jacinto, Riverside County, and Hesperia, San Bernardino County.
These localities are all in the Desert and San Diegan faunal areas. It
was with much interest, therefore, that I found this snake in the
Californian Fauna close to the edge of the Pacific Fauna. The
specimen was secured near Los Gatos, Santa Clara County, several
hundred miles beyond the range of the species as previously known.
It was found under a pile of recently cut hay, at an altitude of about
eight or nine hundred feet, in what is locally known as the warm belt
of the foothills, where Bascanion laterale, Cnemidophorus tigris
undulates, and Amphispiza belli also occur.

On the Shape of the Pupil in the Reptilian Genus Arizona


There has been, among herpetologists, much diversity of opinion as
to the merits of Kennicott's genus Arizona. The validity of the single
species for which he proposed the name Arizona elegans has, I
believe, never been questioned, but the known generic characters
have been rather inadequate. Accordingly, while some authors have
followed Kennicott, others have referred the species variously to the
genera Pituophis of Holbrook, Rhinechis of Michahelles, or Coluber of
Linnæus.
I believe that all authors (myself included) who mention the point at
all describe the eye of this snake as showing a round pupil. This is
true of most alcoholic specimens, for in these the pupil usually is
dilated. In two living specimens, however, I find that the pupil is
slightly irregular in outline so that it appears somewhat eccentric,
that it varies considerably in size from time to time, and that it is
distinctly elliptic, with the long diameter vertical, but becomes nearly
round when dilated. Some alcoholic specimens also show the pupil
somewhat contracted and elliptic.
This point is of some importance, since the possession of a vertically
elongate pupil is in itself ample basis for the recognition of the genus
Arizona as distinct from the other colubrine genera with which it has
been confused.
San Francisco, California,
February 24, 1906.
[1] Type.
[2] In fifty specimens the costal grooves are 17 in forty, 16 in six,
and 18 in four.
[3] Type.
[4] Dr. Merriam tells me that a parallel is found in the island foxes,
whose characters are constant on San Miguel but not on the other
islands.
[5] Skilton's description, which seems to apply rather to the
species afterward named by Baird and Girard Gerrhonotus
principis, is as follows:
"Tropidolepis scincicauda, n. s. Slender, tail much longer than
body, cylindrical. Dermal plates of the body and tail, carinate
above, smooth beneath, verticillate. The carinate plates in nine
rows. Color, dusky green above, light ash color below. A row of
small dark spots on each flank. Another row of smaller ones along
the vertebral line. Some of the dark colored scales on the flanks
tipped with a whitish color. Length five to five and a half inches."
The plate accompanying Skilton's article is so poor as to throw no
light on this question, and it seems best to make no change in the
nomenclature until some one has examined Skilton's specimens,
one of which, according to Yarrow's Catalogue, is No. 3089 of the
National Museum collection.
[6] See Report, Chief of Engineers, U. S. A. 1876, pt. 3, pp. 435,
445, etc.
[7] Since this was written I have been informed by Dr. F. Baker, of
San Diego, that he has taken the following reptiles on these
islands:—
North Coronado:
Gerrhonotus scincicauda [ignavus?], July 3, 1898,
Eumeces skiltonianus, July 3, 1898.
South Coronado:
Uta stansburiana, July 3, 1898,
Gerrhonotus scincicauda [ignavus?], July 3, 1898,
Cnemidophorus stejnegeri, July 3, 1898,
Hypsiglena ochrorhynchus, August 13, 1898,
Crotalus [oregonus], August 13, 1898.
[8] Type.
[9] Reproduced.
[9a] Reproduced.
[10] Ann. & Mag. Nat. Hist. 2d ser. v. 10, 1852, p. 440.
[11] Miss. Sci. au Mex. Recherches zool. 3d pt. p. 460.
[12] Cat. Liz. Brit. Mus. v. 2, 1885, p. 299.
[13] Report, U. S. Nat. Mus. 1898 (1900), p. 674.
[14] Occas. Papers, Cal. Acad. Sci. 5, 1897, p. 116.
[15] Abh. Nat. Verein Hamburg, v. 9, Hft. 1, 1885, p. 9.
[16] Occas. Papers, Cal. Acad. Sci. 5, 1897, pp. 116, 118.
[17] Ann. & Mag. Nat. Hist. 5th ser. v. 20, 1887, p. 50.
[18] Report, U. S. Nat. Mus. 1898 (1900), p. 675.
[19] Fauna Japonica, 1833, pp. 9, 12.
[20] Proc. Zool. Soc. Lond. 1870, p. 410.
[21] Sketch Nat. Hist. Australia, p. 188.
[22] Austral. Vertebr. p. 39.
[23] Prodrom. Zool. Victoria, v. 2, 1885, p. 2.
[24] Cheeseman, Trans. New Zealand Inst. v. 25, 1893, p. 108.
[25] Cat. Chelon. Brit. Mus. 1889, p. 10.
[26] Essai sur l'Hist. Nat. du Chili, 1789, p. 194.
[27] Ann. Univ. Chile, v. 104, 1899, [separate pp. 3-6], pl.—.
[28] West Am. Scientist, v. 3, no. 24, 1887, p. 99.
[29] It is interesting to note the similarity of the account given by
Captain Subritzky of the capture of his specimen, which is given
by Cheeseman (Trans. New Zealand Inst. v. 25, 1893, p. 109) as
follows: "When passing Cape Brett on a voyage from Awanui to
Auckland, he noticed a floating object, which he at first took for a
boat bottom upwards. The schooner's boat was lowered, and he
proceeded to inspect it; when, to his astonishment, it suddenly
disappeared, shortly afterward reappearing a little distance
further away. Returning to his vessel, he secured a harpoon and
line, and then pulled cautiously up to the creature, soon
recognizing it to be a large turtle-like animal entirely new to him.
After a little manœuvering he succeeded in harpooning it in the
neck. According to him, it made a most determined resistance,
making for the boat open-mouthed, snapping its jaws violently. It
succeeded in getting its flappers over the side of the boat, nearly
capsizing it, but was stunned by a blow on the head, towed
alongside the schooner, and hoisted on board."
[30] Distant, Zoologist, 4th ser. v. 2, 1898, p. 500.
[31] Gervais, N. Arch. Mus. v. 8, 1872, pl. VII, fig. 2.
[32] Note.—Only a few copies of the original edition of this paper
(Third Series, Vol. IV, Nos. 4 and 5, Zoology, pp. 61-67) had been
distributed prior to the great fire of April 18, 1906, in which
practically the entire edition was lost. To enable libraries and
individuals to complete their files of the Proceedings this exact
reprint is issued March 26, 1915.
Barton W. Evermann, Editor.
[33] Proc. Acad. Nat. Sci. Phila. 1860, p. 246.
[34] N. A. Fauna, no. 7, 1893, p. 204.
[35] Proc. Acad. Nat. Sci. Phila. 1883, p. 32.
[36] Report, U. S. Nat. Mus. 1898 (1900), p. 954.
[37] Occas. Papers, Cal. Acad. Sci. 5, 1897, p. 180.
INDEX TO VOLUME IV, THIRD SERIES, ZOOLOGY.
New names in heavy-faced type; Synonyms in italics.

adamanteus atrox, Crotalus, 18


Amphisphiza belli, 66
Anaides lugubris, 5
Anniella:
The species of the Reptilian Genus Anniella with Especial
Reference to Anniella texana and to Variation in Anniella nigra,
41-9
nigra, 42, 43, 44, 48, 49
pulchra, 41, 42, 43, 44, 45, 47, 48
texana, 42, 43, 44, 45, 48
anthonyi, Bascanion, 3, 4, 27
Arizona:
On the Shape of the Pupil in the Reptilian Genus Arizona,
66-7
elegans, 66
atrox, Crotalus, 18, 24
attenuatus, Batrachoseps, 3, 6, 7, 16
auriculata, Uta, 3, 4, 26,
Autodax lugubris, 4, 5
lugubris farallonensis, 2, 3, 4, 5

Bascanion, 25
anthonyi, 3, 4, 27,
laterale, 26, 66
laterale fuliginosum, 3, 4, 26
Batrachoseps attenuatus, 3, 6, 7, 16
pacificus, 3, 4, 6, 7, 11
becki, Sceloporus, 2, 3, 4, 9
beldingi, Verticaria, 23
belli, Amphispiza, 66
biseriatus becki, Sceloporus, 3, 9, 10, 11, 12, 14,

Callisaurus ventralis, 3, 25
catenifer, Pituophis, 3, 21
catenifer deserticola, Pituophis, 21
cerroense, Phrynosoma, 3, 4, 23
clarionensis, Uta, 3, 4, 27
clarki clarki, Sceloporus, 23
Cnemidophorus labialis, 3, 4, 24,
multiscutatus, 3, 4, 24
rubidus, 3, 25, 26,
tessellatus rubidus, 26
tessellatus multiscutatus, 24
tigris undulatus, 66
Coluber, 66
confluentus confluentus, Crotalus 18
copeii, Crotaphytus, 25
Crotalus adamanteus atrox, 18
atrox, 18, 24
confluentus confluentus, 18
exsul, 3, 4, 24,
lucifer, 16, 18
mitchellii, 3, 26
oregonus, 3, 16, 18
Crotaphytus copeii, 25
wislizenii, 25
curla, Hyla, 23

Dermochelys:
On the Occurrence of the Leather-back Turtle,
Dermochelys, on the Coast of California, 51-6
Dipsosaurus dorsalis, 3, 24
dorsalis, Dipsosaurus, 3, 24

elegans, Arizona, 66
exsul, Crotalus, 3, 4, 24

Gerrhonotus, 18, 20
multicarinatus, 14
palmeri, 21
scincicauda, 3, 10, 12, 14, 19, 20, 21
scincicauda ignavus, 2, 3, 19, 21,
scincicaudus, 14

Hemidactylium pacificum, 6
hernandezi, Phrynosoma, 23
Hyla curla, 23
regilla, 3, 13, 23
hyperythra beldingi, Verticaria, 3, 23, 25
Hypsiglena ochrorhynchus, 18
On the Occurrence of the Spotted Night Snake, Hypsiglena
ochrorhynchus in Central California; and on the Shape of the
Pupil in the Reptilian Genus Arizona, 65-6

ignavus, Gerrhonotus scincicauda, 2, 3, 19, 21


intermedius, Plethodon, 61

labialis, Cnemidophorus, 3, 4, 24
laterale, Bascanion, 26, 66
laterale fuliginosum, Bascanion, 3, 4, 26
lateralis fuliginosus, Zamenis, 26
lucifer, Crotalus, 16, 18
lugubris, Anaides, 5
lugubris, Autodax, 4, 5
lugubris farallonensis, Autodax, 2, 3, 4, 5

martinensis, Uta, 2, 3, 4, 18
mitchellii, Crotalus, 3, 26
multicarinatus, Gerrhonotus, 14
multiscutatus, Cnemidophorus, 3, 4, 24,
multiscutatus tessellatus, Cnemidophorus, 24
nigra, Anniella, 42, 43, 44, 48, 49
nigricauda, Uta, 3, 25

occidentalis, Sceloporus, 9, 10, 12


ochrorhynchus, Hypsiglena, 65-6
oregonensis, Plethodon, 61, 62
oregonus, Crotalus, 3, 16, 18

pacificum, Hemidactylium, 6
pacificus, Batrachoseps, 3, 4, 6, 7, 11
palmeri, Gerrhonotus, 21
Phrynosoma, cerroense, 3, 4, 23
hernandezi, 23
Pituophis, 66
catenifer, 3, 21
catenifer deserticola, 21
Pityophis sayi bellona, 21
Plethodon, 7
intermedius, 61
oregonensis, 61, 62
vandykei, 61
Description of a New Species of Plethodon, 61-3
pulchra, Anniella, 41, 42, 43, 44, 45, 47, 48,

regilla, Hyla, 3, 13, 23


Rhinechis, 66
riversiana, Xantusia, 3, 4, 15, 16, 17
rubidus, Cnemidophorus, 3, 25, 26
rubidus, Cnemidophorus tessellatus, 26

sayi bellona, Pityophis, 21


Sceloporus becki, 2, 3, 4, 9
biseriatus becki, 3, 9, 10, 11, 12, 14
clarki clarki, 23
occidentalis, 9, 10, 12
undulatus, 9
zosteromus, 3, 23, 25, 26
scincicauda, Gerrhonotus, 3, 10, 12, 14, 19, 20, 21
scincicauda ignavus, Gerrhonotus, 2, 3, 19, 21
scincicaudus, Gerrhonotus, 14
stansburiana, Uta, 3, 13, 14, 16, 17, 21, 23, 24
stellata, Uta, 2, 3, 4, 21

tessellatus rubidus, Cnemidophorus 26


tessellatus multiscutatus, Cnemidophorus, 24
texana, Anniella, 42, 43, 44, 45, 48
tigris undulatus, Cnemidophorus, 66

undulatus, Cnemidophorus tigris, 66


undulatus, Sceloporus, 9
Uta, 18, 27
auriculata, 3, 4, 26
clarionensis, 3, 4, 27
martinensis, 2, 3, 4, 18
nigricauda, 3, 25
stansburiana, 3, 13, 14, 16, 17, 21, 23, 24
stellata, 2, 3, 4, 21

vandykei, Plethodon
Description of a New Species of the Genus Plethodon, 61-3
ventralis, Callisaurus, 3, 25
Verticaria beldingi, 23
hyperythra beldingi, 3, 23, 25

wislizenii, Crotaphytus, 25

Xantusia riversiana, 3, 4, 15, 16, 17

Zamenis lateralis fuliginosus, 26


zosteromus, Sceloporus, 3, 23, 25, 26

Transcriber's Notes:
1. Pages 20,25: The spelling of Reëxamination/reëxamination has been left with the
dieresis.
2. Page 61: At the end of the page there is a date, March 12, 1906., which does not seem
to pertain to anything. It has been left out of the text.
3. Footnotes have been moved to the end of the text.
Welcome to our website – the ideal destination for book lovers and
knowledge seekers. With a mission to inspire endlessly, we offer a
vast collection of books, ranging from classic literary works to
specialized publications, self-development books, and children's
literature. Each book is a new journey of discovery, expanding
knowledge and enriching the soul of the reade

Our website is not just a platform for buying books, but a bridge
connecting readers to the timeless values of culture and wisdom. With
an elegant, user-friendly interface and an intelligent search system,
we are committed to providing a quick and convenient shopping
experience. Additionally, our special promotions and home delivery
services ensure that you save time and fully enjoy the joy of reading.

Let us accompany you on the journey of exploring knowledge and


personal growth!

ebookultra.com

You might also like