Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

performance test for QCodes #374

Closed
wants to merge 1 commit into from

Conversation

peendebak
Copy link
Contributor

Simple test for performance. Should be extended to log the performance and set tighter boundaries

@giulioungaretti

Copy link
Contributor

@AdriaanRol AdriaanRol left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great, always nice to have more test. I also think that the overhead bounds are reasonable.
Code is clean and clearly commented.

Let's wait for one of the maintainers to merge this.

@giulioungaretti
Copy link
Contributor

Thanks for the contribution, but I think we should go an extra mile! 🎉

F.ex. we should design for some hard limits, rather than test that things are ok!

In general we should have a clear max and min for:

  • size of data created per iteration of loop
  • frequency of loop iterations

I am collecting some numbers locally, but the more data the better!

@giulioungaretti
Copy link
Contributor

just playing around with @nataliejpg setup with the alzar card

  • 14 kb of data per iteration
  • at full speed (i.e. no loop delays), we have 0.7 second

@majacassidy
Copy link

We have situations where we run the Alazar in streaming mode. Then the data file size is infinite. Using the RAID arrays from Alazar, you can store the 2GB/s of data in real time.

On Nov 15, 2016, at 2:15 PM, Giulio Ungaretti [email protected] wrote:

just playing around with @nataliejpg https://github.com/nataliejpg setup with the alzar card

14 kb of data per iteration
at full speed (i.e. no loop delays), we have 0.7 second

You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub #374 (comment), or mute the thread https://github.com/notifications/unsubscribe-auth/AClTo2vmAIkrOimi-g0MKfqpcKjDJ9sTks5q-bBygaJpZM4KkYoR.

@giulioungaretti
Copy link
Contributor

@majacassidy interesting thanks for the answer! but It's really hard to correlate the numbers you give with the actual question 🐼 ! Perhaps my question is badly worded.

@majacassidy
Copy link

Basically, with this acquisition method our datafile size is unlimited. So, any hard coded limit will cause us problems.

Sometimes we need to stream for days. This means the data file is >> gigabytes.

On Nov 15, 2016, at 2:51 PM, Giulio Ungaretti [email protected] wrote:

@majacassidy https://github.com/majacassidy interesting thanks for the answer! but It's really hard to correlate the numbers you give with the actual question 🐼 ! Perhaps my question is badly worded.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub #374 (comment), or mute the thread https://github.com/notifications/unsubscribe-auth/AClTo5odPL5aQUOAbTqwv-mtADuBy9cTks5q-bjTgaJpZM4KkYoR.

@giulioungaretti
Copy link
Contributor

@majacassidy cool, that I understood. But the question is not about limits or hardcoded things, but rather what/how/how often you need that data.

I am not asking about files, but "bytes" you need from the card at a specific time namely at every point in the loop in this case.

@majacassidy
Copy link

Just to clarify, the 0.7s/14 kb of data you talk about is your ‘integration time’ in an experiment. How long an integration time you select depends on the signal to noise of the experiment. The 0.7s/14 kb here you refer to is probably from a single acquisition rather than the streaming mode and so it corresponds to your Alazar’s onboard memory. Each card has a different onboard memory. In streaming mode, you are no longer limited by onboard memory as it operates as a FIFO stack and pulls the data off onto the hard drive as fast as you can take it. I guess when I say infinite, I mean ‘a very large number' that is set by the user’s system parameters (hard drive size etc).

For example, a ‘loop' experiment I could run is:

At each step in gate voltage, use the Alazar to integrate for 1 hour and store the raw data. Therefore the ‘bytes’ is something on order GB for each point in the loop.

On Nov 15, 2016, at 3:26 PM, Giulio Ungaretti [email protected] wrote:

@majacassidy https://github.com/majacassidy cool, that I understood. But the question is not about limits or hardcoded things, but rather what/how/how often you need that data.

I am not asking about files, but "bytes" you need from the card at a specific time namely at every point in the loop in this case.


You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub #374 (comment), or mute the thread https://github.com/notifications/unsubscribe-auth/AClTo78uEOYH9luBJcra1V-JAtwNRI-Xks5q-cELgaJpZM4KkYoR.

@giulioungaretti
Copy link
Contributor

