PDF (double-sided) - Physics Department, UCSB - University of ...

PDF (double-sided) - Physics Department, UCSB - University of ... PDF (double-sided) - Physics Department, UCSB - University of ...

web.physics.ucsb.edu
from web.physics.ucsb.edu More from this publisher
27.09.2014 Views

7.3.4 Performance Addressing the Performance Requirement is a more pervasive task that spans not only the general design criteria, but also every single line of implementing code. It involves decisions like the exact choice of programming language for each module, the threading structure for multi-threaded Modules (specifically the LabRAD Manager), the binary layout of the protocol itself that influences parseability and the amount of traffic, etc. It also dictates in part the way in which the project needs to be broken up into Modules to allow for efficient implementation of concepts like pipelining and parallel processing. 7.3.5 Open-Source Due to its very general design, only a few Modules in our LabRAD Setup are specific to the experiment at hand. A large fraction of the system can be useful in many other labs that are facing the same issues, like code base maintainability, remote access, etc. We therefore decided to share the project with the world and publish it as open source software under the GPL license on SourceForge.net. This not only gives us access to the software maintenance tools that SourceForge provides, but also gives other developers from around the world a chance to join the project and share Modules with us which they developed but may become 136

useful to us in the future. Beyond that, it forces us to do a good job documenting the project which will be useful for future members joining the group. 7.4 Components The LabRAD platform consists of three fundamental components on which every experiment-specific implementation is built: The LabRAD Protocol defines the exact binary layout of the network packets that are exchanged between the different components. The LabRAD Manager routes packets between different Modules and provides some basic system features. The LabRAD APIs provide access to the LabRAD system from different programming languages. 7.4.1 LabRAD Protocol The LabRAD Protocol is designed for both speed and flexibility. Data is encapsulated in Packets that consist of routing and context information followed by an arbitrary number of Records that each wrap up one Request or Response for a Server’s Setting. The ability to send multiple Requests in one Packet can reduce network traffic significantly and can be used for other purposes like defining atomic operations, etc. LabRAD uses binary encoding of the data to reduce overhead. The Protocol 137

7.3.4 Performance<br />

Addressing the Performance Requirement is a more pervasive task that spans<br />

not only the general design criteria, but also every single line <strong>of</strong> implementing code.<br />

It involves decisions like the exact choice <strong>of</strong> programming language for each module,<br />

the threading structure for multi-threaded Modules (specifically the LabRAD<br />

Manager), the binary layout <strong>of</strong> the protocol itself that influences parseability and<br />

the amount <strong>of</strong> traffic, etc. It also dictates in part the way in which the project<br />

needs to be broken up into Modules to allow for efficient implementation <strong>of</strong> concepts<br />

like pipelining and parallel processing.<br />

7.3.5 Open-Source<br />

Due to its very general design, only a few Modules in our LabRAD Setup are<br />

specific to the experiment at hand. A large fraction <strong>of</strong> the system can be useful<br />

in many other labs that are facing the same issues, like code base maintainability,<br />

remote access, etc. We therefore decided to share the project with the world and<br />

publish it as open source s<strong>of</strong>tware under the GPL license on SourceForge.net.<br />

This not only gives us access to the s<strong>of</strong>tware maintenance tools that SourceForge<br />

provides, but also gives other developers from around the world a chance to join<br />

the project and share Modules with us which they developed but may become<br />

136

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!