R = UTPM(numpy.zeros((D, P, N, N))) tic = time() Q, R = UTPM.qr(A, out=(Q, R)) toc = time() runtime_algopy_push_forward = toc - tic # compute pullback Qbar = UTPM( numpy.ascontiguousarray(Qbar_data[0, ...].transpose( (3, 2, 0, 1)))) Rbar = UTPM( numpy.ascontiguousarray(Rbar_data[0, ...].transpose( (3, 2, 0, 1)))) tic = time() Q, R = UTPM.qr(A) Abar = UTPM.pb_qr(Qbar, Rbar, A, Q, R) toc = time() runtime_algopy_pullback = toc - tic push_forward_ratio = runtime_algopy_push_forward / runtime_pyadolc_push_forward pullback_ratio = runtime_algopy_pullback / runtime_pyadolc_pullback print('relative runtime of the push forward: algopy/pyadolc =', push_forward_ratio) print('relative runtime of the pullback: algopy/pyadolc =', pullback_ratio) runtime_ratios_push_forward[nd, np, nn, r] = push_forward_ratio runtime_ratios_pullback[nd, np, nn, r] = pullback_ratio # Plot runtime ratios
# comute push forward A = UTPM(numpy.ascontiguousarray(A_data.transpose((3,2,0,1)))) Q = UTPM(numpy.zeros((D,P,N,N))) R = UTPM(numpy.zeros((D,P,N,N))) tic = time() Q,R = UTPM.qr(A, out = (Q,R)) toc = time() runtime_algopy_push_forward = toc - tic # compute pullback Qbar = UTPM(numpy.ascontiguousarray(Qbar_data[0,...].transpose((3,2,0,1)))) Rbar = UTPM(numpy.ascontiguousarray(Rbar_data[0,...].transpose((3,2,0,1)))) tic = time() Q,R = UTPM.qr(A) Abar = UTPM.pb_qr(Qbar, Rbar, A, Q, R) toc = time() runtime_algopy_pullback = toc - tic push_forward_ratio = runtime_algopy_push_forward/runtime_pyadolc_push_forward pullback_ratio = runtime_algopy_pullback/runtime_pyadolc_pullback print 'relative runtime of the push forward: algopy/pyadolc =', push_forward_ratio print 'relative runtime of the pullback: algopy/pyadolc =',pullback_ratio runtime_ratios_push_forward[nd,np,nn,r] = push_forward_ratio runtime_ratios_pullback[nd,np,nn,r] = pullback_ratio # Plot runtime ratios from prettyplotting import *