@majacassidy afaik it puts into what the software defines and and streams data as far as the dma does not overflow, but this is too technical anyway. My question was more dumb 🐱 !

But I have your answer now:

  • order of GB let's even say tens of GB / hour

@damazter
Copy link
Contributor

@giulioungaretti
@majacassidy
I am not sure that I follow the discussion. As far as I understand we want to take an arbitrary amount of data per loop iteration, which will take an arbitrarily short time. (by which I mean, our current measurements are sometimes of the order of 2 GB/s, but in the future this can increase a lot)

But I am not sure @giulioungaretti what you are going to use these limits for. I think it would be bad to limit the measurements in any way. Could you explain a littlebit more?

@giulioungaretti
Copy link
Contributor

@damazter when I mention hard limits, I mean just that any design that is not fas enough to begin with shall not be used.
Multiprocessing will always be slower because it does have an extra layer of comms (be a tcp socket/ unix socket or windows named pipes). So I want to make sure I know all the experiments data rates before releasing something that is doomed to be too slow.

@damazter arbitrary amount/ arbitrarily short time may not true because you'll be limited by the hardware 🙍‍♀️ !

So a hard limit would probably be the fastest PCIe bus throughput (order of 10GB / second).

@AdriaanRol
Copy link
Contributor

@giulioungaretti for the experiment I presented at the QCoDeS meetup in Delft we've done some detailed benchmarking of our adaptive sequences. All of this was done using QCoDeS + PycQED. If you want you can take a look at the paper https://arxiv.org/abs/1611.04815, especially the timing section that starts on the top of the second page.

Everything was done without use of the qcodes multiprocessing framework but with qcodes instruments. Let me know if this is the kind of information you're looking for.

@giulioungaretti
Copy link
Contributor

Closing as not relevant until we have the new architecture!

@peendebak peendebak deleted the performance branch July 11, 2017 13:24
bors bot added a commit that referenced this pull request Sep 6, 2022
4559: Update towncrier requirement from ~=21.9.0 to ~=22.8.0 r=jenshnielsen a=dependabot[bot]

