1,363,450 research outputs found
CUDA Quantum
<p>CUDA Quantum is now available <a href="https://pypi.org/project/cuda-quantum/">on PyPI</a>!
For the initial PyPI release, the NVIDIA multi-gpu and tensornet backends are not yet included. Check out our Docker images <a href="https://catalog.ngc.nvidia.com/orgs/nvidia/containers/cuda-quantum">on NGC</a> to obtain the fully featured version, or build it from source using the release assets.
With 0.4.0 we have added support for quantum kernel execution on Quantinuum and IonQ backends. For more information, see our <a href="https://nvidia.github.io/cuda-quantum/latest/using/hardware.html">docs</a>.
As always, we welcome questions and feedback in the form of <a href="https://github.com/NVIDIA/cuda-quantum/issues/new/choose">issues</a> and <a href="https://github.com/NVIDIA/cuda-quantum/discussions">discussions</a> on this repository.</p>
<!-- Release notes generated using configuration in .github/release.yml at b2abbaa6b021ffa5c9619dcf0530c1284b9c2208 -->
What's Changed
Features and Enhancements
<ul>
<li>Implement cudaq::control() taking a free function as argument by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/35">https://github.com/NVIDIA/cuda-quantum/pull/35</a></li>
<li>Add reset to kernel_builder in C++ and python. by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/18">https://github.com/NVIDIA/cuda-quantum/pull/18</a></li>
<li>Add for_loop to cudaq::kernel_builder and cudaq.Kernel by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/19">https://github.com/NVIDIA/cuda-quantum/pull/19</a></li>
<li>Optimization: do not add control qubits to compute/uncompute steps of compute_action idiom. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/63">https://github.com/NVIDIA/cuda-quantum/pull/63</a></li>
<li>Expose for_each_term and for_each_pauli to python by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/56">https://github.com/NVIDIA/cuda-quantum/pull/56</a></li>
<li>Implement spin_op::to_matrix() by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/31">https://github.com/NVIDIA/cuda-quantum/pull/31</a></li>
<li>Add support for negate operator (operator!) to cudaq::control. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/81">https://github.com/NVIDIA/cuda-quantum/pull/81</a></li>
<li>Improve the ExecutionManager Extension Point by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/33">https://github.com/NVIDIA/cuda-quantum/pull/33</a></li>
<li>Performance enhancements: observe_n and sample_n broadcast functions by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/74">https://github.com/NVIDIA/cuda-quantum/pull/74</a></li>
<li>spin_op performance enhancement by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/115">https://github.com/NVIDIA/cuda-quantum/pull/115</a></li>
<li>Implement chemistry domain sub-package. by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/112">https://github.com/NVIDIA/cuda-quantum/pull/112</a></li>
<li>[optimizer] Decomposition pass by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/143">https://github.com/NVIDIA/cuda-quantum/pull/143</a></li>
<li>Increase performance of quantum allocation and deallocation in simulation by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/167">https://github.com/NVIDIA/cuda-quantum/pull/167</a></li>
<li>Basis translation pass by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/144">https://github.com/NVIDIA/cuda-quantum/pull/144</a></li>
<li>Implement runtime quantum operation tracing by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/92">https://github.com/NVIDIA/cuda-quantum/pull/92</a></li>
<li>[optimizer] Multicontrol decomposition by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/194">https://github.com/NVIDIA/cuda-quantum/pull/194</a></li>
<li>Add Server Helper for Quantinuum backends by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/176">https://github.com/NVIDIA/cuda-quantum/pull/176</a></li>
<li>Expose SWAP gate to c++ and python builder by @anthony-santana in <a href="https://github.com/NVIDIA/cuda-quantum/pull/200">https://github.com/NVIDIA/cuda-quantum/pull/200</a></li>
<li>[opt] Add memtoreg and regtomem passes. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/233">https://github.com/NVIDIA/cuda-quantum/pull/233</a></li>
<li>Added forward difference gradient evaluation. by @poojarao8 in <a href="https://github.com/NVIDIA/cuda-quantum/pull/107">https://github.com/NVIDIA/cuda-quantum/pull/107</a></li>
<li>Local emulation of remote qpu execution by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/262">https://github.com/NVIDIA/cuda-quantum/pull/262</a></li>
<li>Implement MPI support in CUDA Quantum by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/237">https://github.com/NVIDIA/cuda-quantum/pull/237</a></li>
<li>[pass] Add a loop normalization pass. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/313">https://github.com/NVIDIA/cuda-quantum/pull/313</a></li>
<li>Linux support for pip installation by @anthony-santana in <a href="https://github.com/NVIDIA/cuda-quantum/pull/304">https://github.com/NVIDIA/cuda-quantum/pull/304</a>
### Bug Fixes </li>
<li>Add overload to handle the case when the user writes: by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/32">https://github.com/NVIDIA/cuda-quantum/pull/32</a></li>
<li>Do not allow operator! on target qubits. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/6">https://github.com/NVIDIA/cuda-quantum/pull/6</a></li>
<li>Temporary fix for AST visitor reentrancy bugs. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/22">https://github.com/NVIDIA/cuda-quantum/pull/22</a></li>
<li>Fix bug 69, no expval attached to <code>observe_result</code> when shots aren't provided by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/70">https://github.com/NVIDIA/cuda-quantum/pull/70</a></li>
<li>Fix <code>QuakeValue</code> Lifetime Bug and <code>kernel_builder::to_quake</code> Handling by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/67">https://github.com/NVIDIA/cuda-quantum/pull/67</a></li>
<li>Adding r-val overload (QuakeValue &&) for kernel_builder adjoint modifier by @1tnguyen in <a href="https://github.com/NVIDIA/cuda-quantum/pull/99">https://github.com/NVIDIA/cuda-quantum/pull/99</a></li>
<li>[CircuitCheck] Handle qvec as controls by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/128">https://github.com/NVIDIA/cuda-quantum/pull/128</a></li>
<li>[common-ops] Fixes some matrices (row-major vs col-major) issues by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/133">https://github.com/NVIDIA/cuda-quantum/pull/133</a></li>
<li>[quake] Fixes some matrices (row-major vs col-major) issues by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/140">https://github.com/NVIDIA/cuda-quantum/pull/140</a></li>
<li>Fix #129, Make kernel_builder::qalloc(1) explicitly return a qvec. by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/136">https://github.com/NVIDIA/cuda-quantum/pull/136</a></li>
<li><code>QuakeBridgeVisitor</code> to handle <code>cphase</code> by @1tnguyen in <a href="https://github.com/NVIDIA/cuda-quantum/pull/132">https://github.com/NVIDIA/cuda-quantum/pull/132</a></li>
<li>cudaq-ensmallen not export BLAS symbols by @1tnguyen in <a href="https://github.com/NVIDIA/cuda-quantum/pull/185">https://github.com/NVIDIA/cuda-quantum/pull/185</a></li>
<li>Fixed a subtle bug in <code>QppCircuitSimulator::observe</code> by @1tnguyen in <a href="https://github.com/NVIDIA/cuda-quantum/pull/189">https://github.com/NVIDIA/cuda-quantum/pull/189</a></li>
<li>Bind r1 gate to python by @anthony-santana in <a href="https://github.com/NVIDIA/cuda-quantum/pull/198">https://github.com/NVIDIA/cuda-quantum/pull/198</a></li>
<li>Fixed <code>QppCircuitSimulator</code> shots <code>ExecutionResult.expectationValue</code> by @1tnguyen in <a href="https://github.com/NVIDIA/cuda-quantum/pull/208">https://github.com/NVIDIA/cuda-quantum/pull/208</a></li>
<li>Fixing segfault crashes when using measure/reset ops. by @1tnguyen in <a href="https://github.com/NVIDIA/cuda-quantum/pull/217">https://github.com/NVIDIA/cuda-quantum/pull/217</a></li>
<li>Fix #250: linkage of top-level (global) function. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/267">https://github.com/NVIDIA/cuda-quantum/pull/267</a></li>
<li>Reset and parametric gates in <code>kernel_builder</code> by @1tnguyen in <a href="https://github.com/NVIDIA/cuda-quantum/pull/269">https://github.com/NVIDIA/cuda-quantum/pull/269</a></li>
<li>Fix #251: Base profile should handle single qubit allocations. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/273">https://github.com/NVIDIA/cuda-quantum/pull/273</a></li>
<li>Fix #281: let canonicalization pattern work with IndexType. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/282">https://github.com/NVIDIA/cuda-quantum/pull/282</a></li>
<li>Fix #286: Add canonicalization to hoist invariants cc.loop arguments. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/289">https://github.com/NVIDIA/cuda-quantum/pull/289</a></li>
<li>Fix #296: issue processing if-statements in JIT compilation by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/298">https://github.com/NVIDIA/cuda-quantum/pull/298</a></li>
<li>[pass] Fix #291: don't erase non-controlled ops by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/292">https://github.com/NVIDIA/cuda-quantum/pull/292</a></li>
<li>Fix #325: Bridge had some bugs with callable instances. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/326">https://github.com/NVIDIA/cuda-quantum/pull/326</a></li>
<li>Fix issue with qreg of dynamic size and disappearing instructions by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/358">https://github.com/NVIDIA/cuda-quantum/pull/358</a></li>
<li>Fix #344 - add support for std::uint8_t kernel argument by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/356">https://github.com/NVIDIA/cuda-quantum/pull/356</a></li>
<li>Fix kernel_builder nested function call bug, #332 by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/334">https://github.com/NVIDIA/cuda-quantum/pull/334</a></li>
<li>Fix #338: Work on implementation of cudaq::adjoint. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/374">https://github.com/NVIDIA/cuda-quantum/pull/374</a>
### Breaking Changes </li>
<li>Remove qpud by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/91">https://github.com/NVIDIA/cuda-quantum/pull/91</a></li>
<li>Delete qtx-translate and references to same. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/102">https://github.com/NVIDIA/cuda-quantum/pull/102</a></li>
<li>Remove outdated functions from cudaq.py by @anthony-santana in <a href="https://github.com/NVIDIA/cuda-quantum/pull/105">https://github.com/NVIDIA/cuda-quantum/pull/105</a></li>
<li>[CircuitCheck] Remove QTX support by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/118">https://github.com/NVIDIA/cuda-quantum/pull/118</a></li>
<li>[quake] Universally replace the QRef type name with Ref. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/160">https://github.com/NVIDIA/cuda-quantum/pull/160</a></li>
<li>[quake] Universal conversion of QVec to Veq. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/163">https://github.com/NVIDIA/cuda-quantum/pull/163</a></li>
<li>Removes the QTX dialect by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/157">https://github.com/NVIDIA/cuda-quantum/pull/157</a></li>
<li>NVQ++ Targets by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/147">https://github.com/NVIDIA/cuda-quantum/pull/147</a></li>
<li>Update python command line flags by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/187">https://github.com/NVIDIA/cuda-quantum/pull/187</a></li>
<li>[nfc] Remove the raise to affine (stub) pass. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/235">https://github.com/NVIDIA/cuda-quantum/pull/235</a>
### Documentation Updates ✏️</li>
<li>Refer to GitHub for building from source instructions, by @bettinaheim in <a href="https://github.com/NVIDIA/cuda-quantum/pull/40">https://github.com/NVIDIA/cuda-quantum/pull/40</a></li>
<li>Documentation update for control qubit negation by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/86">https://github.com/NVIDIA/cuda-quantum/pull/86</a></li>
<li>Fixes to common operations definitions by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/120">https://github.com/NVIDIA/cuda-quantum/pull/120</a></li>
<li>Update circuit simulator documentation to reflect the latest refactoring by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/90">https://github.com/NVIDIA/cuda-quantum/pull/90</a></li>
<li>Update the documentation to reflect the new unified dialect by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/153">https://github.com/NVIDIA/cuda-quantum/pull/153</a></li>
<li>Make the CC ops documentation more uniform. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/150">https://github.com/NVIDIA/cuda-quantum/pull/150</a></li>
<li>[docs] Small fixes to quake dialect example by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/165">https://github.com/NVIDIA/cuda-quantum/pull/165</a>
### Other Changes</li>
<li>Revert change to disable jump branching. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/5">https://github.com/NVIDIA/cuda-quantum/pull/5</a></li>
<li>Replace the old deallocation pass. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/30">https://github.com/NVIDIA/cuda-quantum/pull/30</a></li>
<li>Make use of the various math dialect power operations. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/71">https://github.com/NVIDIA/cuda-quantum/pull/71</a></li>
<li>[nvq++] Add RPATH flags only to the final binary by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/52">https://github.com/NVIDIA/cuda-quantum/pull/52</a></li>
<li>CircuitSimulator Refactor by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/12">https://github.com/NVIDIA/cuda-quantum/pull/12</a></li>
<li>Add a wire type to the quake dialect. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/101">https://github.com/NVIDIA/cuda-quantum/pull/101</a></li>
<li>Add new ops to quake. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/109">https://github.com/NVIDIA/cuda-quantum/pull/109</a></li>
<li>Link to correct version of custatvec libs by @hamidelmaazouz in <a href="https://github.com/NVIDIA/cuda-quantum/pull/88">https://github.com/NVIDIA/cuda-quantum/pull/88</a></li>
<li>[CircuitCheck] Run canonicalizer before checking by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/122">https://github.com/NVIDIA/cuda-quantum/pull/122</a></li>
<li>Convert the quake dialect ops to support both memory and register forms. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/124">https://github.com/NVIDIA/cuda-quantum/pull/124</a></li>
<li>Change qextract to extract_ref everywhere. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/138">https://github.com/NVIDIA/cuda-quantum/pull/138</a></li>
<li>Add types for structs and arrays to CC by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/146">https://github.com/NVIDIA/cuda-quantum/pull/146</a></li>
<li>[quake] OperatorInterface method to get negated controls by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/154">https://github.com/NVIDIA/cuda-quantum/pull/154</a></li>
<li>[CircuitCheck] Handle negated controls by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/159">https://github.com/NVIDIA/cuda-quantum/pull/159</a></li>
<li>Fold constant into extract_ref op by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/164">https://github.com/NVIDIA/cuda-quantum/pull/164</a></li>
<li>[CircuitCheck] Handle raw index in ExtractRefOp by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/168">https://github.com/NVIDIA/cuda-quantum/pull/168</a></li>
<li>[cc] Start adding some LLVM-like operations. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/192">https://github.com/NVIDIA/cuda-quantum/pull/192</a></li>
<li>[CircuitCheck] Handle local qubits by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/190">https://github.com/NVIDIA/cuda-quantum/pull/190</a></li>
<li>[quake, cc] Improved alloca ops by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/193">https://github.com/NVIDIA/cuda-quantum/pull/193</a></li>
<li>Fixes for macOS by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/213">https://github.com/NVIDIA/cuda-quantum/pull/213</a></li>
<li>[bridge, runtime] Replace use of LLVM-IR dialect in the bridge and python interface with CC dialect operations. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/201">https://github.com/NVIDIA/cuda-quantum/pull/201</a></li>
<li>[cc] Add a folder to compute_ptr op. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/220">https://github.com/NVIDIA/cuda-quantum/pull/220</a></li>
<li>[cg] Move GenKernelExecution to CC dialect. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/225">https://github.com/NVIDIA/cuda-quantum/pull/225</a></li>
<li>Remove the use of the MLIR Memref dialect. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/226">https://github.com/NVIDIA/cuda-quantum/pull/226</a></li>
<li>Load available simulators and platforms lazily in Python by @amccaskey in <a href="https://github.com/NVIDIA/cuda-quantum/pull/239">https://github.com/NVIDIA/cuda-quantum/pull/239</a></li>
<li>[opt] Expand loop unrolling to autodetect counted loops. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/265">https://github.com/NVIDIA/cuda-quantum/pull/265</a></li>
<li>[pass] Decompose aggregate quantum allocations into multiple individual qubit allocations by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/280">https://github.com/NVIDIA/cuda-quantum/pull/280</a></li>
<li>[opt] Flag to raise an error if cannot unroll a loop by @boschmitt in <a href="https://github.com/NVIDIA/cuda-quantum/pull/295">https://github.com/NVIDIA/cuda-quantum/pull/295</a></li>
<li>Preserve the line information in the source code for JIT compilation. by @schweitzpgi in <a href="https://github.com/NVIDIA/cuda-quantum/pull/299">https://github
CUDA Quantum
<p>The 0.7.0 release adds support for using NVIDIA Quantum Cloud, giving you access to our most powerful GPU-accelerated simulators even if you don't have an NVIDIA GPU. With 0.7.0, we have furthermore greatly increased expressiveness of the Python and C++ language frontends. Check our our new documentation to learn more about the new Python syntax support we have added, and follow our blog to learn more about the new setup and its performance benefits.</p>
<h2>What's Changed</h2>
<h3>Features and Enhancements </h3>
<ul>
<li>NVCF integration by @1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1148</li>
<li>Enable CUDA Quantum language specification in Python by @khalatepradnya in https://github.com/NVIDIA/cuda-quantum/pull/1312</li>
<li>Support for composable aggregate argument types, such as e.g. vectors of structs by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1080</li>
<li>Kernel builder JIT cache optimizations by @bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1206</li>
<li>Optimize LLVM JIT for large circuits by @bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1261</li>
<li>Unitary circuit drawing by @amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/1299</li>
</ul>
<h3>Bug Fixes </h3>
<ul>
<li>Fix issue with argument checking on kernel_builder apply_call by @amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/1131</li>
<li>Don't throw fatal exception during 'import cudaq' if missing dependencies by @bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1152</li>
<li>Fixes for the <code>remote-mqpu</code> platform by @1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1158</li>
<li>Fix incorrect warning for IonQ command line parameters by @bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1173</li>
<li>Fix non-created custatevec handle edge case by @1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1160</li>
<li>Fix tensornet bug with async python functions by @amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/1177</li>
<li>Change <code>__global__</code> register bit ordering for target mode to match library mode by @bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1027</li>
<li>Fix issue with handling nested <code>cudaq::adjoint</code> by @boschmitt in https://github.com/NVIDIA/cuda-quantum/pull/1217</li>
<li>Handle LLVM errors via C++ exceptions in the REST server implementation by @1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1263</li>
<li>Decode orca-url by @Omar-ORCA in https://github.com/NVIDIA/cuda-quantum/pull/1270</li>
<li>Refresh remote seeds for executions within a client session by @1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1318</li>
<li>Miscellaneous bug fixes for argument and return values by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1326</li>
</ul>
<h3>Breaking Changes </h3>
<ul>
<li>UCCSD API changes by @bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1386</li>
</ul>
<h3>Documentation Updates ✏️</h3>
<ul>
<li>Copy edits to the C++ examples on the website by @mmvandieren in https://github.com/NVIDIA/cuda-quantum/pull/951</li>
<li>Copy edits made to Advanced sections and Tutorials by @mmvandieren in https://github.com/NVIDIA/cuda-quantum/pull/964</li>
<li>Python example copy edits by @mmvandieren in https://github.com/NVIDIA/cuda-quantum/pull/947</li>
<li>Build and install guide update by @bettinaheim in https://github.com/NVIDIA/cuda-quantum/pull/1188</li>
<li>MPI related docs and commit update by @bettinaheim in https://github.com/NVIDIA/cuda-quantum/pull/1191</li>
<li>Build from source guide - Python wheels by @bettinaheim in https://github.com/NVIDIA/cuda-quantum/pull/1220</li>
</ul>
<h3>Other Changes</h3>
<ul>
<li>Change internal qubit ordering by @boschmitt in https://github.com/NVIDIA/cuda-quantum/pull/1082</li>
<li>Add support for CURL_CA_BUNDLE environment variable by @bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1213</li>
<li>Options for OQC Toshiko machine by @owen-oqc in https://github.com/NVIDIA/cuda-quantum/pull/1195</li>
<li>Optimize logger implementation by @bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1254</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li>@justinlietz made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/960</li>
</ul>
<p><strong>Full Changelog</strong>: https://github.com/NVIDIA/cuda-quantum/compare/0.6.0...0.7.0
Release created by workflow <a href="https://github.com/NVIDIA/cuda-quantum/actions/runs/8332091498">8332091498</a>.</p>If you use this software, please cite it as below
CUDA Quantum
<p><!-- Release notes generated using configuration in .github/release.yml at e0fb95f99b955acca530fcedeb3acd109d9d0183 --></p>
<p>The 0.6.0 release contains improved support for various HPC scenarios. We have added a <a href="https://nvidia.github.io/cuda-quantum/0.6.0/install.html#distributed-computing-with-mpi">plugin infrastructure</a> for connecting CUDA Quantum with an existing MPI installation, and we've added a <a href="https://nvidia.github.io/cuda-quantum/0.6.0/using/cudaq/platform.html#remote-mqpu-platform">new platform target</a> that distributes workloads across multiple virtual QPUs, each simulated by one or more GPUs.</p>
<p>Starting with 0.6.0, we are now also distributing <a href="https://nvidia.github.io/cuda-quantum/0.6.0/install.html#pre-built-binaries">pre-built binaries</a> for using CUDA Quantum with C++. The binaries are built against the <a href="https://www.gnu.org/software/libc/">GNU C library</a> version 2.28. We've added a detailed <a href="https://nvidia.github.io/cuda-quantum/0.6.0/data_center_install.html">Building from Source</a> guide to build these binaries for older <code>glibc</code> versions.</p>
<h2>What's Changed</h2>
<h3>Features and Enhancements </h3>
<ul>
<li>C++17 support by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/973</li>
<li>MPI support as plugins by @1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/966</li>
<li>Support for recursive vector arguments and other data types by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1051</li>
<li>Allow user to directly specify mapping topology file by @bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/1084</li>
<li>Pre-built binaries, installer, and building from source guide by @bettinaheim in https://github.com/NVIDIA/cuda-quantum/pull/1010</li>
<li>Introducing <code>remote-mqpu</code> REST Server-Client platform by @1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1012</li>
</ul>
<h3>Bug Fixes </h3>
<ul>
<li>Make C++ ASTBridge specification adherent for operation broadcasting by @amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/876</li>
<li>Fix missing ctrl-swap support by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/918</li>
<li>Fix WireType compliance issues with qubit-mapping pass by @bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/932</li>
<li>Reduce GPU memory usage when using reset(q) in user programs by @bmhowe23 in https://github.com/NVIDIA/cuda-quantum/pull/942</li>
<li>Fix for misleading CUDA not found message by @khalatepradnya in https://github.com/NVIDIA/cuda-quantum/pull/986</li>
<li>Fixes for <code>tensornet</code> backend not picking up MPI by @1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/974</li>
<li>Fix bug in sampling a kernel with mz-reset-mz pattern (overwriting sample_result register) by @amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/997</li>
<li>Fix ghost qubit bug #981 by @amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/998</li>
<li>Hide error message while checking for GPUs in Python workflow by @khalatepradnya in https://github.com/NVIDIA/cuda-quantum/pull/995</li>
<li>Fix density matrix qubit ordering bug by @anthony-santana in https://github.com/NVIDIA/cuda-quantum/pull/1033</li>
<li>Fix library mode qubit ordering bug. by @amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/1044</li>
<li>Patch density matrix bug in release mode by @anthony-santana in https://github.com/NVIDIA/cuda-quantum/pull/1053</li>
<li>Fix issue 1064: bug in bridge when lambda argument contains a loop. by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1069</li>
<li>Improve thread-safety of CUDAQ static variables by @1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1078</li>
<li>Chemistry related bug fixes by @amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/1099</li>
<li>Fix bug 1108 - race condition in sample_async by @amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/1114</li>
</ul>
<h3>Documentation Updates ✏️</h3>
<ul>
<li>Fixing typos and copy editing for docs by @mmvandieren in https://github.com/NVIDIA/cuda-quantum/pull/896</li>
<li>Add documentation and test for mixed language project by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1085</li>
<li>MPI plugin docs by @1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1095</li>
<li>Adding a section on updating CUDA Quantum to docs by @bettinaheim in https://github.com/NVIDIA/cuda-quantum/pull/1112</li>
</ul>
<h3>Other Changes</h3>
<ul>
<li>Add new pass, linear-ctrl-form by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/853</li>
<li>Add a MeasureType to Quake by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/869</li>
<li>Deprecate builder ctrl gates that are not specification compliant by @anthony-santana in https://github.com/NVIDIA/cuda-quantum/pull/935</li>
<li>Add ability to create shared library to the driver by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/985</li>
<li>Improved support for kernel return values by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1009</li>
<li>Deprecating qreg and qspan by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/983</li>
<li>Support for return vectors of type std::vector<NT> where NT is a numerical type by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1014</li>
<li>Ability to pass custom passes from <code>nvq++</code> by @1tnguyen in https://github.com/NVIDIA/cuda-quantum/pull/1034</li>
<li>Add support for vectors of vectors to the bridge. by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1036</li>
<li>Support controlled-SWAP's in kernel builder by @anthony-santana in https://github.com/NVIDIA/cuda-quantum/pull/924</li>
<li>Partial support for passing/return POD struct values. by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1054</li>
<li>Process initializer lists for struct types in the bridge. by @schweitzpgi in https://github.com/NVIDIA/cuda-quantum/pull/1068</li>
<li>Enable use of single-term spin_op with kernel_builder::exp_pauli by @amccaskey in https://github.com/NVIDIA/cuda-quantum/pull/1071</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li>@mmvandieren made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/896</li>
<li>@jjacobelli made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/832</li>
<li>@Yaraslaut made their first contribution in https://github.com/NVIDIA/cuda-quantum/pull/1038</li>
</ul>
<p><strong>Full Changelog</strong>: https://github.com/NVIDIA/cuda-quantum/compare/0.5.0...0.6.0</p>
<p>Release created by workflow <a href="https://github.com/NVIDIA/cuda-quantum/actions/runs/7702894514">7702894514</a>.<br/>GitHub commit <a href="https://github.com/NVIDIA/cuda-quantum/tree/e0fb95f99b955acca530fcedeb3acd109d9d0183">e0fb95f99b955acca530fcedeb3acd109d9d0183</a></p>If you use this software, please cite it as below
FASTCUDA: Open Source FPGA Accelerator &amp; Hardware-Software Codesign Toolset for CUDA Kernels
Using FPGAs as hardware accelerators that communicate with a central CPU is becoming a common practice in the embedded design world but there is no standard methodology and toolset to facilitate this path yet. On the other hand, languages such as CUDA and OpenCL provide standard development environments for Graphical Processing Unit (GPU) programming. FASTCUDA is a platform that provides the necessary software toolset, hardware architecture, and design methodology to efficiently adapt the CUDA approach into a new FPGA design flow. With FASTCUDA, the CUDA kernels of a CUDA-based application are partitioned into two groups with minimal user intervention: those that are compiled and executed in parallel software, and those that are synthesized and implemented in hardware. A modern low power FPGA can provide the processing power (via numerous embedded micro-CPUs) and the logic capacity for both the software and hardware implementations of the CUDA kernels. This paper describes the system requirements and the architectural decisions behind the FASTCUDA approach
GPU cards as a low cost solution for efficient and fast classification of high dimensional gene expression datasets
The days when bioinformatics tools will be so reliable to become a standard aid in routine clinical diagnostics are getting very close. However, it is important to remember that the more complex and advanced bioinformatics tools become, the more performances are required by the computing platforms. Unfortunately, the cost of High Performance Computing (HPC) platforms is still prohibitive for both public and private medical practices. Therefore, to promote and facilitate the use of bioinformatics tools it is important to identify low-cost parallel computing solutions. This paper presents a successful experience in using the parallel processing capabilities of Graphical Processing Units (GPU) to speed up classification of gene expression profiles. Results show that using open source CUDA programming libraries allows to obtain a significant increase in performances and therefore to shorten the gap between advanced bioinformatics tools and real medical practic
puzzlef/hello-cuda: A basic "Hello world" or "Hello CUDA" example to perform a number of operations on NVIDIA GPUs using CUDA
<p>A basic "Hello world" or "Hello CUDA" example to perform a number of operations on NVIDIA GPUs using <a href="https://docs.nvidia.com/cuda/index.html">CUDA</a>.</p>
<blockquote>
<p>You can just copy <code>main.sh</code> to your system and run it. <br>
For the code, refer to <code>main.cu</code>.</p>
</blockquote>
<p><br></p>
<pre><code class="language-bash">$ bash main.sh
# Cloning into 'hello-cuda'...
# remote: Enumerating objects: 33, done.
# remote: Counting objects: 100% (12/12), done.
# remote: Compressing objects: 100% (11/11), done.
# remote: Total 33 (delta 2), reused 6 (delta 1), pack-reused 21
# Receiving objects: 100% (33/33), 24.58 KiB | 719.00 KiB/s, done.
# Resolving deltas: 100% (9/9), done.
# HELLO WORLD:
# GPU[B1.T0]: Hello CUDA
# GPU[B1.T1]: Hello CUDA
# GPU[B1.T2]: Hello CUDA
# GPU[B1.T3]: Hello CUDA
# GPU[B1.T4]: Hello CUDA
# GPU[B1.T5]: Hello CUDA
# GPU[B1.T6]: Hello CUDA
# GPU[B1.T7]: Hello CUDA
# GPU[B3.T0]: Hello CUDA
# GPU[B3.T1]: Hello CUDA
# GPU[B3.T2]: Hello CUDA
# GPU[B3.T3]: Hello CUDA
# GPU[B3.T4]: Hello CUDA
# GPU[B3.T5]: Hello CUDA
# GPU[B3.T6]: Hello CUDA
# GPU[B3.T7]: Hello CUDA
# GPU[B2.T0]: Hello CUDA
# GPU[B2.T1]: Hello CUDA
# GPU[B2.T2]: Hello CUDA
# GPU[B2.T3]: Hello CUDA
# GPU[B2.T4]: Hello CUDA
# GPU[B2.T5]: Hello CUDA
# GPU[B2.T6]: Hello CUDA
# GPU[B2.T7]: Hello CUDA
# GPU[B0.T0]: Hello CUDA
# GPU[B0.T1]: Hello CUDA
# GPU[B0.T2]: Hello CUDA
# GPU[B0.T3]: Hello CUDA
# GPU[B0.T4]: Hello CUDA
# GPU[B0.T5]: Hello CUDA
# GPU[B0.T6]: Hello CUDA
# GPU[B0.T7]: Hello CUDA
# CPU: Hello world!
# DEVICE PROPERTIES:
# COMPUTE DEVICE 0:
# Name: Tesla V100-PCIE-16GB
# Compute capability: 7.0
# Multiprocessors: 80
# Clock rate: 1380 MHz
# Global memory: 16151 MB
# Constant memory: 64 KB
# Shared memory per block: 48 KB
# Registers per block: 65536
# Threads per block: 1024 (max)
# Threads per warp: 32
# Block dimension: 1024x1024x64 (max)
# Grid dimension: 2147483647x65535x65535 (max)
# Device copy overlap: yes
# Kernel execution timeout: no
# CHOOSE DEVICE:
# Current CUDA device: 0
# CUDA device with atleast compute capability 1.3: 0
# Cards that have compute capability 1.3 or higher
# support double-precision floating-point math.
# MALLOC PERFORMANCE:
# Host malloc (1 GB): 0.00 ms
# CUDA malloc (1 GB): 1.35 ms
# Host free (1 GB): 0.00 ms
# CUDA free (1 GB): 1.51 ms
# MEMCPY PERFORMANCE:
# Host to host (1 GB): 412.59 ms
# Host to device (1 GB): 225.32 ms
# Device to host (1 GB): 246.87 ms
# Device to device (1 GB): 0.04 ms
# ADDITION:
# a = 1, b = 2
# a + b = 3 (GPU)
# VECTOR ADDITION:
# x = vector of size 1 GB
# y = vector of size 1 GB
# Vector addition on host (a = x + y): 438.02 ms
# Vector addition on device <<<32768, 32>>> (a = x + y): 4.33 ms
# Vector addition on device <<<16384, 64>>> (a = x + y): 3.98 ms
# Vector addition on device <<<8192, 128>>> (a = x + y): 4.01 ms
# Vector addition on device <<<4096, 256>>> (a = x + y): 3.97 ms
# Vector addition on device <<<2048, 512>>> (a = x + y): 4.00 ms
# Vector addition on device <<<1024, 1024>>> (a = x + y): 3.97 ms
# DOT PRODUCT:
# x = vector of size 1 GB
# y = vector of size 1 GB
# Dot product on host (a = x . y): 207.39 ms [2.154769e+05]
# Dot product on device (a = x . y): 2.69 ms [2.154769e+05] (memcpy approach)
# Dot product on device (a = x . y): 2.50 ms [2.154769e+05] (inplace approach)
# Dot product on device (a = x . y): 2.50 ms [2.154769e+05] (atomic-add approach)
# HISTOGRAM:
# buf = vector of size 1 GB
# Finding histogram of buf on host: 747.00 ms
# Finding histogram of buf on device (basic approach): 401.06 ms
# Finding histogram of buf on device (shared approach): 6.85 ms
# MATRIX MULTIPLICATION:
# x = matrix of size 16 MB
# y = matrix of size 16 MB
# Matrix multiplication on host (a = x * y): 33307.13 ms [3.287916e+00]
# Matrix multiplication on device (a = x * y): 18.93 ms (basic approach) [3.287916e+00]
# Matrix multiplication on device (a = x * y): 12.20 ms (tiled approach) [3.287916e+00]
</code></pre>
<p><br>
<br></p>
<h2>References</h2>
<ul>
<li><a href="https://nvlabs.github.io/cub/">CUB Documentation</a></li>
<li><a href="https://github.com/moderngpu/moderngpu">moderngpu/moderngpu: Patterns and behaviors for GPU computing</a></li>
<li><a href="https://developer.nvidia.com/blog/faster-parallel-reductions-kepler/">Faster Parallel Reductions on Kepler</a></li>
<li><a href="https://stackoverflow.com/a/37569519/1413259">CUDA atomicAdd for doubles definition error</a></li>
<li><a href="https://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html">CUDA C++ Programming Guide</a></li>
<li><a href="https://docs.nvidia.com/cuda/index.html">CUDA Toolkit Documentation</a></li>
</ul>
<p><br>
<br></p>
<p><a href="https://www.youtube.com/watch?v=8sDg-lD1fZQ"></a><br>
<a href="https://puzzlef.github.io"></a></p>
Binaural Simulations Using Audio Rate FDTD Schemes and CUDA
Three dimensional finite difference time domain schemes can be used as an approach to spatial audio simulation. By embedding a model of the human head in a 3D computational space, such simulations can emulate binaural sound localisation. This approach normally relies on using high sample rates to give finely detailed models, and is computationally intensive.This paper examines the use of head models within audio rate FDTD schemes, ranging from 176.4 down to 44.1 kHz. Using GPU computing with Nvidia’s CUDA architecture, simulations can be accelerated many times over a serial computation in C. This allows efficient, dynamic simulations to be produced where sounds can be moved around during the runtime. Sound examples have been generated by placing a personalised head model inside an anechoic cube. At the lowest sample rate, 44.1 kHz, localisation is clear in the horizontal plane but much less so in the other dimensions. At 176.4, there is far greater three dimensional depth, with perceptible front to back, and some vertical movement
Analysis and design of massively parallel channel estimation algorithms on graphic cards
The necessity of accurate channel estimation for coherent multiuser detectors is well known. Indeed they are based on the assumption that signals are perfectly estimated, and this is never completely achieved in practice. Furthermore, practical transmitters and receivers are affected by many non-idealities like strong phase noise, and thus the task of channel estimation is all the more challenging. Another notorious issue is the high computational complexity of multiuser techniques. This project has devoted significant attention for massively parallel receiver architectures and the possibility to parallelize channel estimation algorithms. Nvidia CUDA graphic cards are especially well-suited to address problems that can be expressed as data parallel computations. This task is very challenging and ambitious, since the usage of such cards for receiver design is still at its infant stage.
This thesis describes the work carried out at German Aerospace Center (DLR) where a real-world multiuser detector is studied. The desired goals were the following: fine tuning of the already existing channel estimation algorithm; exploration of the factor graph approach in order to improve the estimation quality and to develop algorithms suitable to be parallelized; parallel implementation of the algorithms on CUDA graphic card.
All these points have been covered. Two different improvements for the already implemented phase estimator are proposed. Both are based on the same approximation of the Wiener-Levy phase model and assume the same knowledge at the receiver.
By adopting the factor graph approach, we present two existing algorithms for the phase estimation in a new parallel fashion and we show that, at the same time, they improve the estimation quality, and they are suitable to be parallelized on the board.
The performance improvement for all estimators proposed in terms of Mean Square Error are validated through several simulation campaigns carried out in different scenarios, most of them characterized by strong phase noise and low signal-to-noise ratios. Finally we present several parallel phase estimation algorithms working on CUDA graphic card and we show that, in some cases, we are in presence of a massive parallelization in which is achieved a speedup more than 200 times compared to the serial implementation. The results obtained represent a starting point for the implementation of a Parallel Iterative Receiver to be inserted in the existing multiuser detector and completely executed on CUDA graphic car
puzzlef/sum-sequential-vs-cuda: Performance of sequential vs CUDA-based vector element sum
Performance of sequential vs CUDA-based vector element sum.
This experiment was for comparing the performance between:
Find sum(x) using a single thread (sequential).
Find sum(x) accelerated using CUDA (not power-of-2 reduce).
Find sum(x) accelerated using CUDA (power-of-2 reduce).
Here x is a 32-bit integer vector. Both approaches were attempted on a number of vector sizes, running each approach 5 times per size to get a good time measure. Note that time taken to copy data back and forth from the GPU is not measured, and the sequential approach does not make use of SIMD instructions. While it might seem that CUDA approach would be a clear winner, the results indicate it is dependent upon the workload. Results indicate that from 10^5 elements, CUDA approach performs better than sequential. Both CUDA approaches (not power-of-2/power-of-2 reduce) seem to have similar performance.
All outputs are saved in a gist and a small part of the output is listed here. Some charts are also included below, generated from sheets. This experiment was done with guidance from Prof. Kishore Kothapalli and Prof. Dip Sankar Banerjee.
./a.out
# [00000.002 ms; 1e+03 elems.] [502942114] sumSeq
# [00001.128 ms; 1e+03 elems.] [502942114] sumCuda
# [00000.018 ms; 1e+03 elems.] [502942114] sumCudaPow2
# ...
References
CUDA by Example :: Jason Sanders, Edward Kandrot
Managed memory vs cudaHostAlloc - TK1
How to enable C++17 code generation in VS2019 CUDA project
"More than one operator + matches these operands" error
How to import VSCode keybindings into Visual Studio?
Explicit conversion constructors (C++ only)
Configure X11 Forwarding with PuTTY and Xming
code-server setup and configuration
Installing snap on CentOS
<br
puzzlef/max-sequential-vs-cuda: Performance of sequential vs CUDA-based vector element max
Performance of sequential vs CUDA-based vector element max.
This experiment was for comparing the performance between:
Find max(x) using a single thread (sequential).
Find max(x) accelerated using CUDA (not power-of-2 reduce).
Find max(x) accelerated using CUDA (power-of-2 reduce).
Here x is a 32-bit integer vector. Both approaches were attempted on a number of vector sizes, running each approach 5 times per size to get a good time measure. Note that time taken to copy data back and forth from the GPU is not measured, and the sequential approach does not make use of SIMD instructions. While it might seem that CUDA approach would be a clear winner, the results indicate it is dependent upon the workload. Results indicate that from 10^5 elements, CUDA approach performs better than sequential. Both CUDA approaches (not power-of-2/power-of-2 reduce) seem to have similar performance.
All outputs are saved in a gist and a small part of the output is listed here. Some charts are also included below, generated from sheets. This experiment was done with guidance from Prof. Kishore Kothapalli and Prof. Dip Sankar Banerjee.
./a.out
# [00000.001 ms; 1e+03 elems.] [999802] maxSeq
# [00000.543 ms; 1e+03 elems.] [999802] maxCuda
# [00000.018 ms; 1e+03 elems.] [999802] maxCudaPow2
# ...
References
CUDA by Example :: Jason Sanders, Edward Kandrot
Managed memory vs cudaHostAlloc - TK1
How to enable C++17 code generation in VS2019 CUDA project
"More than one operator + matches these operands" error
How to import VSCode keybindings into Visual Studio?
Explicit conversion constructors (C++ only)
Configure X11 Forwarding with PuTTY and Xming
code-server setup and configuration
Installing snap on CentOS
<br
- …
