Loading examples/exatn_gen/main_asp.cpp +10 −8 Original line number Diff line number Diff line Loading @@ -13,18 +13,20 @@ int main(int argc, char **argv) { // Initialize: xacc::Initialize(argc, argv); xacc::set_verbose(true); //xacc::logToFile(true); //xacc::setLoggingLevel(1); xacc::logToFile(true); xacc::setLoggingLevel(1); // Get Accelerator backend: auto accelerator_qpp = xacc::getAccelerator("qpp"); auto accelerator_tnqvm_gen = xacc::getAccelerator("tnqvm", {{"tnqvm-visitor", "exatn-gen:float"}, {"exatn-buffer-size-gb", 2}, {"reconstruct-layers", 4}, {"reconstruct-tolerance", 1e-5}, {"max-bond-dim", 32}}); auto accelerator = accelerator_qpp; {{"tnqvm-visitor", "exatn-gen:double"}, {"exatn-buffer-size-gb", 4}, {"reconstruct-layers", 6}, {"reconstruct-tolerance", 1e-6}, {"max-bond-dim", 4}, {"reconstruct-builder", "TTN"}, {"exatn-contract-seq-optimizer", "cutnn"}}); auto accelerator = accelerator_tnqvm_gen; // Read Source file: std::ifstream inFile; Loading examples/exatn_gen/main_qaoa.cpp +10 −8 Original line number Diff line number Diff line Loading @@ -13,18 +13,20 @@ int main(int argc, char **argv) { // Initialize: xacc::Initialize(argc, argv); xacc::set_verbose(true); //xacc::logToFile(true); //xacc::setLoggingLevel(1); xacc::logToFile(true); xacc::setLoggingLevel(1); // Get Accelerator backend: auto accelerator_qpp = xacc::getAccelerator("qpp"); auto accelerator_tnqvm_gen = xacc::getAccelerator("tnqvm", {{"tnqvm-visitor", "exatn-gen:float"}, {"exatn-buffer-size-gb", 2}, {"reconstruct-layers", 4}, {"reconstruct-tolerance", 1e-5}, {"max-bond-dim", 32}}); auto accelerator = accelerator_qpp; {{"tnqvm-visitor", "exatn-gen:double"}, {"exatn-buffer-size-gb", 4}, {"reconstruct-layers", 8}, {"reconstruct-tolerance", 1e-6}, {"max-bond-dim", 32}, {"reconstruct-builder", "TTN"}, {"exatn-contract-seq-optimizer", "cutnn"}}); auto accelerator = accelerator_tnqvm_gen; // Read Source file: std::ifstream inFile; Loading tnqvm/visitors/exatn-gen/ExatnGenVisitor.cpp +16 −6 Original line number Diff line number Diff line Loading @@ -722,7 +722,10 @@ void ExatnGenVisitor<TNQVM_COMPLEX_TYPE>::reconstructCircuitTensor(bool forced) auto &networkBuildFactory = *(exatn::numerics::NetworkBuildFactory::get()); auto builder = networkBuildFactory.createNetworkBuilderShared(m_reconstructBuilder); builder->setParameter("max_bond_dim", m_maxBondDim); if(m_reconstructBuilder == "TTN") builder->setParameter("arity", 2); if(m_reconstructBuilder == "TTN"){ builder->setParameter("arity", 2); builder->setParameter("isometric", 1); } auto approximant = [&]() { if (m_initReconstructionRandom || !m_previousOptExpansion) { auto approximantTensorNetwork = Loading Loading @@ -755,8 +758,8 @@ void ExatnGenVisitor<TNQVM_COMPLEX_TYPE>::reconstructCircuitTensor(bool forced) bool success = exatn::balanceNormalizeNorm2Sync(*target, 1.0, 1.0, false); assert(success); success = exatn::balanceNormalizeNorm2Sync(*approximant, 1.0, 1.0, true); assert(success); //success = exatn::balanceNormalizeNorm2Sync(*approximant, 1.0, 1.0, true); //assert(success); exatn::TensorNetworkReconstructor reconstructor(target, approximant, m_reconstructTol); // std::cout << "Target: \n"; Loading @@ -766,11 +769,18 @@ void ExatnGenVisitor<TNQVM_COMPLEX_TYPE>::reconstructCircuitTensor(bool forced) // Run the reconstructor: bool reconstructSuccess = exatn::sync(); assert(reconstructSuccess); exatn::TensorNetworkReconstructor::resetDebugLevel(1,0); //debug //exatn::TensorNetworkReconstructor::resetDebugLevel(1,0); //debug bool nesterov = true, iso_solver = false; if(m_reconstructBuilder == "TTN"){ nesterov = false; iso_solver = true; reconstructor.resetLearningRate(1e3); }else{ reconstructor.resetLearningRate(1.0); } double residual_norm, fidelity; const auto startOpt = std::chrono::system_clock::now(); bool reconstructed = reconstructor.reconstruct(&residual_norm, &fidelity, true); bool reconstructed = reconstructor.reconstruct(&residual_norm, &fidelity, true, nesterov, iso_solver); reconstructSuccess = exatn::sync(); assert(reconstructSuccess); if (reconstructed) { const auto endOpt = std::chrono::system_clock::now(); Loading Loading
examples/exatn_gen/main_asp.cpp +10 −8 Original line number Diff line number Diff line Loading @@ -13,18 +13,20 @@ int main(int argc, char **argv) { // Initialize: xacc::Initialize(argc, argv); xacc::set_verbose(true); //xacc::logToFile(true); //xacc::setLoggingLevel(1); xacc::logToFile(true); xacc::setLoggingLevel(1); // Get Accelerator backend: auto accelerator_qpp = xacc::getAccelerator("qpp"); auto accelerator_tnqvm_gen = xacc::getAccelerator("tnqvm", {{"tnqvm-visitor", "exatn-gen:float"}, {"exatn-buffer-size-gb", 2}, {"reconstruct-layers", 4}, {"reconstruct-tolerance", 1e-5}, {"max-bond-dim", 32}}); auto accelerator = accelerator_qpp; {{"tnqvm-visitor", "exatn-gen:double"}, {"exatn-buffer-size-gb", 4}, {"reconstruct-layers", 6}, {"reconstruct-tolerance", 1e-6}, {"max-bond-dim", 4}, {"reconstruct-builder", "TTN"}, {"exatn-contract-seq-optimizer", "cutnn"}}); auto accelerator = accelerator_tnqvm_gen; // Read Source file: std::ifstream inFile; Loading
examples/exatn_gen/main_qaoa.cpp +10 −8 Original line number Diff line number Diff line Loading @@ -13,18 +13,20 @@ int main(int argc, char **argv) { // Initialize: xacc::Initialize(argc, argv); xacc::set_verbose(true); //xacc::logToFile(true); //xacc::setLoggingLevel(1); xacc::logToFile(true); xacc::setLoggingLevel(1); // Get Accelerator backend: auto accelerator_qpp = xacc::getAccelerator("qpp"); auto accelerator_tnqvm_gen = xacc::getAccelerator("tnqvm", {{"tnqvm-visitor", "exatn-gen:float"}, {"exatn-buffer-size-gb", 2}, {"reconstruct-layers", 4}, {"reconstruct-tolerance", 1e-5}, {"max-bond-dim", 32}}); auto accelerator = accelerator_qpp; {{"tnqvm-visitor", "exatn-gen:double"}, {"exatn-buffer-size-gb", 4}, {"reconstruct-layers", 8}, {"reconstruct-tolerance", 1e-6}, {"max-bond-dim", 32}, {"reconstruct-builder", "TTN"}, {"exatn-contract-seq-optimizer", "cutnn"}}); auto accelerator = accelerator_tnqvm_gen; // Read Source file: std::ifstream inFile; Loading
tnqvm/visitors/exatn-gen/ExatnGenVisitor.cpp +16 −6 Original line number Diff line number Diff line Loading @@ -722,7 +722,10 @@ void ExatnGenVisitor<TNQVM_COMPLEX_TYPE>::reconstructCircuitTensor(bool forced) auto &networkBuildFactory = *(exatn::numerics::NetworkBuildFactory::get()); auto builder = networkBuildFactory.createNetworkBuilderShared(m_reconstructBuilder); builder->setParameter("max_bond_dim", m_maxBondDim); if(m_reconstructBuilder == "TTN") builder->setParameter("arity", 2); if(m_reconstructBuilder == "TTN"){ builder->setParameter("arity", 2); builder->setParameter("isometric", 1); } auto approximant = [&]() { if (m_initReconstructionRandom || !m_previousOptExpansion) { auto approximantTensorNetwork = Loading Loading @@ -755,8 +758,8 @@ void ExatnGenVisitor<TNQVM_COMPLEX_TYPE>::reconstructCircuitTensor(bool forced) bool success = exatn::balanceNormalizeNorm2Sync(*target, 1.0, 1.0, false); assert(success); success = exatn::balanceNormalizeNorm2Sync(*approximant, 1.0, 1.0, true); assert(success); //success = exatn::balanceNormalizeNorm2Sync(*approximant, 1.0, 1.0, true); //assert(success); exatn::TensorNetworkReconstructor reconstructor(target, approximant, m_reconstructTol); // std::cout << "Target: \n"; Loading @@ -766,11 +769,18 @@ void ExatnGenVisitor<TNQVM_COMPLEX_TYPE>::reconstructCircuitTensor(bool forced) // Run the reconstructor: bool reconstructSuccess = exatn::sync(); assert(reconstructSuccess); exatn::TensorNetworkReconstructor::resetDebugLevel(1,0); //debug //exatn::TensorNetworkReconstructor::resetDebugLevel(1,0); //debug bool nesterov = true, iso_solver = false; if(m_reconstructBuilder == "TTN"){ nesterov = false; iso_solver = true; reconstructor.resetLearningRate(1e3); }else{ reconstructor.resetLearningRate(1.0); } double residual_norm, fidelity; const auto startOpt = std::chrono::system_clock::now(); bool reconstructed = reconstructor.reconstruct(&residual_norm, &fidelity, true); bool reconstructed = reconstructor.reconstruct(&residual_norm, &fidelity, true, nesterov, iso_solver); reconstructSuccess = exatn::sync(); assert(reconstructSuccess); if (reconstructed) { const auto endOpt = std::chrono::system_clock::now(); Loading