Updates the requirements on [towncrier](https://github.com/hawkowl/towncrier) to permit the latest version.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a href="https://github.com/hawkowl/towncrier/releases">towncrier's releases</a>.</em></p>
<blockquote>
<h2>Towncrier 22.8.0</h2>
<h1>towncrier 22.8.0 (2022-08-29)</h1>
<p>No significant changes since the previous release candidate.</p>
<h1>towncrier 22.8.0.rc1 (2022-08-28)</h1>
<h2>Features</h2>
<ul>
<li>
<p>Make the check subcommand succeed for branches that change the news file</p>
<p>This should enable the <code>check</code> subcommand to be used as a CI lint step and
not fail when a pull request only modifies the configured news file (i.e. when
the news file is being assembled for the next release). (<code>[#337](twisted/towncrier#337) &lt;https://github.com/hawkowl/towncrier/issues/337&gt;</code>_)</p>
</li>
<li>
<p>Added support to tables in toml settings, which provides a more intuitive
way to configure custom types. (<code>[#369](twisted/towncrier#369) &lt;https://github.com/hawkowl/towncrier/issues/369&gt;</code>_)</p>
</li>
<li>
<p>The <code>towncrier create</code> command line now has a new <code>-m TEXT</code> argument that is used to define the content of the newly created fragment. (<code>[#374](twisted/towncrier#374) &lt;https://github.com/hawkowl/towncrier/issues/374&gt;</code>_)</p>
</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>
<p>The extra newline between the title and rendered content when using <code>--draft</code> is no longer inserted. (<code>[#105](twisted/towncrier#105) &lt;https://github.com/hawkowl/towncrier/issues/105&gt;</code>_)</p>
</li>
<li>
<p>The detection of duplicate release notes was fixed and recording changes of same version is no longer triggered.</p>
<p>Support for having the release notes for each version in a separate file is working again. This is a regression introduced in VERSION 19.9.0rc1. (<code>[#391](twisted/towncrier#391) &lt;https://github.com/hawkowl/towncrier/issues/391&gt;</code>_)</p>
</li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Improve <code>CONTRIBUTING.rst</code> and add PR template. (<code>[#342](twisted/towncrier#342) &lt;https://github.com/hawkowl/towncrier/issues/342&gt;</code>_)</li>
<li>Move docs too the main branch and document custom fragment types. (<code>[#367](twisted/towncrier#367) &lt;https://github.com/hawkowl/towncrier/issues/367&gt;</code>_)</li>
<li>The CLI help messages were updated to contain more information. (<code>[#384](twisted/towncrier#384) &lt;https://github.com/hawkowl/towncrier/issues/384&gt;</code>_)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li>Support for all Python versions older than 3.7 has been dropped. (<code>[#378](twisted/towncrier#378) &lt;https://github.com/hawkowl/towncrier/issues/378&gt;</code>_)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a href="https://github.com/twisted/towncrier/blob/trunk/NEWS.rst">towncrier's changelog</a>.</em></p>
<blockquote>
<h1>towncrier 22.8.0 (2022-08-29)</h1>
<p>No significant changes since the previous release candidate.</p>
<h1>towncrier 22.8.0.rc1 (2022-08-28)</h1>
<h2>Features</h2>
<ul>
<li>
<p>Make the check subcommand succeed for branches that change the news file</p>
<p>This should enable the <code>check</code> subcommand to be used as a CI lint step and
not fail when a pull request only modifies the configured news file (i.e. when
the news file is being assembled for the next release). (<code>[#337](twisted/towncrier#337) &lt;https://github.com/hawkowl/towncrier/issues/337&gt;</code>_)</p>
</li>
<li>
<p>Added support to tables in toml settings, which provides a more intuitive
way to configure custom types. (<code>[#369](twisted/towncrier#369) &lt;https://github.com/hawkowl/towncrier/issues/369&gt;</code>_)</p>
</li>
<li>
<p>The <code>towncrier create</code> command line now has a new <code>-m TEXT</code> argument that is used to define the content of the newly created fragment. (<code>[#374](twisted/towncrier#374) &lt;https://github.com/hawkowl/towncrier/issues/374&gt;</code>_)</p>
</li>
</ul>
<h2>Bugfixes</h2>
<ul>
<li>
<p>The extra newline between the title and rendered content when using <code>--draft</code> is no longer inserted. (<code>[#105](twisted/towncrier#105) &lt;https://github.com/hawkowl/towncrier/issues/105&gt;</code>_)</p>
</li>
<li>
<p>The detection of duplicate release notes was fixed and recording changes of same version is no longer triggered.</p>
<p>Support for having the release notes for each version in a separate file is working again. This is a regression introduced in VERSION 19.9.0rc1. (<code>[#391](twisted/towncrier#391) &lt;https://github.com/hawkowl/towncrier/issues/391&gt;</code>_)</p>
</li>
</ul>
<h2>Improved Documentation</h2>
<ul>
<li>Improve <code>CONTRIBUTING.rst</code> and add PR template. (<code>[#342](twisted/towncrier#342) &lt;https://github.com/hawkowl/towncrier/issues/342&gt;</code>_)</li>
<li>Move docs too the main branch and document custom fragment types. (<code>[#367](twisted/towncrier#367) &lt;https://github.com/hawkowl/towncrier/issues/367&gt;</code>_)</li>
<li>The CLI help messages were updated to contain more information. (<code>[#384](twisted/towncrier#384) &lt;https://github.com/hawkowl/towncrier/issues/384&gt;</code>_)</li>
</ul>
<h2>Deprecations and Removals</h2>
<ul>
<li>Support for all Python versions older than 3.7 has been dropped. (<code>[#378](twisted/towncrier#378) &lt;https://github.com/hawkowl/towncrier/issues/378&gt;</code>_)</li>
</ul>
<h2>Misc</h2>
<ul>
<li><code>[#292](twisted/towncrier#292) &lt;https://github.com/hawkowl/towncrier/issues/292&gt;</code><em>, <code>[#330](twisted/towncrier#330) &lt;https://github.com/hawkowl/towncrier/issues/330&gt;</code></em>, <code>[#366](twisted/towncrier#366) &lt;https://github.com/hawkowl/towncrier/issues/366&gt;</code><em>, <code>[#376](twisted/towncrier#376) &lt;https://github.com/hawkowl/towncrier/issues/376&gt;</code></em>, <code>[#377](twisted/towncrier#377) &lt;https://github.com/hawkowl/towncrier/issues/377&gt;</code><em>, <code>[#380](twisted/towncrier#380) &lt;https://github.com/hawkowl/towncrier/issues/380&gt;</code></em>, <code>[#381](twisted/towncrier#381) &lt;https://github.com/hawkowl/towncrier/issues/381&gt;</code><em>, <code>[#382](twisted/towncrier#382) &lt;https://github.com/hawkowl/towncrier/issues/382&gt;</code></em>, <code>[#383](twisted/towncrier#383) &lt;https://github.com/hawkowl/towncrier/issues/383&gt;</code><em>, <code>[#393](twisted/towncrier#393) &lt;https://github.com/hawkowl/towncrier/issues/393&gt;</code></em>, <code>[#399](twisted/towncrier#399) &lt;https://github.com/hawkowl/towncrier/issues/399&gt;</code><em>, <code>[#402](twisted/towncrier#402) &lt;https://github.com/hawkowl/towncrier/issues/402&gt;</code></em></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/twisted/towncrier/commit/411f2676b18daf9ba1eb656f7dc6c726397c4a9e"><code>411f267</code></a> Update version for final release.</li>
<li><a href="https://github.com/twisted/towncrier/commit/f031dfa94e52e07b6c71e88cd5cd50e3803ad96c"><code>f031dfa</code></a> towncrier build --yes</li>
<li><a href="https://github.com/twisted/towncrier/commit/4c854f58a2074458cd66767aca9f3aaa34d842d8"><code>4c854f5</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/hawkowl/towncrier/issues/402">#402</a> from webknjaz/patch-2</li>
<li><a href="https://github.com/twisted/towncrier/commit/f911402b69960bee358b0c2011d685721afa9454"><code>f911402</code></a> Pin external github actions,</li>
<li><a href="https://github.com/twisted/towncrier/commit/a814202234214182855fe4a5ffb40c7f7aec2b04"><code>a814202</code></a> [pre-commit.ci] auto fixes from pre-commit.com hooks</li>
<li><a href="https://github.com/twisted/towncrier/commit/675219a6deac7c65bb94b72da55059b7077e5ec4"><code>675219a</code></a> Add a dummy change note for PR <a href="https://github-redirect.dependabot.com/hawkowl/towncrier/issues/402">#402</a></li>
<li><a href="https://github.com/twisted/towncrier/commit/b566bfb0dcdcd86fa9d349875eba15e647c06459"><code>b566bfb</code></a> Uninvent the wheel w/ <code>re-actors/alls-green</code> @ GHA</li>
<li><a href="https://github.com/twisted/towncrier/commit/5bf0a4653bb2adf52162550d436f1dc39f6e0446"><code>5bf0a46</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/hawkowl/towncrier/issues/396">#396</a> from twisted/292-more-ci-checks</li>
<li><a href="https://github.com/twisted/towncrier/commit/1bb62219a9e7b0d969292cae56104678b8bea151"><code>1bb6221</code></a> Merge branch 'trunk' into 292-more-ci-checks</li>
<li><a href="https://github.com/twisted/towncrier/commit/07baa2ba4b1159462dcb212395be1de91674698d"><code>07baa2b</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/hawkowl/towncrier/issues/395">#395</a> from twisted/384-cli-help</li>
<li>Additional commits viewable in <a href="https://github.com/hawkowl/towncrier/compare/21.9.0...22.8.0">compare view</a></li>
</ul>
</details>
<br />


You can trigger a rebase of this PR by commenting ``@dependabot` rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- ``@dependabot` rebase` will rebase this PR
- ``@dependabot` recreate` will recreate this PR, overwriting any edits that have been made to it
- ``@dependabot` merge` will merge this PR after your CI passes on it
- ``@dependabot` squash and merge` will squash and merge this PR after your CI passes on it
- ``@dependabot` cancel merge` will cancel a previously requested merge and block automerging
- ``@dependabot` reopen` will reopen this PR if it is closed
- ``@dependabot` close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- ``@dependabot` ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- ``@dependabot` ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>

Changes needed for this

* Invert logic for single file. 22.8.0 fixed the logic such that single_file=False is correct when you have more than one file
* Pin versions of towncrier and sphinx towncrier to reflect this (so we get the right config)


Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jens H. Nielsen <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants