hc
2023-11-06 15ade055295d13f95d49e3d99b09f3bbfb4a43e7
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- Copyright (C) 2006-2016 Free Software Foundation, Inc.
 
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with the
Invariant Sections being "Funding Free Software", the Front-Cover
texts being (a) (see below), and with the Back-Cover Texts being (b)
(see below).  A copy of the license is included in the section entitled
"GNU Free Documentation License".
 
(a) The FSF's Front-Cover Text is:
 
A GNU Manual
 
(b) The FSF's Back-Cover Text is:
 
You have freedom to copy and modify this GNU Manual, like GNU
     software.  Copies published by the Free Software Foundation raise
     funds for GNU development. -->
<!-- Created by GNU Texinfo 5.2, http://www.gnu.org/software/texinfo/ -->
<head>
<title>GNU libgomp: CUDA Streams Usage</title>
 
<meta name="description" content="GNU libgomp: CUDA Streams Usage">
<meta name="keywords" content="GNU libgomp: CUDA Streams Usage">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="makeinfo">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link href="index.html#Top" rel="start" title="Top">
<link href="Library-Index.html#Library-Index" rel="index" title="Library Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="index.html#Top" rel="up" title="Top">
<link href="OpenACC-Library-Interoperability.html#OpenACC-Library-Interoperability" rel="next" title="OpenACC Library Interoperability">
<link href="GCC_005fACC_005fNOTIFY.html#GCC_005fACC_005fNOTIFY" rel="prev" title="GCC_ACC_NOTIFY">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.smallquotation {font-size: smaller}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.indentedblock {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
div.smalldisplay {margin-left: 3.2em}
div.smallexample {margin-left: 3.2em}
div.smallindentedblock {margin-left: 3.2em; font-size: smaller}
div.smalllisp {margin-left: 3.2em}
kbd {font-style:oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
pre.smalldisplay {font-family: inherit; font-size: smaller}
pre.smallexample {font-size: smaller}
pre.smallformat {font-family: inherit; font-size: smaller}
pre.smalllisp {font-size: smaller}
span.nocodebreak {white-space:nowrap}
span.nolinebreak {white-space:nowrap}
span.roman {font-family:serif; font-weight:normal}
span.sansserif {font-family:sans-serif; font-weight:normal}
ul.no-bullet {list-style: none}
-->
</style>
 
 
</head>
 
<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
<a name="CUDA-Streams-Usage"></a>
<div class="header">
<p>
Next: <a href="OpenACC-Library-Interoperability.html#OpenACC-Library-Interoperability" accesskey="n" rel="next">OpenACC Library Interoperability</a>, Previous: <a href="OpenACC-Environment-Variables.html#OpenACC-Environment-Variables" accesskey="p" rel="prev">OpenACC Environment Variables</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Library-Index.html#Library-Index" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<a name="CUDA-Streams-Usage-1"></a>
<h2 class="chapter">7 CUDA Streams Usage</h2>
 
<p>This applies to the <code>nvptx</code> plugin only.
</p>
<p>The library provides elements that perform asynchronous movement of
data and asynchronous operation of computing constructs.  This
asynchronous functionality is implemented by making use of CUDA
streams<a name="DOCF1" href="#FOOT1"><sup>1</sup></a>.
</p>
<p>The primary means by that the asychronous functionality is accessed
is through the use of those OpenACC directives which make use of the
<code>async</code> and <code>wait</code> clauses.  When the <code>async</code> clause is
first used with a directive, it creates a CUDA stream.  If an
<code>async-argument</code> is used with the <code>async</code> clause, then the
stream is associated with the specified <code>async-argument</code>.
</p>
<p>Following the creation of an association between a CUDA stream and the
<code>async-argument</code> of an <code>async</code> clause, both the <code>wait</code>
clause and the <code>wait</code> directive can be used.  When either the
clause or directive is used after stream creation, it creates a
rendezvous point whereby execution waits until all operations
associated with the <code>async-argument</code>, that is, stream, have
completed.
</p>
<p>Normally, the management of the streams that are created as a result of
using the <code>async</code> clause, is done without any intervention by the
caller.  This implies the association between the <code>async-argument</code>
and the CUDA stream will be maintained for the lifetime of the program.
However, this association can be changed through the use of the library
function <code>acc_set_cuda_stream</code>.  When the function
<code>acc_set_cuda_stream</code> is called, the CUDA stream that was
originally associated with the <code>async</code> clause will be destroyed.
Caution should be taken when changing the association as subsequent
references to the <code>async-argument</code> refer to a different
CUDA stream.
</p>
 
 
 
<div class="footnote">
<hr>
<h4 class="footnotes-heading">Footnotes</h4>
 
<h3><a name="FOOT1" href="#DOCF1">(1)</a></h3>
<p>See &quot;Stream Management&quot; in &quot;CUDA Driver API&quot;,
TRM-06703-001, Version 5.5, for additional information</p>
</div>
<hr>
<div class="header">
<p>
Next: <a href="OpenACC-Library-Interoperability.html#OpenACC-Library-Interoperability" accesskey="n" rel="next">OpenACC Library Interoperability</a>, Previous: <a href="OpenACC-Environment-Variables.html#OpenACC-Environment-Variables" accesskey="p" rel="prev">OpenACC Environment Variables</a>, Up: <a href="index.html#Top" accesskey="u" rel="up">Top</a> &nbsp; [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Library-Index.html#Library-Index" title="Index" rel="index">Index</a>]</p>
</div>
 
 
 
</body>
</html>