Healthcare
Discuss prevalent matters regarding healthcare topics
22 Discussions

Parallel Programming Techniques for Extracting Rectilinear Images

Doug_B_Intel
Employee
0 0 4,139

Last week, the third blog in a series about 360-degree images described serial programming optimization techniques that resulted in a 170-time improvement over the initial implementation.  A recap of the three previously published blogs is:

  1. Introduction to 360-Degree Videos and Imaging 
  2. Existing Open Source for 360-Degree Projection
  3. Execution Framework and Serial Code Optimizations

This week, the fourth blog in the series, Execution Framework and Parallel Code Optimizations, discusses parallel programming techniques resulting from the open industry standards called oneAPI, managed by the Unified Acceleration Foundation

Since modern hardware typically has multiple compute elements in both CPUs and GPUs, dividing coding tasks into independent work items that can be computed in parallel often leads to improved throughput.  The techniques described in the fourth blog utilize a use case of extracting a rectilinear image from an equirectangular (360-degree) image. Still, the programming techniques described in the blog also generalize to many other use cases.  

As described in the blog, utilizing the free toolchain, Intel® oneAPI Base Toolkit, and changing to parallel programming constructs moves the code from a 170-time improvement to between 1000 and 1700-time improvement.  Of course, other use cases could see different results depending on a lot of factors such as the efficiency of the initial algorithm, whether the algorithm can be sub-divided into independent computational pieces, the amount of precision (e.g., 64-bit floating point down to 8-bit integers) required to compute the proper outcome, the capabilities of the hardware platform, and so on.  However, investigating parallel processing may be worthwhile for use cases demanding high performance.

Thus, if you have code that could benefit from better performance, have a look at Execution Framework and Parallel Code Optimizations and let us know in the comments if you were successful in improving your code.

Stay tuned next week for the final blog in the series, which will introduce a second framework to utilize both the CPU and GPU simultaneously and discuss some challenges.  If you are interested in being notified when that is posted, subscribe to get the latest updates from the team. 

About the Intel Health and Life Sciences 

Contact Intel's Health and Life Sciences team at health.lifesciences@intel.com or learn more about what we do at https://www.intel.com/health 

About the Author

Doug Bogia received his Ph.D. in computer science from the University of Illinois, Urbana-Champaign, and works at Intel Corporation. He enjoys photography, woodworking, programming, and optimizing solutions to run as fast as possible on a given piece of hardware. Connect with him on LinkedIn https://www.linkedin.com/in/doug-bogia-4653696/ by mentioning this blog.