Here you can see an example of how a typical interaction with Accelogic’s Team of Experts would happen for our Software Acceleration Services. For more information on other services that we provide, please see Our Services section.
OUR FIRST CONTACT
We typically hear from you first, usually through an email or phone call, where you give us a brief summary of your software, and why you are looking for Software Acceleration experts.
Feel free to contact us by writing to firstname.lastname@example.org.
Once we receive your email and review it, we often reply suggesting an appointment with you for a no-cost consultation. It typically takes us anywhere from 8 to 48 hours to send this reply.
THE ASSESSMENT STAGE
This stage starts with a no-cost consultation, which usually consists of a phone conversation, meeting, or series of meetings between you or your code experts and our Assessment Team.
We will ask you several questions about your business, software, hardware, algorithms, performance figures, performance goals, etc. This stage is crucial for us to be able to understand your needs as accurately as possible. We understand you might not have all the answers to our questions, so we might even give you “homework” so that you can retrieve the necessary information for a successful diagnosis and conception of an initial action plan.
Here is a short list of questions that we could ask:
• What hardware platform do you run your code in (a single-processor computer, Beowulf network, small cluster, large cluster, supercomputer, or other)?
• What is the current performance of your code? Under which circumstances have you quantified it?
• What performance do you need to reach? How will this increased performance benefit your code and your business?
• How does a profile of your code look like?
• Have you ever tested your code on different hardware? If so, which hardware?
• Do you know if your code is communication-bound, memory-access bound, or compute-bound?
• Do you have any scaling plots?
• …and it goes on like that…
Gathering all this information allows us to assess several crucial aspects of your software, and identify what changes it might need to achieve your desired performance. Our experience has taught us that there is no strict rule on what a specific software might need. In some cases, a given code might need just a few tweaks, whilst in other cases it might be starving for a complete redesign. However, it is typically something in between. There are usually three typical approaches to Software Acceleration:
• Changing the hardware
• Redesigning/optimizing the software code and data structures, and/or
• Changing the underlying algorithms.
We consider all of these approaches (and possible mixtures of them) depending on your particular technical and budget constraints. The Assessment Stage will deliver a list of the tasks that should be undertaken to accelerate your software. For example, if your problem is simple, we could suggest to go straight to a deep software cleanup (i.e., Stage 4 below). However, if your problem is more complex, a more profound analysis is required, and the best solution will be found in Stage 3.
SOFTWARE AUDIT AND SCRUTINY STAGE
During this stage we dive deep into your code to analyze absolutely everything that could hamper its speed performance.
This stage has been many times, especially for large projects, the cornerstone of our success. Following is a list with some of the tasks we could perform on your software during this stage:
• Detailed Profiling and Bottlenecks Identification. We perform a meticulous profiling analysis on your code’s components when these are run on different scenarios. We then proceed to determine which are the main and secondary bottlenecks hampering the software’s performance during typical running cases. Note that any given software can only have four types of bottlenecks: (1) Memory-access bottleneck, (2) Communication bottleneck, (3) Compute bottleneck, or (4) I/O bottleneck. We thus take an exhaustive look at anything blocking your software’s speed so that we can determine the best ways to proceed for full acceleration.
• Algorithm and Hardware Platform Analysis. We examine and study the most crucial algorithms in your code to determine how they affect data movement and performance in general. We then couple this information with an exhaustive examination of the hardware platforms your code is run on in order to produce strategies for acceleration.
• “Business Needs” and ROI Analysis. We interact closely with the code’s managers to understand how the software affects the business’ operations and needs. After accurately establishing performance forecasts for the accelerated software, we report quantitative figures on Return On Investment expectations for short, medium, and long-term action.
• Scientific Analysis (for HPC codes). We perform a comprehensive analysis to determine detailed aspects on your software’s domain decomposition, grid structures, typical matrix substructures, main memory access patterns, inter-processor communication, numerical representation of physical variables, MPI vs OpenMP tradeoffs, cache management, and strong and weak scaling, among many others. With this information we produce a detailed roadmap for the code’s acceleration.
• Contingency plans preparation. Needless to say, we ensure success of the project through careful analysis and setup of contingency plans that cover all possible fail scenarios.
SOFTWARE CLEANUP AND REVAMPING STAGE
In this stage we perform the changes on the software through an incremental approach.
For this purpose we also work closely with the code’s developers to fine-tune the code for more efficient use and faster performance. This stage also includes a “Performance Testing and Modeling” component, where we produce robust testbeds that enable extensive testing and modeling of all improvements exerted on your software. We thus ensure industrial-quality robustness in our process
CUSTOMER TRAINING AND KNOW-HOW TRANSFER
After successful execution of the project, our customers are usually interested in having us lecture or give courses at their offices and/or labs.
We are always more than willing to train your staff on best practices for Software Acceleration.