Abstract
Star Superscalar is a task-based programming model. The programmer starts with an ordinary C program, and adds pragmas to mark functions as tasks, identifying their inputs and outputs. When the main thread reaches a task, an instance of the task is added to a run-time dependency graph, and later scheduled to run on a processor. Variants of Star Superscalar exist for the Cell Broadband Engine and SMPs.
Star Superscalar relies on the annotations provided by the programmer. If these are incorrect, the program may exhibit race conditions or exceptions deep inside the run-time system.
This paper introduces Starsscheck, a tool based on Valgrind, which helps debug Star Superscalar programs. Starsscheck verifies that the pragma annotations are correct, producing a warning if a task or the main thread performs an invalid access. The tool can be adapted to support similar programming models such as TPC. For most benchmarks, Starsscheck is faster than memcheck, the default Valgrind tool.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Bellens, P., Perez, J., Badia, R., Labarta, J.: CellSs: a programming model for the Cell BE architecture. In: Proceedings of the 2006 ACM/IEEE Conference on Supercomputing. ACM, New York (2006)
Pham, D., Behnen, E., Bolliger, M., Hofstee, H., et al.: The design methodology and implementation of a first-generation Cell processor: a multi-core SoC. In: Custom Integrated Circuits Conference, pp. 45–49 (2005)
Perez, J., Badia, R., Labarta, J.: A dependency-aware task-based programming environment for multi-core architectures. In: 2008 IEEE International Conference on Cluster Computing, pp. 142–151 (2008)
Barcelona Supercomputing Center: Cell Superscalar (CellSs) User’s Manual Version 2.2 (2009)
Barcelona Supercomputing Center: SMP Superscalar (SMPSs) User’s Manual Version 2.0 (2008)
Nethercote, N., Seward, J.: Valgrind: a framework for heavyweight dynamic binary instrumentation. In: PLDI, pp. 89–100 (2007)
Seward, J., Nethercote, N.: Using Valgrind to detect undefined value errors with bit-precision. In: Proceedings of the Annual Conference on USENIX Annual Technical Conference, USENIX Association, p. 2 (2005)
Luk, C.K., Cohn, R., Muth, R., Patil, H., Klauser, A., Lowney, G., Wallace, S., Reddi, V.J., Hazelwood, K.: Pin: building customized program analysis tools with dynamic instrumentation. In: PLDI 2005, pp. 190–200 (2005)
Tzenakist, G., Kapelonis, K., Alvanost, M., Koukost, K., Nikolopoulost, D., Bilast, A.: Tagged Procedure Calls (TPC): Efficient runtime support for task-based parallelism on the Cell Processor. In: HiPEAC 2010. LNCS, vol. 5952. Springer, Heidelberg (2010)
Blumofe, R., Joerg, C., Kuszmaul, B., Leiserson, C., Randall, K., Zhou, Y.: Cilk: An efficient multithreaded runtime system. ACM SigPlan Notices 30(8), 207–216 (1995)
IBM: Cell Broadband Engine Programming Handbook including PowerXCell 8i Version 1.11 (2009)
Balart, J., Duran, A., Gonzalez, M., Martorell, X., Ayguade, E., Labarta, J.: Nanos Mercurium: a Research Compiler for OpenMP. In: Proceedings of the European Workshop on OpenMP, vol. 2004 (2004)
Galperin, I., Rivest, R.: Scapegoat trees. In: Proceedings of the Fourth Annual ACM-SIAM Symposium on Discrete Algorithms, pp. 165–174. Society for Industrial and Applied Mathematics, Philadelphia (1993)
Feng, M., Leiserson, C.: Efficient detection of determinacy races in Cilk programs. Theory of Computing Systems 32(3), 301–326 (1999)
MIT LCS: Cilk 5.4.6 Reference Manual (1998)
Savage, S., Burrows, M., Nelson, G., Sobalvarro, P., Anderson, T.: Eraser: A dynamic data race detector for multithreaded programs. ACM Transactions on Computer Systems (TOCS) 15(4), 391–411 (1997)
Serebryany, K., Iskhodzhanov, T.: ThreadSanitizer—data race detection in practice. In: Proceedings of the Workshop on Binary Instrumentation and Applications, pp. 62–71 (2009)
Prvulovic, M.: Cord: cost-effective (and nearly overhead-free) order-recording and data race detection. In: The Twelfth International Symposium on High-Performance Computer Architecture, pp. 232–243 (February 2006)
Prvulovic, M., Torrellas, J.: ReEnact: Using thread-level speculation mechanisms to debug data races in multithreaded codes. In: Annual International Symposium on Computer Architecture, vol. 30, pp. 110–121 (2003)
IBM: Multi-Thread Run-time Analysis Tool for Java, http://www.alphaworks.ibm.com/tech/mtrat
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2010 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Carpenter, P.M., Ramirez, A., Ayguade, E. (2010). Starsscheck: A Tool to Find Errors in Task-Based Parallel Programs. In: D’Ambra, P., Guarracino, M., Talia, D. (eds) Euro-Par 2010 - Parallel Processing. Euro-Par 2010. Lecture Notes in Computer Science, vol 6271. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-15277-1_2
Download citation
DOI: https://doi.org/10.1007/978-3-642-15277-1_2
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-642-15276-4
Online ISBN: 978-3-642-15277-1
eBook Packages: Computer ScienceComputer Science (R0)