1function test25 2%TEST25 test sdmult on a large matrix 3% Example: 4% test25 5% See also cholmod_test 6 7% Copyright 2007, Timothy A. Davis, http://www.suitesparse.com 8 9fprintf ('=================================================================\n'); 10fprintf ('test25: test sdmult on a large matrix\n') ; 11 12Prob = ssget (936) ; 13A = Prob.A ; 14n = size (A,1) ; 15 16nz = nnz (A) ; 17fprintf ('\nTest matrix: %d-by-%d, nnz %d\n', n, n, nz) ; 18 19Z = rand (n, 500) ; 20 21fprintf ('\nA*X where X is %d-by-k\n', n) ; 22 23for k = [0:10 10:10:50 100:100:500] 24 25 X = Z (:, 1:k) ; 26 27 tic ; 28 D = A*X ; 29 t1 = toc ; 30 31 tic ; 32 C = sdmult (A,X) ; 33 t2 = toc ; 34 35 err = norm (C-D,1) ; 36 fprintf (... 37 'k: %3d time: MATLAB %8.2f CHOLMOD %8.2f speedup %8.2f err %6.0e',... 38 k, t1, t2, t1/t2, err) ; 39 fl = 2*nz*k ; 40 fprintf (' mflop: MATLAB %8.1f CHOLMOD %8.1f\n', 1e-6*fl/t1, 1e-6*fl/t2) ; 41 42 clear C D X 43end 44 45fprintf ('\nFor comparison, here is CHOLMOD''s x=A\\b time:\n') ; 46for k = [1 100:100:500] 47 B = Z (:, 1:k) ; 48 tic 49 x = cholmod2 (A,B) ; 50 t2 = toc ; 51 err2 = norm (sdmult(A,x)-B,1) ; 52 fprintf (... 53 'CHOLMOD x=A\\b time: %8.2f (b is n-by-%d) resid %6.0e\n', t2, k, err2) ; 54 clear x B 55end 56 57b = Z (:,1) ; 58clear Z 59 60tic 61x = A\b ; 62t1 = toc ; 63err1 = norm (A*x-b,1) ; 64fprintf ('\nMATLAB x=A\\b time: %8.2f (b is n-by-1) resid %6.0e\n', t1, err1) ; 65 66fprintf ('test25 passed\n') ; 67