Difference between revisions of "Heart Wall"

From Rodinia
Jump to: navigation, search
 
(31 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The Heart Wall application tracks the movement of a mouse heart over a sequence of 104 609x590 ultrasound images to record response to the stimulus. In its initial stage, the program performs image processing operations on the first image to detect initial, partial shapes of inner and outer heart walls. These operations include: edge detection, SRAD despeckling (also part of Rodinia suite), morphological transformation and dilation. In order to reconstruct approximated full shapes of heart walls, the program generates ellipses that are superimposed over the image and sampled to mark points on the heart walls (Hough Search). In its final stage (Heart Wall Tracking presented here), program tracks movement of surfaces by detecting the movement of image areas under sample points as the shapes of the heart walls change throughout the sequence of images.
+
The Heart Wall application tracks the movement of a mouse heart over a sequence of 104 609x590 ultrasound images to record response to the stimulus. In its initial stage, the program performs image processing operations on the first image to detect initial, partial shapes of inner and outer heart walls. These operations include: edge detection, SRAD despeckling (also part of Rodinia suite) [2], morphological transformation and dilation. In order to reconstruct approximated full shapes of heart walls, the program generates ellipses that are superimposed over the image and sampled to mark points on the heart walls (Hough Search). In its final stage (Heart Wall Tracking presented here) [1], program tracks movement of surfaces by detecting the movement of image areas under sample points as the shapes of the heart walls change throughout the sequence of images.  
  
===SRAD===
+
Only two stages of the application, SRAD and Tracking, contain enough data/task parallelism to be interesting for Rodinia suite, and therefore they are presented here separately. The separation of these two parts of the application allows easy analysis of the distinct types of workloads. However, in the near future, we plan to convert the entire application to OpenMP and CUDA and make all of its parts available together as well as separately in the Rodinia suite.
  
SRAD (Speckle Reducing Anisotropic Diffusion) is a diffusion method for ultrasonic and radar imaging applications based on
+
Papers:<br>
partial differential equations (PDEs). It is used to remove locally correlated noise, known as speckles, without destroying important image features.  
+
[1] L. G. Szafaryn, K. Skadron, and J. J. Saucerman. "Experiences Accelerating MATLAB Systems Biology Applications." In Proceedings of the Workshop on Biomedicine in Computing: Systems, Architectures, and Circuits (BiC) 2009, in conjunction with the 36th IEEE/ACM International Symposium on Computer Architecture (ISCA), June 2009. ([http://www.cs.virginia.edu/~lgs9a/publications/09_isca_bic_paper.pdf pdf])<br>
 +
[2] Y. Yu, S. Acton, Speckle reducing anisotropic diffusion, IEEE Transactions on Image Processing 11(11)(2002) 1260-1270. ([http://www.cs.virginia.edu/~lgs9a/rodinia/heartwall/srad/paper_2.pdf pdf])<br>
  
Our CUDA Implementation is based on the [http://people.virginia.edu/~sc5nf/SRAD.m Matlab code] provided by Prof. Scott Acton's group in the U.Va Department of Electrical Engineering. The typical inputs to the program are the ultrasound images with each point representing a pixel in the image. Currently the computation grid in our released CUDA version is filled with random float numbers. The details of the algorithm is provided in the article:
+
Presentation Slides:<br>
 
+
[1] L. G. Szafaryn, K. Skadron. "Experiences Accelerating MATLAB Systems Biology Applications - Heart Wall Tracking". ([http://www.cs.virginia.edu/~lgs9a/rodinia/heartwall/tracking/tracking.ppt ppt])<br>
Y. Yu, S. Acton, Speckle reducing anisotropic diffusion, IEEE Transactions on Image Processing 11(11)(2002) 1260-1270 [http://people.virginia.edu/~sc5nf/01097762.pdf pdf]
+
 
+
Discussion of SRAD in the context of Heart Wall application is available here: L.G. Szafaryn, K. Skadron and J. Saucerman. "Experiences Accelerating MATLAB Systems Biology Applications." in Workshop on Biomedicine in Computing (BiC) at International Symposium on Computer Architecture (ISCA), June 2009. http://www.cs.virginia.edu/~lgs9a/publications/isca_bic_09.pdf
+
  
 
===Tracking===
 
===Tracking===
  
Tracking presented here is the final stage of the Heart Wall application. The actual parallel computation that accounts for almost all of the execution time (depending on the number of ultrasound images) takes place in this stage. Therefore we present it separated from the other stages of the application to allow easy analysis of this particular type of workload.
+
Tracking is the final stage of the Heart Wall application. It takes the positions of heart walls from the first ultrasound image in the sequence as determined by the initial detection stage in the application. Tracking code is implemented in the form of multiple nested loops that process batches of 10 frames and 51 points in each image. Displacement of heart walls is detected by comparing currently processed frame to the template frame which is updated after processing a batch of frames. There is a sequential dependency between processed frames. The processing of each point consist of a large number of small serial steps with interleaved control statements. Each of the steps involves a small amount of computation performed only on a subset of entire image. This stage of the application accounts for almost all of the execution time (the exact ratio depends on the number of ultrasound images).
 
+
Tracking stage takes the positions of heart walls from the first ultrasound image in the sequence as determined by the initial detection stage in the application. Tracking process is implemented in the form of multiple nested loops that process batches of 10 frames and 51 points in each image. Displacement of heart walls is detected by comparing currently processed frame to the template frame which is updated after processing a batch of frames. There is a sequential dependency between processed frames. The processing of each point consist of a large number of small serial steps with interleaved control statements. Each of the steps involves a small amount of computation performed only on a subset of entire image.  
+
  
The original code was written in MATLAB (interpreted with some functions compiled) with performance approaching that of pure C version. Multi-threaded OpenMP version of the code running on a quad-core processor achieves over 4x speedup compared to single-threaded C version. Partitioning of the working set between caches and avoiding of cache-trashing contribute to the performance. When running CUDA version, the GPU hardware is underutilized because of the limited amount of computation at each computation step. Also the GPU overhead (data transfer and kernel launch) are significant. Large size of processed images and lack temporal locality did not allow for utilization of fast shared memory. In order to provide better speedup (15x), more drastic GPU optimization techniques that sacrificed modularity (in order to include code in one kernel call) were required. These techniques also combined unrelated functions and data transfers in single kernels.
+
Partitioning of the working set between caches and avoiding of cache trashing contribute to the performance. CUDA implementation of this code is a classic example of the exploitation of braided parallelism. Processing of sample points is assigned to multiprocessors (TLP), while processing of individual pixels in each sample image is assigned to processors inside each multiprocessor. However, each GPU multiprocessor is usually underutilized because of the limited amount of computation at each computation step. Large size of processed images and lack temporal locality did not allow for utilization of fast shared memory. Also the GPU overhead (data transfer and kernel launch) are significant. In order to provide better speedup, more drastic GPU optimization techniques that sacrificed modularity (in order to include code in one kernel call) were used. These techniques also combined unrelated functions and data transfers in single kernels.
  
In order to run the application, the number of frames to be processed needs to be specified as a parameter on the command line. This number cannot be larger than the number of frames in the video file that the application uses (104 frames in this case).
+
<!--
 +
Input ([http://www.cs.virginia.edu/~lgs9a/rodinia/heartwall/tracking/hw_tracking_input.tar.gz tar.gz]) ([http://www.cs.virginia.edu/~lgs9a/rodinia/heartwall/tracking/hw_tracking_input_2.tar.gz tar.gz])<br>
  
 +
OpenMP Version: ([http://www.cs.virginia.edu/~lgs9a/rodinia/heartwall/tracking/hw_tracking_openmp_code.tar.gz tar.gz])<br>
  
 +
CUDA Version: ([http://www.cs.virginia.edu/~lgs9a/rodinia/heartwall/tracking/hw_tracking_cuda_code.tar.gz tar.gz])<br>
  
For more information, see:<br>
+
OpenCL Version: ([http://www.cs.virginia.edu/~lgs9a/rodinia/heartwall/tracking/hw_tracking_opencl_code.tar.gz tar.gz])<br>
Paper: L.G. Szafaryn, K. Skadron and J. Saucerman. "Experiences Accelerating MATLAB Systems Biology Applications." in Workshop on Biomedicine in Computing (BiC) at the International Symposium on Computer Architecture (ISCA), June 2009. http://www.cs.virginia.edu/~lgs9a/publications/isca_bic_09.pdf <br>
+
-->
Presentation Slides: L.G. Szafaryn, K. Skadron. "Experiences Accelerating MATLAB Systems Biology Applications - Heart Wall Tracking". http://www.cs.virginia.edu/~lgs9a/rodinia/hwt/hwt.ppt
+

Latest revision as of 18:39, 25 June 2015

The Heart Wall application tracks the movement of a mouse heart over a sequence of 104 609x590 ultrasound images to record response to the stimulus. In its initial stage, the program performs image processing operations on the first image to detect initial, partial shapes of inner and outer heart walls. These operations include: edge detection, SRAD despeckling (also part of Rodinia suite) [2], morphological transformation and dilation. In order to reconstruct approximated full shapes of heart walls, the program generates ellipses that are superimposed over the image and sampled to mark points on the heart walls (Hough Search). In its final stage (Heart Wall Tracking presented here) [1], program tracks movement of surfaces by detecting the movement of image areas under sample points as the shapes of the heart walls change throughout the sequence of images.

Only two stages of the application, SRAD and Tracking, contain enough data/task parallelism to be interesting for Rodinia suite, and therefore they are presented here separately. The separation of these two parts of the application allows easy analysis of the distinct types of workloads. However, in the near future, we plan to convert the entire application to OpenMP and CUDA and make all of its parts available together as well as separately in the Rodinia suite.

Papers:
[1] L. G. Szafaryn, K. Skadron, and J. J. Saucerman. "Experiences Accelerating MATLAB Systems Biology Applications." In Proceedings of the Workshop on Biomedicine in Computing: Systems, Architectures, and Circuits (BiC) 2009, in conjunction with the 36th IEEE/ACM International Symposium on Computer Architecture (ISCA), June 2009. (pdf)
[2] Y. Yu, S. Acton, Speckle reducing anisotropic diffusion, IEEE Transactions on Image Processing 11(11)(2002) 1260-1270. (pdf)

Presentation Slides:
[1] L. G. Szafaryn, K. Skadron. "Experiences Accelerating MATLAB Systems Biology Applications - Heart Wall Tracking". (ppt)

Tracking

Tracking is the final stage of the Heart Wall application. It takes the positions of heart walls from the first ultrasound image in the sequence as determined by the initial detection stage in the application. Tracking code is implemented in the form of multiple nested loops that process batches of 10 frames and 51 points in each image. Displacement of heart walls is detected by comparing currently processed frame to the template frame which is updated after processing a batch of frames. There is a sequential dependency between processed frames. The processing of each point consist of a large number of small serial steps with interleaved control statements. Each of the steps involves a small amount of computation performed only on a subset of entire image. This stage of the application accounts for almost all of the execution time (the exact ratio depends on the number of ultrasound images).

Partitioning of the working set between caches and avoiding of cache trashing contribute to the performance. CUDA implementation of this code is a classic example of the exploitation of braided parallelism. Processing of sample points is assigned to multiprocessors (TLP), while processing of individual pixels in each sample image is assigned to processors inside each multiprocessor. However, each GPU multiprocessor is usually underutilized because of the limited amount of computation at each computation step. Large size of processed images and lack temporal locality did not allow for utilization of fast shared memory. Also the GPU overhead (data transfer and kernel launch) are significant. In order to provide better speedup, more drastic GPU optimization techniques that sacrificed modularity (in order to include code in one kernel call) were used. These techniques also combined unrelated functions and data transfers in single kernels.