Skip to content

Commit 16c02ab

Browse files
committed
add a section describing document conventions
1 parent 6556039 commit 16c02ab

1 file changed

Lines changed: 94 additions & 14 deletions

File tree

api/introduction.asciidoc

Lines changed: 94 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ envelope, Central Processing Units (CPUs) now improve performance by adding
1010
multiple cores.
1111
Graphics Processing Units (GPUs) have also evolved from fixed function
1212
rendering devices into programmable parallel processors.
13-
As todays computer systems often include highly parallel CPUs, GPUs and
13+
As today's computer systems often include highly parallel CPUs, GPUs and
1414
other types of processors, it is important to enable software developers to
1515
take full advantage of these heterogeneous processing platforms.
1616

@@ -76,19 +76,6 @@ devices; and a set of optional extensions that are likely to move into the
7676
core specification in later revisions of the OpenCL specification.
7777

7878

79-
== Normative References
80-
81-
Normative references are references to external documents or resources to
82-
which implementers of OpenCL must comply with all, or specified portions of,
83-
as described in this specification.
84-
85-
[[iso-c11]]
86-
_ISO/IEC 9899:2011 - Information technology - Programming languages - C_,
87-
https://www.iso.org/standard/57853.html (final specification),
88-
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf (last public
89-
draft).
90-
91-
9279
== Version Numbers
9380

9481
The OpenCL version number follows a _major.minor-revision_ scheme. When this
@@ -124,3 +111,96 @@ versions of OpenCL support that feature.
124111
glossary.
125112
* Universal: Features that have no mention of what version they are missing
126113
before or deprecated by are available in all versions of OpenCL.
114+
115+
116+
[[introduction-document-conventions]]
117+
== Document Conventions
118+
119+
The OpenCL specification is intended for use by both implementors of the API and
120+
application developers seeking to make use of the API, forming a contract
121+
between these parties.
122+
The OpenCL specification text may address either party; typically the intended
123+
audience can be inferred from context, though some sections address only one of
124+
these parties.
125+
126+
[[introduction-normative-requirements]]
127+
=== Normative Requirements
128+
129+
The OpenCL Specification uses a combination of
130+
<<introduction-normative-terminology, normative terminology>> and
131+
<<introduction-normative-descriptions, normative descriptions>> to express
132+
the requirements that it imposes on applications and implementations.
133+
An application which complies with all normative requirements imposed on
134+
applications is said to make *valid use* of the API; failing to comply with
135+
such requirements may result in undefined behavior, as described in the
136+
<<valid-usage, Valid Usage>> section.
137+
In the context of this document, an implementation which complies with all
138+
normative requirements imposed on implementations is said to be
139+
*conformant*.
140+
141+
[[introduction-normative-terminology]]
142+
==== Normative Terminology
143+
144+
Within this specification, the key words must, required, should, may,
145+
and optional are to be interpreted as described in
146+
https://www.ietf.org/rfc/rfc2119.txt[RFC 2119 - Key words for use in RFCs to
147+
Indicate Requirement Levels] (https://www.ietf.org/rfc/rfc2119.txt).
148+
The additional key word optionally is an alternate form of optional, for
149+
use where grammatically appropriate.
150+
151+
[[introduction-normative-descriptions]]
152+
==== Normative Descriptions
153+
154+
The normative term must is primarily used to describe *application* behavior,
155+
and in particular to constrain what inputs or commands issued by the application
156+
to the implementation are considered valid.
157+
158+
To constrain *implementation* behavior, the specification sometimes uses
159+
must, but more often simply describes the behavior of the implementation in
160+
response to specified commands and inputs.
161+
Unless explicitly stated otherwise, such references to implementation
162+
behavior describe the behavior of *conformant* implementations, and express
163+
normative requirements which an implementation must satisfy in order to
164+
conform to the specification.
165+
166+
When the normative terms may, should, or optional are used to describe
167+
implementation behavior, they define alternative or optional behaviors which
168+
a conformant implementation may or may not exhibit.
169+
Such statements are also normative.
170+
171+
[[introduction-normative-references]]
172+
==== Normative References
173+
174+
References to external documents are considered normative references if the
175+
OpenCL specification uses <<introduction-normative-terminology, normative
176+
terminology>> or <<introduction-normative-descriptions, normative descriptions>>
177+
to refer to them or their requirements, either as a whole or in part.
178+
179+
The following documents are referenced by normative sections of the
180+
specification:
181+
182+
[[iso-c11]]
183+
_ISO/IEC 9899:2011 - Information technology - Programming languages - C_,
184+
https://www.iso.org/standard/57853.html (final specification),
185+
http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1570.pdf (last public
186+
draft)
187+
188+
[[spirv-spec]]
189+
_SPIR-V Specification, Version 1.6, Unified_.
190+
https://registry.khronos.org/spir-v/
191+
192+
[[introduction-error-codes]]
193+
=== Error Codes
194+
195+
In many cases, the OpenCL specification describes conditions when an
196+
implementation must return an error code due to invalid application usage.
197+
If multiple conditions are described for an error code, the error code must be
198+
returned if any of the conditions are met.
199+
If error conditions are met for multiple error codes, the implementation may
200+
return any of the error conditions.
201+
202+
[[introduction-strings]]
203+
=== String Representation
204+
205+
Unless specified otherwise, strings passed to or returned from OpenCL API
206+
functions are defined to be null-terminated and UTF-8 encoded.

0 commit comments

Comments
 (0)