clear all
maxNumCompThreads ('automatic') ;
GrB.clear ;
gbdemo2
GBDEMO2 Extreme performance differences: GraphBLAS vs MATLAB.
Usage:
gbdemo2 % uses a default bnz = 6000
gbdemo2 (20000) % uses bnz = 20000
Many of the GraphBLAS operations used in gbdemo are perhaps 3x to
50x faster than the corresponding MATLAB operations, depending on how
many cores your computer has. Here's an example where GraphBLAS is
asymptotically far faster than MATLAB R2019a: a simple assignment
for a large matrix C:
C(I,J) = A
The matrix C is constructed via C = kron (B,B) where nnz (B) is
roughly the bnz provided on input (with a default of bnz = 6000),
so that C will have about bnz^2 entries, or 36 million by default.
I and J are chosen randomly, and A is 5000-by-5000.
When the problem becomes large, MATLAB will take a very long time.
If you have enough memory, and want to see higher speedups in
GraphBLAS, increase bnz (and be prepared to wait even longer).
With the default bnz = 6000, this test takes about 4GB of RAM.
On my Dell XPS 4-core laptop (Intel(R) Core(TM) i7-8565U, 16GB
RAM), using MATLAB R2019a, when C becomes 9 million by 9 million,
the computation C(I,J)=A for MATLAB matrices C, I, J, and A takes
several minutes, whereas GraphBLAS takes less than a second, or
about 500x faster than MATLAB. On a desktop with an Intel(R)
Xeon(R) CPU E5-2698 v4 @ 2.20GHz with 20 hardware cores, the
speedup over MATLAB is even more dramatic (up to 2,660x has been
observed).
See also GrB.assign, subsasgn.
# of threads used in GraphBLAS: 20
C(I,J)=A where C is 1 million -by- 1 million
with 35.7126 million entries:
A is 5000-by-5000 with 49954 entries
setup time: 0.400355 sec
GraphBLAS time: 0.258735 sec
Starting MATLAB ... please wait ...
MATLAB time: 0.498557 sec
Speedup of GraphBLAS over MATLAB: 1.9269
check time: 0.344678 sec
all tests passed
C(I,J)=A where C is 4 million -by- 4 million
with 35.8202 million entries:
A is 5000-by-5000 with 49954 entries
setup time: 0.435778 sec
GraphBLAS time: 0.221929 sec
Starting MATLAB ... please wait ...
MATLAB time: 0.470126 sec
Speedup of GraphBLAS over MATLAB: 2.11836
check time: 0.232899 sec
all tests passed
C(I,J)=A where C is 9 million -by- 9 million
with 35.928 million entries:
A is 5000-by-5000 with 49954 entries
setup time: 0.512156 sec
GraphBLAS time: 0.269746 sec
Starting MATLAB ... please wait ...
MATLAB time: 231.803 sec
Speedup of GraphBLAS over MATLAB: 859.34
check time: 0.256974 sec
all tests passed
C(I,J)=A where C is 16 million -by- 16 million
with 35.916 million entries:
A is 5000-by-5000 with 49954 entries
setup time: 0.583952 sec
GraphBLAS time: 0.316899 sec
Starting MATLAB ... please wait ...
MATLAB time: 249.945 sec
Speedup of GraphBLAS over MATLAB: 788.722
check time: 0.286138 sec
all tests passed
C(I,J)=A where C is 25 million -by- 25 million
with 35.964 million entries:
A is 5000-by-5000 with 49954 entries
setup time: 0.652218 sec
GraphBLAS time: 0.27157 sec
Starting MATLAB ... please wait ...
MATLAB time: 272.701 sec
Speedup of GraphBLAS over MATLAB: 1004.17
check time: 0.324539 sec
all tests passed
C(I,J)=A where C is 36 million -by- 36 million
with 35.976 million entries:
A is 5000-by-5000 with 49954 entries
setup time: 0.731629 sec
GraphBLAS time: 0.426048 sec
Starting MATLAB ... please wait ...
MATLAB time: 300.018 sec
Speedup of GraphBLAS over MATLAB: 704.187
check time: 0.365963 sec
all tests passed