File: gbtest28.m

package info (click to toggle)
suitesparse-graphblas 7.4.0%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 67,112 kB
  • sloc: ansic: 1,072,243; cpp: 8,081; sh: 512; makefile: 506; asm: 369; python: 125; awk: 10
file content (101 lines) | stat: -rw-r--r-- 2,381 bytes parent folder | download | duplicates (2)
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
function gbtest28
%GBTEST28 test GrB.build

% SuiteSparse:GraphBLAS, Timothy A. Davis, (c) 2017-2022, All Rights Reserved.
% SPDX-License-Identifier: Apache-2.0

fprintf ('\ngbtest28: testing GrB.build and compare with A=sparse(i,j,x)\n') ;
nthreads = GrB.threads ;
fprintf ('using %d threads in GraphBLAS\n', nthreads) ;

rng ('default') ;
m = 10 ;
n = 5 ;
A = sprand (m, n, 0.5) ;

[i, j, x] = find (A) ;

C = GrB.build (i, j, x, m, n) ;

assert (gbtest_eq (C, A)) ;

fprintf ('\nGenerating large test matrix; please wait ...\n') ;
n = 1000 ;
nz = 7000 ;
density = nz / n^2 ;
tic
A = sprand (n, n, density) ;
B = sprand (n, n, density) ;
A = kron (A,B) ;
clear B
t = toc ;
n = size (A, 1) ;
fprintf ('%12.4f sec : A n-by-n, with n: %g nnz: %g\n', t, n, nnz (A)) ;

[i, j, x] = find (A) ;
[m, n] = size (A) ;

i0 = uint64 (i) - 1 ;
j0 = uint64 (j) - 1 ;

d.kind = 'sparse' ;
desc0.base = 'zero-based' ;

fprintf ('\nwith [I J] already sorted on input:\n') ;

tic
A1 = sparse (i, j, x, m, n) ;
t = toc ;
fprintf ('%12.4f sec : A = sparse (i, j, x, m, n) ;\n', t) ;

tic
A3 = GrB.build (i, j, x, m, n) ;
t = toc ;
fprintf ('%12.4f sec : A = GrB.build (...), same inputs as built-in\n', t) ;
assert (gbtest_eq (A1, A3)) ;

tic
A4 = GrB.build (i, j, x, m, n, d) ;
t = toc ;
fprintf ('%12.4f sec : A = GrB.build (...), same inputs/outputs as built-in\n',t);
assert (gbtest_eq (A1, A4)) ;

tic
A2 = GrB.build (i0, j0, x, m, n, desc0) ;
t = toc ;
fprintf ('%12.4f sec : A = GrB.build (i0, j0, ...), with i0 and j0 uint64\n',t);
assert (gbtest_eq (A1, A2)) ;

fprintf ('\nwith [I J] reversed/jumbled so that a sort is required:\n') ;
i = i (end:-1:1) ;
j = j (end:-1:1) ;
i (1:10) = i (randperm (10)) ;

i0 = uint64 (i) - 1 ;
j0 = uint64 (j) - 1 ;

tic
A1 = sparse (i, j, x, m, n) ;
t = toc ;
fprintf ('%12.4f sec : A = sparse (i, j, x, m, n) ;\n', t) ;

tic
A3 = GrB.build (i, j, x, m, n) ;
t = toc ;
fprintf ('%12.4f sec : A = GrB.build (...), same inputs as built-in\n', t) ;
assert (gbtest_eq (A1, A3)) ;

tic
A4 = GrB.build (i, j, x, m, n, d) ;
t = toc ;
fprintf ('%12.4f sec : A = GrB.build (...), same inputs/outputs as built-in\n',t);
assert (gbtest_eq (A1, A4)) ;

tic
A2 = GrB.build (i0, j0, x, m, n, desc0) ;
t = toc ;
fprintf ('%12.4f sec : A = GrB.build (i0,j0,...), with i0 and j0 uint64\n', t) ;
assert (gbtest_eq (A1, A2)) ;

fprintf ('\ngbtest28: all tests passed\n') ;