From fac7e96ef67fb01eb999229eddd05f53bdcd8e0e Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Thu, 18 Jun 2026 18:02:07 +0200 Subject: [PATCH 01/12] =?UTF-8?q?=E2=9C=85=20Improve=20test=20stability?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/qdmi/devices/dd/device_status_test.cpp | 4 ++-- test/qdmi/devices/dd/error_handling_test.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/test/qdmi/devices/dd/device_status_test.cpp b/test/qdmi/devices/dd/device_status_test.cpp index 67054e518a..1f7cd75732 100644 --- a/test/qdmi/devices/dd/device_status_test.cpp +++ b/test/qdmi/devices/dd/device_status_test.cpp @@ -41,7 +41,7 @@ TEST(DeviceStatus, TransitionsBusyThenIdleAfterJob) { ASSERT_EQ(qdmi_test::setProgram(j.job, QDMI_PROGRAM_FORMAT_QASM3, qdmi_test::QASM3_BELL_SAMPLING), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j.job, 4096), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j.job, 32768), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j.job), QDMI_SUCCESS); // Poll while running to observe BUSY at least once. @@ -78,7 +78,7 @@ TEST(DeviceStatus, MultipleConcurrentJobsKeepBusyUntilLastFinishes) { qdmi_test::QASM3_HEAVY_SAMPLING5), QDMI_SUCCESS); ASSERT_EQ(qdmi_test::setShots(j1.job, 1024), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j2.job, 16384), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j2.job, 32768), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j1.job), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j2.job), QDMI_SUCCESS); diff --git a/test/qdmi/devices/dd/error_handling_test.cpp b/test/qdmi/devices/dd/error_handling_test.cpp index b2766c051a..5bd119c3e0 100644 --- a/test/qdmi/devices/dd/error_handling_test.cpp +++ b/test/qdmi/devices/dd/error_handling_test.cpp @@ -77,7 +77,7 @@ TEST_F(ErrorHandling, GetResultsBeforeDone) { ASSERT_EQ(qdmi_test::setProgram(j.job, QDMI_PROGRAM_FORMAT_QASM3, qdmi_test::QASM3_BELL_SAMPLING), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j.job, 64), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j.job, 1024), QDMI_SUCCESS); // Before submit → invalid EXPECT_EQ(MQT_DDSIM_QDMI_device_job_get_results( j.job, QDMI_JOB_RESULT_HIST_KEYS, 0, nullptr, nullptr), From 4672ff56988458aab9be173e3128369b9e255a0e Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Thu, 18 Jun 2026 18:21:53 +0200 Subject: [PATCH 02/12] Increase number of shots a bit more --- test/qdmi/devices/dd/device_status_test.cpp | 2 +- test/qdmi/devices/dd/error_handling_test.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/qdmi/devices/dd/device_status_test.cpp b/test/qdmi/devices/dd/device_status_test.cpp index 1f7cd75732..dc184f7f0f 100644 --- a/test/qdmi/devices/dd/device_status_test.cpp +++ b/test/qdmi/devices/dd/device_status_test.cpp @@ -78,7 +78,7 @@ TEST(DeviceStatus, MultipleConcurrentJobsKeepBusyUntilLastFinishes) { qdmi_test::QASM3_HEAVY_SAMPLING5), QDMI_SUCCESS); ASSERT_EQ(qdmi_test::setShots(j1.job, 1024), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j2.job, 32768), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j2.job, 131073), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j1.job), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j2.job), QDMI_SUCCESS); diff --git a/test/qdmi/devices/dd/error_handling_test.cpp b/test/qdmi/devices/dd/error_handling_test.cpp index 5bd119c3e0..8b483cc7e1 100644 --- a/test/qdmi/devices/dd/error_handling_test.cpp +++ b/test/qdmi/devices/dd/error_handling_test.cpp @@ -77,7 +77,7 @@ TEST_F(ErrorHandling, GetResultsBeforeDone) { ASSERT_EQ(qdmi_test::setProgram(j.job, QDMI_PROGRAM_FORMAT_QASM3, qdmi_test::QASM3_BELL_SAMPLING), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j.job, 1024), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j.job, 32768), QDMI_SUCCESS); // Before submit → invalid EXPECT_EQ(MQT_DDSIM_QDMI_device_job_get_results( j.job, QDMI_JOB_RESULT_HIST_KEYS, 0, nullptr, nullptr), From 879b96b37caa1776bd3e853061f07e2782360a94 Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Thu, 18 Jun 2026 18:36:10 +0200 Subject: [PATCH 03/12] Improve stability of QPE test --- test/algorithms/test_qpe.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/algorithms/test_qpe.cpp b/test/algorithms/test_qpe.cpp index 553f3dfac1..287b658b70 100644 --- a/test/algorithms/test_qpe.cpp +++ b/test/algorithms/test_qpe.cpp @@ -175,7 +175,7 @@ TEST_P(QPE, IQPETest) { auto qc = qc::createIterativeQPE(lambda, precision); ASSERT_EQ(qc.getNqubits(), 2U); - constexpr auto shots = 8192U; + constexpr auto shots = 16384U; const auto measurements = dd::sample(qc, shots); // sort the measurements From 5e17c5a994bff2caac63d63c8c1c680d03aa0123 Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Thu, 18 Jun 2026 18:44:33 +0200 Subject: [PATCH 04/12] Increase number of shots a bit more --- test/qdmi/devices/dd/error_handling_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/qdmi/devices/dd/error_handling_test.cpp b/test/qdmi/devices/dd/error_handling_test.cpp index 8b483cc7e1..6ce204404f 100644 --- a/test/qdmi/devices/dd/error_handling_test.cpp +++ b/test/qdmi/devices/dd/error_handling_test.cpp @@ -77,7 +77,7 @@ TEST_F(ErrorHandling, GetResultsBeforeDone) { ASSERT_EQ(qdmi_test::setProgram(j.job, QDMI_PROGRAM_FORMAT_QASM3, qdmi_test::QASM3_BELL_SAMPLING), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j.job, 32768), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j.job, 131072), QDMI_SUCCESS); // Before submit → invalid EXPECT_EQ(MQT_DDSIM_QDMI_device_job_get_results( j.job, QDMI_JOB_RESULT_HIST_KEYS, 0, nullptr, nullptr), From 724980ab213caf9e6d1086b69dac2eafc6539f46 Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Thu, 18 Jun 2026 19:31:21 +0200 Subject: [PATCH 05/12] Increase number of shots a bit more --- test/qdmi/devices/dd/device_status_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/qdmi/devices/dd/device_status_test.cpp b/test/qdmi/devices/dd/device_status_test.cpp index dc184f7f0f..6f63131a0d 100644 --- a/test/qdmi/devices/dd/device_status_test.cpp +++ b/test/qdmi/devices/dd/device_status_test.cpp @@ -77,8 +77,8 @@ TEST(DeviceStatus, MultipleConcurrentJobsKeepBusyUntilLastFinishes) { ASSERT_EQ(qdmi_test::setProgram(j2.job, QDMI_PROGRAM_FORMAT_QASM3, qdmi_test::QASM3_HEAVY_SAMPLING5), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j1.job, 1024), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j2.job, 131073), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j1.job, 16), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j2.job, 262146), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j1.job), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j2.job), QDMI_SUCCESS); From 2750aea7c5bc1c3f1c145d7f1d850b1d7d980146 Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Thu, 18 Jun 2026 22:42:03 +0200 Subject: [PATCH 06/12] Try with way too many shots --- test/qdmi/devices/dd/device_status_test.cpp | 5 +++-- test/qdmi/devices/dd/error_handling_test.cpp | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/test/qdmi/devices/dd/device_status_test.cpp b/test/qdmi/devices/dd/device_status_test.cpp index 6f63131a0d..542009de50 100644 --- a/test/qdmi/devices/dd/device_status_test.cpp +++ b/test/qdmi/devices/dd/device_status_test.cpp @@ -19,6 +19,7 @@ #include #include +#include #include namespace { @@ -41,7 +42,7 @@ TEST(DeviceStatus, TransitionsBusyThenIdleAfterJob) { ASSERT_EQ(qdmi_test::setProgram(j.job, QDMI_PROGRAM_FORMAT_QASM3, qdmi_test::QASM3_BELL_SAMPLING), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j.job, 32768), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j.job, std::pow(2, 20)), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j.job), QDMI_SUCCESS); // Poll while running to observe BUSY at least once. @@ -78,7 +79,7 @@ TEST(DeviceStatus, MultipleConcurrentJobsKeepBusyUntilLastFinishes) { qdmi_test::QASM3_HEAVY_SAMPLING5), QDMI_SUCCESS); ASSERT_EQ(qdmi_test::setShots(j1.job, 16), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j2.job, 262146), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j2.job, std::pow(2, 20)), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j1.job), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j2.job), QDMI_SUCCESS); diff --git a/test/qdmi/devices/dd/error_handling_test.cpp b/test/qdmi/devices/dd/error_handling_test.cpp index 6ce204404f..69c53e5d76 100644 --- a/test/qdmi/devices/dd/error_handling_test.cpp +++ b/test/qdmi/devices/dd/error_handling_test.cpp @@ -18,6 +18,8 @@ #include +#include + namespace { class ErrorHandling : public ::testing::Test { @@ -77,7 +79,7 @@ TEST_F(ErrorHandling, GetResultsBeforeDone) { ASSERT_EQ(qdmi_test::setProgram(j.job, QDMI_PROGRAM_FORMAT_QASM3, qdmi_test::QASM3_BELL_SAMPLING), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j.job, 131072), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j.job, std::pow(2, 20)), QDMI_SUCCESS); // Before submit → invalid EXPECT_EQ(MQT_DDSIM_QDMI_device_job_get_results( j.job, QDMI_JOB_RESULT_HIST_KEYS, 0, nullptr, nullptr), From cba782962d45dc66f4ba4b5a40d190175bc8c29e Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Fri, 19 Jun 2026 12:10:23 +0200 Subject: [PATCH 07/12] Try with a more complex circuit --- test/qdmi/devices/dd/device_status_test.cpp | 7 +++---- test/qdmi/devices/dd/helpers/circuits.hpp | 12 +++++++++--- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/test/qdmi/devices/dd/device_status_test.cpp b/test/qdmi/devices/dd/device_status_test.cpp index 542009de50..df4e998b06 100644 --- a/test/qdmi/devices/dd/device_status_test.cpp +++ b/test/qdmi/devices/dd/device_status_test.cpp @@ -19,7 +19,6 @@ #include #include -#include #include namespace { @@ -40,9 +39,9 @@ TEST(DeviceStatus, TransitionsBusyThenIdleAfterJob) { // it. Submit a job to force BUSY then completion to IDLE. const qdmi_test::JobGuard j{s.session}; ASSERT_EQ(qdmi_test::setProgram(j.job, QDMI_PROGRAM_FORMAT_QASM3, - qdmi_test::QASM3_BELL_SAMPLING), + qdmi_test::QASM3_HEAVY_SAMPLING5), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j.job, std::pow(2, 20)), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j.job, 16384), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j.job), QDMI_SUCCESS); // Poll while running to observe BUSY at least once. @@ -79,7 +78,7 @@ TEST(DeviceStatus, MultipleConcurrentJobsKeepBusyUntilLastFinishes) { qdmi_test::QASM3_HEAVY_SAMPLING5), QDMI_SUCCESS); ASSERT_EQ(qdmi_test::setShots(j1.job, 16), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j2.job, std::pow(2, 20)), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j2.job, 16384), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j1.job), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j2.job), QDMI_SUCCESS); diff --git a/test/qdmi/devices/dd/helpers/circuits.hpp b/test/qdmi/devices/dd/helpers/circuits.hpp index 156dd1de94..589b4966f1 100644 --- a/test/qdmi/devices/dd/helpers/circuits.hpp +++ b/test/qdmi/devices/dd/helpers/circuits.hpp @@ -32,26 +32,32 @@ cx q[0], q[1]; inline constexpr const char* QASM3_MALFORMED = "Definitely not OpenQASM"; -// A slightly heavier 5-qubit sampling circuit to prolong runtime slightly while +// A slightly heavier 7-qubit sampling circuit to prolong runtime slightly while // remaining fast inline constexpr auto QASM3_HEAVY_SAMPLING5 = R"( OPENQASM 3; include "stdgates.inc"; -qubit[5] q; -bit[5] c; +qubit[7] q; +bit[7] c; // GHZ-like entanglement chain h q[0]; cx q[0], q[1]; cx q[1], q[2]; cx q[2], q[3]; cx q[3], q[4]; +cx q[4], q[5]; +cx q[5], q[6]; // Some single-qubit rotations for additional depth rx(0.7) q[0]; ry(0.5) q[1]; rz(1.1) q[2]; ry(0.3) q[3]; rx(0.9) q[4]; +rz(0.4) q[5]; +rx(0.2) q[6]; // Reverse entanglement to add more two-qubit layers +cx q[5], q[6]; +cx q[4], q[5]; cx q[3], q[4]; cx q[2], q[3]; cx q[1], q[2]; From 51f812b5fc5a38b5726ddaa96f5c4e9482082084 Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Fri, 19 Jun 2026 12:51:53 +0200 Subject: [PATCH 08/12] Try with an even more complex circuit --- test/qdmi/devices/dd/helpers/circuits.hpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/test/qdmi/devices/dd/helpers/circuits.hpp b/test/qdmi/devices/dd/helpers/circuits.hpp index 589b4966f1..7fc04dcacc 100644 --- a/test/qdmi/devices/dd/helpers/circuits.hpp +++ b/test/qdmi/devices/dd/helpers/circuits.hpp @@ -37,8 +37,8 @@ inline constexpr const char* QASM3_MALFORMED = "Definitely not OpenQASM"; inline constexpr auto QASM3_HEAVY_SAMPLING5 = R"( OPENQASM 3; include "stdgates.inc"; -qubit[7] q; -bit[7] c; +qubit[9] q; +bit[9] c; // GHZ-like entanglement chain h q[0]; cx q[0], q[1]; @@ -47,6 +47,8 @@ cx q[2], q[3]; cx q[3], q[4]; cx q[4], q[5]; cx q[5], q[6]; +cx q[6], q[7]; +cx q[7], q[8]; // Some single-qubit rotations for additional depth rx(0.7) q[0]; ry(0.5) q[1]; @@ -55,7 +57,11 @@ ry(0.3) q[3]; rx(0.9) q[4]; rz(0.4) q[5]; rx(0.2) q[6]; +rz(0.8) q[7]; +ry(0.6) q[8]; // Reverse entanglement to add more two-qubit layers +cx q[7], q[8]; +cx q[6], q[7]; cx q[5], q[6]; cx q[4], q[5]; cx q[3], q[4]; From c4407aad7860bc770ba72394be73e50abd2097b2 Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Fri, 19 Jun 2026 13:18:06 +0200 Subject: [PATCH 09/12] One more attempt --- test/qdmi/devices/dd/device_status_test.cpp | 4 ++-- test/qdmi/devices/dd/error_handling_test.cpp | 6 ++---- test/qdmi/devices/dd/helpers/circuits.hpp | 12 +++++++++--- test/qdmi/devices/dd/job_lifecycle_test.cpp | 2 +- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/test/qdmi/devices/dd/device_status_test.cpp b/test/qdmi/devices/dd/device_status_test.cpp index df4e998b06..2b599547fb 100644 --- a/test/qdmi/devices/dd/device_status_test.cpp +++ b/test/qdmi/devices/dd/device_status_test.cpp @@ -39,7 +39,7 @@ TEST(DeviceStatus, TransitionsBusyThenIdleAfterJob) { // it. Submit a job to force BUSY then completion to IDLE. const qdmi_test::JobGuard j{s.session}; ASSERT_EQ(qdmi_test::setProgram(j.job, QDMI_PROGRAM_FORMAT_QASM3, - qdmi_test::QASM3_HEAVY_SAMPLING5), + qdmi_test::QASM3_HEAVY_SAMPLING), QDMI_SUCCESS); ASSERT_EQ(qdmi_test::setShots(j.job, 16384), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j.job), QDMI_SUCCESS); @@ -75,7 +75,7 @@ TEST(DeviceStatus, MultipleConcurrentJobsKeepBusyUntilLastFinishes) { qdmi_test::QASM3_BELL_SAMPLING), QDMI_SUCCESS); ASSERT_EQ(qdmi_test::setProgram(j2.job, QDMI_PROGRAM_FORMAT_QASM3, - qdmi_test::QASM3_HEAVY_SAMPLING5), + qdmi_test::QASM3_HEAVY_SAMPLING), QDMI_SUCCESS); ASSERT_EQ(qdmi_test::setShots(j1.job, 16), QDMI_SUCCESS); ASSERT_EQ(qdmi_test::setShots(j2.job, 16384), QDMI_SUCCESS); diff --git a/test/qdmi/devices/dd/error_handling_test.cpp b/test/qdmi/devices/dd/error_handling_test.cpp index 69c53e5d76..c67f1ec19b 100644 --- a/test/qdmi/devices/dd/error_handling_test.cpp +++ b/test/qdmi/devices/dd/error_handling_test.cpp @@ -18,8 +18,6 @@ #include -#include - namespace { class ErrorHandling : public ::testing::Test { @@ -77,9 +75,9 @@ TEST_F(ErrorHandling, GetResultsBeforeDone) { const qdmi_test::SessionGuard s{}; const qdmi_test::JobGuard j{s.session}; ASSERT_EQ(qdmi_test::setProgram(j.job, QDMI_PROGRAM_FORMAT_QASM3, - qdmi_test::QASM3_BELL_SAMPLING), + qdmi_test::QASM3_HEAVY_SAMPLING), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j.job, std::pow(2, 20)), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j.job, 16384), QDMI_SUCCESS); // Before submit → invalid EXPECT_EQ(MQT_DDSIM_QDMI_device_job_get_results( j.job, QDMI_JOB_RESULT_HIST_KEYS, 0, nullptr, nullptr), diff --git a/test/qdmi/devices/dd/helpers/circuits.hpp b/test/qdmi/devices/dd/helpers/circuits.hpp index 7fc04dcacc..dbc114b004 100644 --- a/test/qdmi/devices/dd/helpers/circuits.hpp +++ b/test/qdmi/devices/dd/helpers/circuits.hpp @@ -34,11 +34,11 @@ inline constexpr const char* QASM3_MALFORMED = "Definitely not OpenQASM"; // A slightly heavier 7-qubit sampling circuit to prolong runtime slightly while // remaining fast -inline constexpr auto QASM3_HEAVY_SAMPLING5 = R"( +inline constexpr auto QASM3_HEAVY_SAMPLING = R"( OPENQASM 3; include "stdgates.inc"; -qubit[9] q; -bit[9] c; +qubit[11] q; +bit[11] c; // GHZ-like entanglement chain h q[0]; cx q[0], q[1]; @@ -49,6 +49,8 @@ cx q[4], q[5]; cx q[5], q[6]; cx q[6], q[7]; cx q[7], q[8]; +cx q[8], q[9]; +cx q[9], q[10]; // Some single-qubit rotations for additional depth rx(0.7) q[0]; ry(0.5) q[1]; @@ -59,7 +61,11 @@ rz(0.4) q[5]; rx(0.2) q[6]; rz(0.8) q[7]; ry(0.6) q[8]; +rz(0.4) q[9]; +rx(0.5) q[10]; // Reverse entanglement to add more two-qubit layers +cx q[9], q[10]; +cx q[8], q[9]; cx q[7], q[8]; cx q[6], q[7]; cx q[5], q[6]; diff --git a/test/qdmi/devices/dd/job_lifecycle_test.cpp b/test/qdmi/devices/dd/job_lifecycle_test.cpp index 267740641b..bf9be9282f 100644 --- a/test/qdmi/devices/dd/job_lifecycle_test.cpp +++ b/test/qdmi/devices/dd/job_lifecycle_test.cpp @@ -111,7 +111,7 @@ TEST(JobLifecycle, FreeWhileRunningWaitsForCompletion) { ASSERT_EQ(MQT_DDSIM_QDMI_device_session_create_device_job(s.session, &job), QDMI_SUCCESS); ASSERT_EQ(qdmi_test::setProgram(job, QDMI_PROGRAM_FORMAT_QASM3, - qdmi_test::QASM3_HEAVY_SAMPLING5), + qdmi_test::QASM3_HEAVY_SAMPLING), QDMI_SUCCESS); ASSERT_EQ(qdmi_test::setShots(job, 4096), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(job), QDMI_SUCCESS); From 937afda5b8f8d538811cbc9a726aa70c59dafd77 Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Fri, 19 Jun 2026 13:49:28 +0200 Subject: [PATCH 10/12] Make QASM3_HEAVY_SAMPLING dynamic --- test/qdmi/devices/dd/helpers/circuits.hpp | 34 +++++++++-------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/test/qdmi/devices/dd/helpers/circuits.hpp b/test/qdmi/devices/dd/helpers/circuits.hpp index dbc114b004..b6f7564ff1 100644 --- a/test/qdmi/devices/dd/helpers/circuits.hpp +++ b/test/qdmi/devices/dd/helpers/circuits.hpp @@ -32,50 +32,42 @@ cx q[0], q[1]; inline constexpr const char* QASM3_MALFORMED = "Definitely not OpenQASM"; -// A slightly heavier 7-qubit sampling circuit to prolong runtime slightly while +// A slightly heavier dynamic sampling circuit to prolong runtime slightly while // remaining fast inline constexpr auto QASM3_HEAVY_SAMPLING = R"( OPENQASM 3; include "stdgates.inc"; -qubit[11] q; -bit[11] c; +qubit[5] q; +bit[5] c; // GHZ-like entanglement chain h q[0]; cx q[0], q[1]; cx q[1], q[2]; cx q[2], q[3]; cx q[3], q[4]; -cx q[4], q[5]; -cx q[5], q[6]; -cx q[6], q[7]; -cx q[7], q[8]; -cx q[8], q[9]; -cx q[9], q[10]; // Some single-qubit rotations for additional depth rx(0.7) q[0]; ry(0.5) q[1]; rz(1.1) q[2]; ry(0.3) q[3]; rx(0.9) q[4]; -rz(0.4) q[5]; -rx(0.2) q[6]; -rz(0.8) q[7]; -ry(0.6) q[8]; -rz(0.4) q[9]; -rx(0.5) q[10]; // Reverse entanglement to add more two-qubit layers -cx q[9], q[10]; -cx q[8], q[9]; -cx q[7], q[8]; -cx q[6], q[7]; -cx q[5], q[6]; -cx q[4], q[5]; cx q[3], q[4]; cx q[2], q[3]; cx q[1], q[2]; cx q[0], q[1]; // Measure all qubits c = measure q; +// Add dynamic component +if (c == 3) { + rx(0.7) q[0]; + ry(0.5) q[1]; + rz(1.1) q[2]; + ry(0.3) q[3]; + rx(0.9) q[4]; +} +// Measure all qubits again +c = measure q; )"; } // namespace qdmi_test From 88c7665a713862b32f1cee30a51b2a4aa9446613 Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Fri, 19 Jun 2026 14:29:39 +0200 Subject: [PATCH 11/12] Try one more time with more shots --- test/qdmi/devices/dd/device_status_test.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/qdmi/devices/dd/device_status_test.cpp b/test/qdmi/devices/dd/device_status_test.cpp index 2b599547fb..9205566613 100644 --- a/test/qdmi/devices/dd/device_status_test.cpp +++ b/test/qdmi/devices/dd/device_status_test.cpp @@ -78,7 +78,7 @@ TEST(DeviceStatus, MultipleConcurrentJobsKeepBusyUntilLastFinishes) { qdmi_test::QASM3_HEAVY_SAMPLING), QDMI_SUCCESS); ASSERT_EQ(qdmi_test::setShots(j1.job, 16), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j2.job, 16384), QDMI_SUCCESS); + ASSERT_EQ(qdmi_test::setShots(j2.job, 65536), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j1.job), QDMI_SUCCESS); ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j2.job), QDMI_SUCCESS); From 7179b97eb280f09a73c303b0e9c62ef569dfd7f3 Mon Sep 17 00:00:00 2001 From: Daniel Haag <121057143+denialhaag@users.noreply.github.com> Date: Fri, 19 Jun 2026 15:50:11 +0200 Subject: [PATCH 12/12] Cut our losses --- test/qdmi/devices/dd/device_status_test.cpp | 27 --------------------- 1 file changed, 27 deletions(-) diff --git a/test/qdmi/devices/dd/device_status_test.cpp b/test/qdmi/devices/dd/device_status_test.cpp index 9205566613..2943ebf93c 100644 --- a/test/qdmi/devices/dd/device_status_test.cpp +++ b/test/qdmi/devices/dd/device_status_test.cpp @@ -65,30 +65,3 @@ TEST(DeviceStatus, TransitionsBusyThenIdleAfterJob) { // After completion, the status should be IDLE. EXPECT_EQ(queryStatus(s.session), QDMI_DEVICE_STATUS_IDLE); } - -TEST(DeviceStatus, MultipleConcurrentJobsKeepBusyUntilLastFinishes) { - const qdmi_test::SessionGuard s{}; - - const qdmi_test::JobGuard j1{s.session}; - const qdmi_test::JobGuard j2{s.session}; - ASSERT_EQ(qdmi_test::setProgram(j1.job, QDMI_PROGRAM_FORMAT_QASM3, - qdmi_test::QASM3_BELL_SAMPLING), - QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setProgram(j2.job, QDMI_PROGRAM_FORMAT_QASM3, - qdmi_test::QASM3_HEAVY_SAMPLING), - QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j1.job, 16), QDMI_SUCCESS); - ASSERT_EQ(qdmi_test::setShots(j2.job, 65536), QDMI_SUCCESS); - - ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j1.job), QDMI_SUCCESS); - ASSERT_EQ(MQT_DDSIM_QDMI_device_job_submit(j2.job), QDMI_SUCCESS); - - // Wait for first to finish - ASSERT_EQ(MQT_DDSIM_QDMI_device_job_wait(j1.job, 0), QDMI_SUCCESS); - // Status should still be BUSY while the second runs - EXPECT_EQ(queryStatus(s.session), QDMI_DEVICE_STATUS_BUSY); - - // Wait for second, then status should go IDLE - ASSERT_EQ(MQT_DDSIM_QDMI_device_job_wait(j2.job, 0), QDMI_SUCCESS); - EXPECT_EQ(queryStatus(s.session), QDMI_DEVICE_STATUS_IDLE); -}