AP = AdolcProgram() AP.trace_on(1) aA = adouble(A) AP.independent(aA) aQ, aR = qr(aA) AP.dependent(aQ) AP.dependent(aR) AP.trace_off() for r in range(repetitions): A = A_data[:, :, 0, 0] # compute push forward VA = A_data[:, :, :, 1:] tic = time() out = AP.forward([A], [VA]) toc = time() runtime_pyadolc_push_forward = toc - tic adolc_Q = out[0][0] adolc_R = out[0][1] adolc_VQ = out[1][0] adolc_VR = out[1][1] # compute pullback WQ = Qbar_data WR = Rbar_data tic = time() out = AP.reverse([WQ, WR]) toc = time() runtime_pyadolc_pullback = toc - tic
AP = AdolcProgram() AP.trace_on(1) aA = adouble(A) AP.independent(aA) aQ, aR = qr(aA) AP.dependent(aQ) AP.dependent(aR) AP.trace_off() for r in range(repetitions): A = A_data[:,:,0,0] # compute push forward VA = A_data[:,:,:,1:] tic = time() out = AP.forward([A],[VA]) toc = time() runtime_pyadolc_push_forward = toc - tic adolc_Q = out[0][0] adolc_R = out[0][1] adolc_VQ = out[1][0] adolc_VR = out[1][1] # compute pullback WQ = Qbar_data WR = Rbar_data tic = time() out = AP.reverse([WQ, WR]) toc = time() runtime_pyadolc_pullback = toc - tic
# time PYADOLC hos_forward x = numpy.random.rand(N) V = numpy.random.rand(N, D - 1) start_time = time.time() for rep in range(reps): adolc.hos_forward(1, x, V, keep=0) end_time = time.time() time_hos_forward_adolc = end_time - start_time # time PYADOLC.cgraph hos_forward x = numpy.random.rand(N) V = numpy.random.rand(N, 1, D - 1) for rep in range(reps): ap.forward([x], [V]) end_time = time.time() time_hos_forward_cgraph = end_time - start_time # time ALGOPY hov_forward x = UTPM(numpy.random.rand(D, P, N)) start_time = time.time() for rep in range(reps): cg.pushforward([x]) end_time = time.time() time_hov_forward_algopy = end_time - start_time # time PYADOLC hov_forward x = numpy.random.rand(N) V = numpy.random.rand(N, P, D - 1)