Skip to content

Commit 7c4afc3

Browse files
committed
Merge branch 'docs/add-v0.2-docs'
2 parents 4918f56 + c62b8dd commit 7c4afc3

File tree

389 files changed

+11193
-2456
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

389 files changed

+11193
-2456
lines changed

docs/Doxyfile.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ PROJECT_LOGO = "@TOP_SRCDIR@/docs/logo.png"
5858
# entered, it will be relative to the location where doxygen was started. If
5959
# left blank the current directory will be used.
6060

61-
OUTPUT_DIRECTORY = "@TOP_BUILDDIR@/docs"
61+
OUTPUT_DIRECTORY = "@TOP_SRCDIR@/docs"
6262

6363
# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
6464
# directories (in 2 levels) under the output directory of each output format and

docs/html/accelerator_8hpp_source.html

Lines changed: 124 additions & 23 deletions
Large diffs are not rendered by default.

docs/html/alveo_2hardware_8hpp_source.html

Lines changed: 177 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 217 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,217 @@
1+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2+
<html xmlns="http://www.w3.org/1999/xhtml">
3+
<head>
4+
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
5+
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
6+
<meta name="generator" content="Doxygen 1.9.1"/>
7+
<meta name="viewport" content="width=device-width, initial-scale=1"/>
8+
<title>CYNQ: alveo/vadd-host.cpp</title>
9+
<link href="tabs.css" rel="stylesheet" type="text/css"/>
10+
<script type="text/javascript" src="jquery.js"></script>
11+
<script type="text/javascript" src="dynsections.js"></script>
12+
<link href="navtree.css" rel="stylesheet" type="text/css"/>
13+
<script type="text/javascript" src="resize.js"></script>
14+
<script type="text/javascript" src="navtreedata.js"></script>
15+
<script type="text/javascript" src="navtree.js"></script>
16+
<link href="search/search.css" rel="stylesheet" type="text/css"/>
17+
<script type="text/javascript" src="search/searchdata.js"></script>
18+
<script type="text/javascript" src="search/search.js"></script>
19+
<script type="text/javascript">
20+
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
21+
$(document).ready(function() { init_search(); });
22+
/* @license-end */
23+
</script>
24+
<link href="doxygen.css" rel="stylesheet" type="text/css" />
25+
</head>
26+
<body>
27+
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
28+
<div id="titlearea">
29+
<table cellspacing="0" cellpadding="0">
30+
<tbody>
31+
<tr style="height: 56px;">
32+
<td id="projectlogo"><img alt="Logo" src="logo.png"/></td>
33+
<td id="projectalign" style="padding-left: 0.5em;">
34+
<div id="projectname">CYNQ
35+
&#160;<span id="projectnumber">0.2.0</span>
36+
</div>
37+
<div id="projectbrief">Framework to develop FPGA applications in C++ with the easiness of PYNQ</div>
38+
</td>
39+
<td> <div id="MSearchBox" class="MSearchBoxInactive">
40+
<span class="left">
41+
<img id="MSearchSelect" src="search/mag_sel.svg"
42+
onmouseover="return searchBox.OnSearchSelectShow()"
43+
onmouseout="return searchBox.OnSearchSelectHide()"
44+
alt=""/>
45+
<input type="text" id="MSearchField" value="Search" accesskey="S"
46+
onfocus="searchBox.OnSearchFieldFocus(true)"
47+
onblur="searchBox.OnSearchFieldFocus(false)"
48+
onkeyup="searchBox.OnSearchFieldChange(event)"/>
49+
</span><span class="right">
50+
<a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.svg" alt=""/></a>
51+
</span>
52+
</div>
53+
</td>
54+
</tr>
55+
</tbody>
56+
</table>
57+
</div>
58+
<!-- end header part -->
59+
<!-- Generated by Doxygen 1.9.1 -->
60+
<script type="text/javascript">
61+
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
62+
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
63+
/* @license-end */
64+
</script>
65+
</div><!-- top -->
66+
<div id="side-nav" class="ui-resizable side-nav-resizable">
67+
<div id="nav-tree">
68+
<div id="nav-tree-contents">
69+
<div id="nav-sync" class="sync"></div>
70+
</div>
71+
</div>
72+
<div id="splitbar" style="-moz-user-select:none;"
73+
class="ui-resizable-handle">
74+
</div>
75+
</div>
76+
<script type="text/javascript">
77+
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
78+
$(document).ready(function(){initNavTree('alveo_2vadd-host_8cpp-example.html',''); initResizable(); });
79+
/* @license-end */
80+
</script>
81+
<div id="doc-content">
82+
<!-- window showing the filter options -->
83+
<div id="MSearchSelectWindow"
84+
onmouseover="return searchBox.OnSearchSelectShow()"
85+
onmouseout="return searchBox.OnSearchSelectHide()"
86+
onkeydown="return searchBox.OnSearchSelectKey(event)">
87+
</div>
88+
89+
<!-- iframe showing the search results (closed by default) -->
90+
<div id="MSearchResultsWindow">
91+
<iframe src="javascript:void(0)" frameborder="0"
92+
name="MSearchResults" id="MSearchResults">
93+
</iframe>
94+
</div>
95+
96+
<div class="header">
97+
<div class="headertitle">
98+
<div class="title">alveo/vadd-host.cpp</div> </div>
99+
</div><!--header-->
100+
<div class="contents">
101+
<p>This is a sample of how the hello world xrt example looks like in CYNQ. It performs two vector additions.</p>
102+
<div class="fragment"><div class="line"><span class="comment">/*</span></div>
103+
<div class="line"><span class="comment"> * See LICENSE for more information about licensing</span></div>
104+
<div class="line"><span class="comment"> *</span></div>
105+
<div class="line"><span class="comment"> * Copyright 2024</span></div>
106+
<div class="line"><span class="comment"> * Author: Luis G. Leon-Vega &lt;[email protected]&gt;</span></div>
107+
<div class="line"><span class="comment"> */</span></div>
108+
<div class="line"> </div>
109+
<div class="line"><span class="preprocessor">#include &lt;algorithm&gt;</span></div>
110+
<div class="line"><span class="preprocessor">#include &lt;cstring&gt;</span></div>
111+
<div class="line"><span class="preprocessor">#include &lt;cynq/accelerator.hpp&gt;</span></div>
112+
<div class="line"><span class="preprocessor">#include &lt;cynq/datamover.hpp&gt;</span></div>
113+
<div class="line"><span class="preprocessor">#include &lt;cynq/hardware.hpp&gt;</span></div>
114+
<div class="line"><span class="preprocessor">#include &lt;cynq/memory.hpp&gt;</span></div>
115+
<div class="line"><span class="preprocessor">#include &lt;iostream&gt;</span></div>
116+
<div class="line"><span class="preprocessor">#include &lt;string&gt;</span></div>
117+
<div class="line"> </div>
118+
<div class="line"><span class="preprocessor">#if !defined(EXAMPLE_ALVEO_VADD_XCLBIN_LOCATION)</span></div>
119+
<div class="line"><span class="preprocessor">#error &quot;Missing location macros for example&quot;</span></div>
120+
<div class="line"><span class="preprocessor">#endif</span></div>
121+
<div class="line"> </div>
122+
<div class="line"><span class="comment">// Given by the example</span></div>
123+
<div class="line"><span class="keyword">static</span> constexpr <span class="keywordtype">char</span> kDefaultXclBin[] = EXAMPLE_ALVEO_VADD_XCLBIN_LOCATION;</div>
124+
<div class="line"><span class="keyword">static</span> constexpr <span class="keywordtype">int</span> kDataSize = 4096;</div>
125+
<div class="line"> </div>
126+
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span> **argv) {</div>
127+
<div class="line"> <span class="comment">// NOTE: This is a basic example. Error checking has been removed to keep</span></div>
128+
<div class="line"> <span class="comment">// simplicity but it is always recommended</span></div>
129+
<div class="line"> <span class="keyword">using namespace </span>cynq; <span class="comment">// NOLINT</span></div>
130+
<div class="line"> uint datasize = kDataSize;</div>
131+
<div class="line"> </div>
132+
<div class="line"> std::string xclbin_path;</div>
133+
<div class="line"> </div>
134+
<div class="line"> <span class="comment">// Load argument</span></div>
135+
<div class="line"> xclbin_path = argc &gt; 1 ? std::string(argv[1]) : kDefaultXclBin;</div>
136+
<div class="line"> </div>
137+
<div class="line"> <span class="comment">// Create the platform</span></div>
138+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;----- Initialising platform -----&quot;</span> &lt;&lt; std::endl;</div>
139+
<div class="line"> std::shared_ptr&lt;IHardware&gt; platform =</div>
140+
<div class="line"> <a name="a0"></a><a class="code" href="classcynq_1_1IHardware.html#ab3cc41fbed5a6da306d8ae51153a3065">IHardware::Create</a>(HardwareArchitecture::Alveo, xclbin_path);</div>
141+
<div class="line"> </div>
142+
<div class="line"> <span class="comment">// Get an accelerator</span></div>
143+
<div class="line"> std::shared_ptr&lt;IAccelerator&gt; accel = platform-&gt;GetAccelerator(<span class="stringliteral">&quot;vadd&quot;</span>);</div>
144+
<div class="line"> <span class="comment">// Get a data mover</span></div>
145+
<div class="line"> std::shared_ptr&lt;IDataMover&gt; mover = platform-&gt;GetDataMover(0);</div>
146+
<div class="line"> </div>
147+
<div class="line"> <span class="comment">// Create buffers for input and output</span></div>
148+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;----- Creating memory -----&quot;</span> &lt;&lt; std::endl;</div>
149+
<div class="line"> std::size_t vec_size = <span class="keyword">sizeof</span>(int) * kDataSize;</div>
150+
<div class="line"> std::shared_ptr&lt;IMemory&gt; bo_0 =</div>
151+
<div class="line"> mover-&gt;GetBuffer(vec_size, accel-&gt;GetMemoryBank(0));</div>
152+
<div class="line"> std::shared_ptr&lt;IMemory&gt; bo_1 =</div>
153+
<div class="line"> mover-&gt;GetBuffer(vec_size, accel-&gt;GetMemoryBank(1));</div>
154+
<div class="line"> std::shared_ptr&lt;IMemory&gt; bo_out =</div>
155+
<div class="line"> mover-&gt;GetBuffer(vec_size, accel-&gt;GetMemoryBank(2));</div>
156+
<div class="line"> </div>
157+
<div class="line"> <span class="comment">// Get the host pointers for input/outut</span></div>
158+
<div class="line"> <span class="keyword">auto</span> bo_0_map = bo_0-&gt;HostAddress&lt;<span class="keywordtype">int</span>&gt;().get();</div>
159+
<div class="line"> <span class="keyword">auto</span> bo_1_map = bo_1-&gt;HostAddress&lt;<span class="keywordtype">int</span>&gt;().get();</div>
160+
<div class="line"> <span class="keyword">auto</span> bo_out_map = bo_out-&gt;HostAddress&lt;<span class="keywordtype">int</span>&gt;().get();</div>
161+
<div class="line"> </div>
162+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;----- Loading input -----&quot;</span> &lt;&lt; std::endl;</div>
163+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;Allocate Buffer in Global Memory\n&quot;</span>;</div>
164+
<div class="line"> std::fill(bo_0_map, bo_0_map + kDataSize, 0);</div>
165+
<div class="line"> std::fill(bo_1_map, bo_1_map + kDataSize, 0);</div>
166+
<div class="line"> std::fill(bo_out_map, bo_out_map + kDataSize, 0);</div>
167+
<div class="line"> </div>
168+
<div class="line"> <span class="comment">// Create the test data</span></div>
169+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;----- Create reference data -----&quot;</span> &lt;&lt; std::endl;</div>
170+
<div class="line"> <span class="keywordtype">int</span> bufReference[kDataSize];</div>
171+
<div class="line"> <span class="keywordflow">for</span> (uint i = 0; i &lt; kDataSize; ++i) {</div>
172+
<div class="line"> bo_0_map[i] = i;</div>
173+
<div class="line"> bo_1_map[i] = i;</div>
174+
<div class="line"> bufReference[i] = bo_0_map[i] + bo_1_map[i];</div>
175+
<div class="line"> }</div>
176+
<div class="line"> </div>
177+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;----- Moving the data -----&quot;</span> &lt;&lt; std::endl;</div>
178+
<div class="line"> <span class="comment">// Move the data</span></div>
179+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;synchronize input buffer data to device global memory\n&quot;</span>;</div>
180+
<div class="line"> mover-&gt;Upload(bo_0, bo_0-&gt;Size(), 0, ExecutionType::Async);</div>
181+
<div class="line"> mover-&gt;Upload(bo_1, bo_1-&gt;Size(), 0, ExecutionType::Async);</div>
182+
<div class="line"> </div>
183+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;----- Configuring accelerator -----&quot;</span> &lt;&lt; std::endl;</div>
184+
<div class="line"> <span class="keyword">auto</span> devstatus = accel-&gt;GetStatus();</div>
185+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;\tAccel Status: &quot;</span> &lt;&lt; <span class="keyword">static_cast&lt;</span><span class="keywordtype">int</span><span class="keyword">&gt;</span>(devstatus) &lt;&lt; std::endl;</div>
186+
<div class="line"> accel-&gt;Attach(0, bo_0);</div>
187+
<div class="line"> accel-&gt;Attach(1, bo_1);</div>
188+
<div class="line"> accel-&gt;Attach(2, bo_out);</div>
189+
<div class="line"> accel-&gt;Attach(3, &amp;datasize);</div>
190+
<div class="line"> </div>
191+
<div class="line"> accel-&gt;Start(StartMode::Once);</div>
192+
<div class="line"> accel-&gt;Sync();</div>
193+
<div class="line"> </div>
194+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;----- Moving the data back -----&quot;</span> &lt;&lt; std::endl;</div>
195+
<div class="line"> mover-&gt;Download(bo_out, bo_out-&gt;Size(), 0, ExecutionType::Sync);</div>
196+
<div class="line"> </div>
197+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;----- Validating -----&quot;</span> &lt;&lt; std::endl;</div>
198+
<div class="line"> <span class="comment">// Validate our results</span></div>
199+
<div class="line"> <span class="keywordflow">if</span> (std::memcmp(bo_out_map, bufReference, kDataSize)) {</div>
200+
<div class="line"> std::cerr &lt;&lt; <span class="stringliteral">&quot;Value read back does not match reference&quot;</span> &lt;&lt; std::endl;</div>
201+
<div class="line"> <span class="keywordflow">return</span> -1;</div>
202+
<div class="line"> }</div>
203+
<div class="line"> </div>
204+
<div class="line"> std::cout &lt;&lt; <span class="stringliteral">&quot;Test passed&quot;</span> &lt;&lt; std::endl;</div>
205+
<div class="line"> <span class="keywordflow">return</span> 0;</div>
206+
<div class="line">}</div>
207+
<div class="ttc" id="aclasscynq_1_1IHardware_html_ab3cc41fbed5a6da306d8ae51153a3065"><div class="ttname"><a href="classcynq_1_1IHardware.html#ab3cc41fbed5a6da306d8ae51153a3065">cynq::IHardware::Create</a></div><div class="ttdeci">static std::shared_ptr&lt; IHardware &gt; Create(const HardwareArchitecture hw, const std::string &amp;bitstream, const std::string &amp;xclbin)</div><div class="ttdoc">Create method Factory method to create a hardware-specific subclasses for accelerators and data mover...</div><div class="ttdef"><b>Definition:</b> hardware.cpp:15</div></div>
208+
</div><!-- fragment --> </div><!-- contents -->
209+
</div><!-- doc-content -->
210+
<!-- start footer part -->
211+
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
212+
<ul>
213+
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1 </li>
214+
</ul>
215+
</div>
216+
</body>
217+
</html>

0 commit comments

Comments
 (0)