Skip to content

Commit

Permalink
build based on 159dd11
Browse files Browse the repository at this point in the history
  • Loading branch information
Documenter.jl committed Mar 11, 2024
1 parent 54c1b86 commit 25ffd7b
Show file tree
Hide file tree
Showing 4 changed files with 51 additions and 13 deletions.
2 changes: 1 addition & 1 deletion dev/.documenter-siteinfo.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{"documenter":{"julia_version":"1.10.2","generation_timestamp":"2024-03-07T04:56:51","documenter_version":"1.3.0"}}
{"documenter":{"julia_version":"1.10.2","generation_timestamp":"2024-03-11T03:54:17","documenter_version":"1.3.0"}}
48 changes: 43 additions & 5 deletions dev/generic/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,25 @@
x_gpu = F \ b_gpu

r_gpu = b_gpu - A_gpu * x_gpu
norm(r_gpu)

# In-place LU
d_gpu = rand(T, n) |> CuVector
B_gpu = A_gpu + Diagonal(d_gpu)
lu!(F, B_gpu)

c_cpu = rand(T, n)
c_gpu = CuVector(c_cpu)
ldiv!(x_gpu, F, c_gpu)

r_gpu = c_gpu - B_gpu * x_gpu
norm(r_gpu)</code></pre><h2 id="Example-2:-Sparse-symmetric-linear-system-with-multiple-right-hand-sides"><a class="docs-heading-anchor" href="#Example-2:-Sparse-symmetric-linear-system-with-multiple-right-hand-sides">Example 2: Sparse symmetric linear system with multiple right-hand sides</a><a id="Example-2:-Sparse-symmetric-linear-system-with-multiple-right-hand-sides-1"></a><a class="docs-heading-anchor-permalink" href="#Example-2:-Sparse-symmetric-linear-system-with-multiple-right-hand-sides" title="Permalink"></a></h2><pre><code class="language-julia hljs">using CUDA, CUDA.CUSPARSE
using CUDSS
using LinearAlgebra
using SparseArrays

T = Float64
R = real(T)
n = 100
p = 5
A_cpu = sprand(T, n, n, 0.05) + I
Expand All @@ -33,16 +46,29 @@
X_gpu = similar(B_gpu)

