Skip to content

Commit c440185

Browse files
author
Will Kimmerer
authored
Tpose (#67)
* comment out, add tpose * fix tpose
1 parent 277e840 commit c440185

File tree

1 file changed

+110
-83
lines changed

1 file changed

+110
-83
lines changed

benchmarks/benchmarks2.jl

Lines changed: 110 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -73,9 +73,11 @@ end
7373

7474
function tpose(A::SuiteSparseGraphBLAS.GBArray)
7575
Ao = storageorder(A) == ColMajor() ? "C" : "R"
76-
Bo = storageorder(B) == ColMajor() ? "C" : "R"
77-
printstyled(stdout, "\nC::GBArray = transpose(A::GBArray($Ao, $(size(A))))\n")
78-
result = @gbbench copy(transpose(A))
76+
C = similar(A)
77+
gbset(C, :format, storageorder(A) === ColMajor() ? SuiteSparseGraphBLAS.BYCOL : SuiteSparseGraphBLAS.BYROW)
78+
Co = storageorder(A) == ColMajor() ? "C" : "R"
79+
printstyled(stdout, "\nC::GBArray($(Co)) = transpose(A::GBArray($Ao, $(size(A))))\n")
80+
result = @gbbench SuiteSparseGraphBLAS.gbtranspose!(C, A)
7981
println(stdout, result, "s")
8082
GC.gc()
8183
flush(stdout)
@@ -91,7 +93,14 @@ function tpose(A::SparseMatrixCSC)
9193
return result
9294
end
9395

94-
function spdbench(A)
96+
function runthreadedt(A, B; accumdenseoutput=false)
97+
v = []
98+
for t threadlist
99+
printstyled(stdout, "\nRunning GraphBLAS with $t threads\n"; bold=true)
100+
gbset(:nthreads, t)
101+
push!(v, tpose(A))
102+
end
103+
return v
95104
end
96105

97106
function singlebench(pathornum)
@@ -113,98 +122,116 @@ function singlebench(pathornum)
113122
printstyled(stdout, "\n#################################################################################\n"; bold=true, color=:green)
114123
printstyled(stdout, "Benchmarking $name:\n"; bold=true, color=:green)
115124
printstyled(stdout, "#################################################################################\n"; bold=true, color=:green)
116-
printstyled(stdout, "\nSparse * Vec\n"; bold=true)
125+
126+
# printstyled(stdout, "\nSparse * Vec\n"; bold=true)
127+
# println(stdout, "################################")
128+
# flush(stdout)
129+
# B = rand(eltype(A), size(A, 2))
130+
# B = GBVector(B)
131+
#
132+
# gbresultsR = runthreaded(A, B; accumdenseoutput=true)
133+
# gbset(A, :format, SuiteSparseGraphBLAS.BYCOL)
134+
# diag(A)
135+
# gbresultsC = runthreaded(A, B; accumdenseoutput=true)
136+
# SAresults = mxm(SparseMatrixCSC(A), Vector(B))
137+
# printstyled(stdout, "\nRESULTS, Sparse * DenseVec: \n"; bold=true, color=:green)
138+
# println(stdout, "################################")
139+
# println(stdout, "A by row (1, 2, 16 thread): $gbresultsR")
140+
# println(stdout, "A by col (1, 2, 16 thread): $gbresultsC")
141+
# println(stdout, "SparseArrays: $SAresults")
142+
# flush(stdout)
143+
#
144+
# printstyled(stdout, "\nSparse * (n x 2)\n"; bold=true)
145+
# println(stdout, "################################")
146+
# flush(stdout)
147+
# B = GBMatrix(rand(eltype(A), size(A, 2), 2))
148+
# gbset(A, :format, SuiteSparseGraphBLAS.BYROW)
149+
# diag(A)
150+
# gbresultsR = runthreaded(A, B; accumdenseoutput=true)
151+
# gbset(A, :format, SuiteSparseGraphBLAS.BYCOL)
152+
# diag(A)
153+
# gbresultsC = runthreaded(A, B; accumdenseoutput=true)
154+
# SAresults = mxm(SparseMatrixCSC(A), Matrix(B))
155+
# printstyled(stdout, "\nRESULTS, Sparse * n x 2 Dense: \n"; bold=true, color=:green)
156+
# println(stdout, "################################")
157+
# println(stdout, "A by row (1, 2, 16 thread): $gbresultsR")
158+
# println(stdout, "A by col (1, 2, 16 thread): $gbresultsC")
159+
# println(stdout, "SparseArrays: $SAresults")
160+
# flush(stdout)
161+
#
162+
# printstyled(stdout, "\nSparse * (n x 32)\n"; bold=true)
163+
# println(stdout, "################################")
164+
# flush(stdout)
165+
# B = GBMatrix(rand(eltype(A), size(A, 2), 32))
166+
# gbset(A, :format, SuiteSparseGraphBLAS.BYROW)
167+
# diag(A)
168+
# gbresultsR = runthreaded(A, B; accumdenseoutput=true)
169+
# gbset(A, :format, SuiteSparseGraphBLAS.BYCOL)
170+
# diag(A)
171+
# gbresultsC = runthreaded(A, B; accumdenseoutput=true)
172+
# SAresults = mxm(SparseMatrixCSC(A), Matrix(B))
173+
# printstyled(stdout, "\nRESULTS, Sparse * n x 32 Dense: \n"; bold=true, color=:green)
174+
# println(stdout, "################################")
175+
# println(stdout, "A by row (1, 2, 16 thread): $gbresultsR")
176+
# println(stdout, "A by col (1, 2, 16 thread): $gbresultsC")
177+
# println(stdout, "SparseArrays: $SAresults")
178+
# flush(stdout)
179+
#
180+
# printstyled(stdout, "\nSparse * Sparse'"; bold=true)
181+
# println(stdout, "################################")
182+
# flush(stdout)
183+
# gbset(A, :format, SuiteSparseGraphBLAS.BYROW)
184+
# diag(A)
185+
# gbresultsR = runthreaded(A, transpose(A))
186+
# gbset(A, :format, SuiteSparseGraphBLAS.BYCOL)
187+
# diag(A)
188+
# gbresultsC = runthreaded(A, transpose(A))
189+
# A2 = SparseMatrixCSC(A)
190+
# SAresults = mxm(A2, transpose(A2))
191+
# println(stdout, )
192+
# printstyled(stdout, "\nRESULTS, Sparse * Sparse: \n"; bold=true, color=:green)
193+
# println(stdout, "################################")
194+
# println(stdout, "A by row (1, 2, 16 thread): $gbresultsR")
195+
# println(stdout, "A by col (1, 2, 16 thread): $gbresultsC")
196+
# println(stdout, "SparseArrays: $SAresults")
197+
# flush(stdout)
198+
#
199+
# printstyled(stdout, "\nSparse * Sparse'"; bold=true)
200+
# println(stdout, "################################")
201+
# flush(stdout)
202+
# gbset(A, :format, SuiteSparseGraphBLAS.BYROW)
203+
# diag(A)
204+
# gbresultsR = runthreaded(A, transpose(A))
205+
# gbset(A, :format, SuiteSparseGraphBLAS.BYCOL)
206+
# diag(A)
207+
# gbresultsC = runthreaded(A, transpose(A))
208+
# A2 = SparseMatrixCSC(A)
209+
# SAresults = mxm(A2, transpose(A2))
210+
# println(stdout, )
211+
# printstyled(stdout, "\nRESULTS, Sparse * Sparse: \n"; bold=true, color=:green)
212+
# println(stdout, "################################")
213+
# println(stdout, "A by row (1, 2, 16 thread): $gbresultsR")
214+
# println(stdout, "A by col (1, 2, 16 thread): $gbresultsC")
215+
# println(stdout, "SparseArrays: $SAresults")
216+
# flush(stdout)
217+
printstyled(stdout, "\nC = copy(transpose(A))"; bold=true)
117218
println(stdout, "################################")
118219
flush(stdout)
119-
B = rand(eltype(A), size(A, 2))
120-
B = GBVector(B)
121-
122-
gbresultsR = runthreaded(A, B; accumdenseoutput=true)
123-
gbset(A, :format, SuiteSparseGraphBLAS.BYCOL)
124-
diag(A)
125-
gbresultsC = runthreaded(A, B; accumdenseoutput=true)
126-
SAresults = mxm(SparseMatrixCSC(A), Vector(B))
127-
printstyled(stdout, "\nRESULTS, Sparse * DenseVec: \n"; bold=true, color=:green)
128-
println(stdout, "################################")
129-
println(stdout, "A by row (1, 2, 16 thread): $gbresultsR")
130-
println(stdout, "A by col (1, 2, 16 thread): $gbresultsC")
131-
println(stdout, "SparseArrays: $SAresults")
132-
flush(stdout)
133-
134-
printstyled(stdout, "\nSparse * (n x 2)\n"; bold=true)
135-
println(stdout, "################################")
136-
flush(stdout)
137-
B = GBMatrix(rand(eltype(A), size(A, 2), 2))
138220
gbset(A, :format, SuiteSparseGraphBLAS.BYROW)
139221
diag(A)
140-
gbresultsR = runthreaded(A, B; accumdenseoutput=true)
222+
gbresultsR = runthreadedt(A, transpose(A))
141223
gbset(A, :format, SuiteSparseGraphBLAS.BYCOL)
142224
diag(A)
143-
gbresultsC = runthreaded(A, B; accumdenseoutput=true)
144-
SAresults = mxm(SparseMatrixCSC(A), Matrix(B))
145-
printstyled(stdout, "\nRESULTS, Sparse * n x 2 Dense: \n"; bold=true, color=:green)
146-
println(stdout, "################################")
147-
println(stdout, "A by row (1, 2, 16 thread): $gbresultsR")
148-
println(stdout, "A by col (1, 2, 16 thread): $gbresultsC")
149-
println(stdout, "SparseArrays: $SAresults")
150-
flush(stdout)
151-
152-
printstyled(stdout, "\nSparse * (n x 32)\n"; bold=true)
153-
println(stdout, "################################")
154-
flush(stdout)
155-
B = GBMatrix(rand(eltype(A), size(A, 2), 32))
156-
gbset(A, :format, SuiteSparseGraphBLAS.BYROW)
157-
diag(A)
158-
gbresultsR = runthreaded(A, B; accumdenseoutput=true)
159-
gbset(A, :format, SuiteSparseGraphBLAS.BYCOL)
160-
diag(A)
161-
gbresultsC = runthreaded(A, B; accumdenseoutput=true)
162-
SAresults = mxm(SparseMatrixCSC(A), Matrix(B))
163-
printstyled(stdout, "\nRESULTS, Sparse * n x 32 Dense: \n"; bold=true, color=:green)
164-
println(stdout, "################################")
165-
println(stdout, "A by row (1, 2, 16 thread): $gbresultsR")
166-
println(stdout, "A by col (1, 2, 16 thread): $gbresultsC")
167-
println(stdout, "SparseArrays: $SAresults")
168-
flush(stdout)
169-
170-
printstyled(stdout, "\nSparse * Sparse'"; bold=true)
171-
println(stdout, "################################")
172-
flush(stdout)
173-
gbset(A, :format, SuiteSparseGraphBLAS.BYROW)
174-
diag(A)
175-
gbresultsR = runthreaded(A, transpose(A))
176-
gbset(A, :format, SuiteSparseGraphBLAS.BYCOL)
177-
diag(A)
178-
gbresultsC = runthreaded(A, transpose(A))
179-
A2 = SparseMatrixCSC(A)
180-
SAresults = mxm(A2, transpose(A2))
181-
println(stdout, )
182-
printstyled(stdout, "\nRESULTS, Sparse * Sparse: \n"; bold=true, color=:green)
183-
println(stdout, "################################")
184-
println(stdout, "A by row (1, 2, 16 thread): $gbresultsR")
185-
println(stdout, "A by col (1, 2, 16 thread): $gbresultsC")
186-
println(stdout, "SparseArrays: $SAresults")
187-
flush(stdout)
188-
189-
printstyled(stdout, "\nSparse * Sparse'"; bold=true)
190-
println(stdout, "################################")
191-
flush(stdout)
192-
gbset(A, :format, SuiteSparseGraphBLAS.BYROW)
193-
diag(A)
194-
gbresultsR = runthreaded(A, transpose(A))
195-
gbset(A, :format, SuiteSparseGraphBLAS.BYCOL)
196-
diag(A)
197-
gbresultsC = runthreaded(A, transpose(A))
225+
gbresultsC = runthreadedt(A, transpose(A))
198226
A2 = SparseMatrixCSC(A)
199-
SAresults = mxm(A2, transpose(A2))
227+
SAresults = tpose(A2)
200228
println(stdout, )
201-
printstyled(stdout, "\nRESULTS, Sparse * Sparse: \n"; bold=true, color=:green)
229+
printstyled(stdout, "\nRESULTS, C = copy(transpose(A)): \n"; bold=true, color=:green)
202230
println(stdout, "################################")
203231
println(stdout, "A by row (1, 2, 16 thread): $gbresultsR")
204232
println(stdout, "A by col (1, 2, 16 thread): $gbresultsC")
205233
println(stdout, "SparseArrays: $SAresults")
206234
flush(stdout)
207-
208235
return nothing
209236
end
210237

0 commit comments

Comments
 (0)