F = ldlt(A_gpu, view=&#39;L&#39;)
ldiv!(X_gpu, F, B_gpu)
X_gpu = F \ B_gpu

R_gpu = B_gpu - CuSparseMatrixCSR(A_cpu) * X_gpu
norm(R_gpu)</code></pre><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>If we only store one triangle of <code>A_gpu</code>, we can also use the wrappers <code>Symmetric</code> and <code>Hermitian</code>. For real matrices, both wrappers are allowed but only <code>Hermitian</code> can be used for complex matrices.</p></div></div><pre><code class="language-julia hljs">S_gpu = Symmetric(A_gpu, :L)
norm(R_gpu)

# In-place LDLᵀ
d_gpu = rand(R, n) |&gt; CuVector
B_gpu = A_gpu + Diagonal(d_gpu)
ldlt!(F, B_gpu)

C_cpu = rand(T, n, p)
C_gpu = CuMatrix(C_cpu)
ldiv!(X_gpu, F, C_gpu)

R_gpu = C_gpu - ( CuSparseMatrixCSR(A_cpu) + Diagonal(d_gpu) ) * X_gpu
norm(R_gpu)</code></pre><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>If we only store one triangle of <code>A_gpu</code>, we can also use the wrappers <code>Symmetric</code> and <code>Hermitian</code> instead of using the keyword argument <code>view</code> in <code>ldlt</code>. For real matrices, both wrappers are allowed but only <code>Hermitian</code> can be used for complex matrices.</p></div></div><pre><code class="language-julia hljs">S_gpu = Symmetric(A_gpu, :L)
F = ldlt(S_gpu)</code></pre><h2 id="Example-3:-Sparse-hermitian-positive-definite-linear-system-with-multiple-right-hand-sides"><a class="docs-heading-anchor" href="#Example-3:-Sparse-hermitian-positive-definite-linear-system-with-multiple-right-hand-sides">Example 3: Sparse hermitian positive definite linear system with multiple right-hand sides</a><a id="Example-3:-Sparse-hermitian-positive-definite-linear-system-with-multiple-right-hand-sides-1"></a><a class="docs-heading-anchor-permalink" href="#Example-3:-Sparse-hermitian-positive-definite-linear-system-with-multiple-right-hand-sides" title="Permalink"></a></h2><pre><code class="language-julia hljs">using CUDA, CUDA.CUSPARSE
using CUDSS
using LinearAlgebra
using SparseArrays

T = ComplexF64
R = real(T)
n = 100
p = 5
A_cpu = sprand(T, n, n, 0.01)
Expand All @@ -54,8 +80,20 @@
X_gpu = similar(B_gpu)

F = cholesky(A_gpu, view=&#39;U&#39;)
ldiv!(X_gpu, F, B_gpu)
X_gpu = F \ B_gpu

R_gpu = B_gpu - CuSparseMatrixCSR(A_cpu) * X_gpu
norm(R_gpu)</code></pre><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>If we only store one triangle of <code>A_gpu</code>, we can also use the wrappers <code>Symmetric</code> and <code>Hermitian</code>. For real matrices, both wrappers are allowed but only <code>Hermitian</code> can be used for complex matrices.</p></div></div><pre><code class="language-julia hljs">H_gpu = Hermitian(A_gpu, :U)
F = cholesky(H_gpu)</code></pre></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« Home</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.3.0 on <span class="colophon-date" title="Thursday 7 March 2024 04:56">Thursday 7 March 2024</span>. Using Julia version 1.10.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
norm(R_gpu)

# In-place LLᴴ
d_gpu = rand(R, n) |&gt; CuVector
B_gpu = A_gpu + Diagonal(d_gpu)
cholesky!(F, B_gpu)

C_cpu = rand(T, n, p)
C_gpu = CuMatrix(C_cpu)
ldiv!(X_gpu, F, C_gpu)

R_gpu = C_gpu - ( CuSparseMatrixCSR(A_cpu) + Diagonal(d_gpu) ) * X_gpu
norm(R_gpu)</code></pre><div class="admonition is-info"><header class="admonition-header">Note</header><div class="admonition-body"><p>If we only store one triangle of <code>A_gpu</code>, we can also use the wrappers <code>Symmetric</code> and <code>Hermitian</code> instead of using the keyword argument <code>view</code> in <code>cholesky</code>. For real matrices, both wrappers are allowed but only <code>Hermitian</code> can be used for complex matrices.</p></div></div><pre><code class="language-julia hljs">H_gpu = Hermitian(A_gpu, :U)
F = cholesky(H_gpu)</code></pre></article><nav class="docs-footer"><a class="docs-footer-prevpage" href="../">« Home</a><div class="flexbox-break"></div><p class="footer-message">Powered by <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> and the <a href="https://julialang.org/">Julia Programming Language</a>.</p></nav></div><div class="modal" id="documenter-settings"><div class="modal-background"></div><div class="modal-card"><header class="modal-card-head"><p class="modal-card-title">Settings</p><button class="delete"></button></header><section class="modal-card-body"><p><label class="label">Theme</label><div class="select"><select id="documenter-themepicker"><option value="auto">Automatic (OS)</option><option value="documenter-light">documenter-light</option><option value="documenter-dark">documenter-dark</option></select></div></p><hr/><p>This document was generated with <a href="https://github.com/JuliaDocs/Documenter.jl">Documenter.jl</a> version 1.3.0 on <span class="colophon-date" title="Monday 11 March 2024 03:54">Monday 11 March 2024</span>. Using Julia version 1.10.2.</p></section><footer class="modal-card-foot"></footer></div></div></div></body></html>
Loading

0 comments on commit 25ffd7b

Please sign in to comment.