Abstract
Many application domains including graph analytics, the Internet-of-Things, precision agriculture, and media processing operate on noisy data and/or produce approximate results. These applications can distribute computation across multiple (often resource-constrained) processing units. Analyzing the reliability and accuracy of such applications is challenging, since most existing techniques operate on specific fixed error models, check for individual properties, or can only be applied to sequential programs.
We present Diamont, a system for dynamic monitoring of uncertainty properties in distributed programs. Diamont programs consist of distributed processes that communicate via asynchronous message passing. Diamont includes datatypes that dynamically monitor uncertainty in data and provides support for checking predicates over the monitored uncertainty at runtime. We also present a general methodology for verifying the soundness of the runtime system and optimizations using canonical sequentialization.
We implemented Diamont for a subset of the Go language and evaluated eight programs from precision agriculture, graph analytics, and media processing. We show that Diamont can prove important end-to-end properties on the program outputs for significantly larger inputs compared to prior work, with modest execution time overhead: 3% on average and 16.3% at maximum.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
References
Achour, S., Rinard, M.: Energy efficient approximate computation with Topaz. In: OOPSLA (2015)
Ahmad, M., Hijaz, F., Shi, Q., Khan, O.: CRONO: a benchmark suite for multithreaded graph algorithms executing on futuristic multicores. In: IISWC (2015)
Bakst, A., Gleissenthall, K.v., Kici, R.G., Jhala, R.: Verifying distributed programs via canonical sequentialization. In: OOPSLA (2017)
Bornholt, J., Mytkowicz, T., McKinley, K.S.: Uncertain \(<\)T\(>\): a first-order type for uncertain data. In: ASPLOS (2014)
Boston, B., Gong, Z., Carbin, M.: Leto: verifying application-specific hardware fault tolerance with programmable execution models. In: OOPSLA (2018)
Boston, B., Sampson, A., Grossman, D., Ceze, L.: Probability type inference for flexible approximate programming. In: OOPSLA (2015)
Boyapati, R., Huang, J., Majumder, P., Yum, K.H., Kim, E.J.: APPROX-NoC: a data approximation framework for network-on-chip architectures. In: ISCA (2017)
Carbin, M., Kim, D., Misailovic, S., Rinard, M.: Proving acceptability properties of relaxed nondeterministic approximate programs. PLDI 47, 169–180 (2012)
Carbin, M., Kim, D., Misailovic, S., Rinard, M.: Verified integrity properties for safe approximate program transformations. In: PEPM (2013)
Carbin, M., Misailovic, S., Rinard, M.: Verifying quantitative reliability for programs that execute on unreliable hardware. In: OOPSLA (2013)
Chen, Y., Louri, A.: An approximate communication framework for network-on-chips. IEEE Trans. Parallel Distrib. Syst. 31, 1434–1446 (2020)
Darulova, E., Izycheva, A., Nasir, F., Ritter, F., Becker, H., Bastian, R.: Daisy-framework for analysis and optimization of numerical programs. In: TACAS (2018)
Darulova, E., Kuncak, V.: Trustworthy numerical computation in Scala. In: OOPSLA (2011)
Darulova, E., Kuncak, V.: Certifying solutions for numerical constraints. In: Qadeer, S., Tasiran, S. (eds.) RV 2012. LNCS, vol. 7687, pp. 277–291. Springer, Heidelberg (2013). https://doi.org/10.1007/978-3-642-35632-2_27
de Kruijf, M., Nomura, S., Sankaralingam, K.: Relax: an architectural framework for software recovery of hardware faults. ISCA 38, 497–508 (2010)
Dean, J., Ghemawat, S.: MapReduce: simplified data processing on large clusters. OSDI (2004)
Fernando, V., Franques, A., Abadal, S., Misailovic, S., Torrellas, J.: Replica: a wireless manycore for communication-intensive and approximate data. In: ASPLOS (2019)
Fernando, V., Joshi, K., Laurel, J., Misailovic, S.: Appendix to Diamont (2021). https://vimuth.github.io/diamont/appendix.pdf
Fernando, V., Joshi, K., Misailovic, S.: Verifying safety and accuracy of approximate parallel programs via canonical sequentialization. In: OOPSLA (2019)
Golubovic, N., Krintz, C., Wolski, R., Sethuramasamyraja, B., Liu, B.: A scalable system for executing and scoring K-means clustering techniques and its impact on applications in agriculture. Int. J. Big Data Intell. 6, 163–175 (2019)
Joshi, K., Fernando, V., Misailovic, S.: Statistical algorithmic profiling for randomized approximate programs. In: ICSE (2019)
Joshi, K., Fernando, V., Misailovic, S.: Aloe: verifying reliability of approximate programs in the presence of recovery mechanisms. In: CGO (2020)
Lahiri, S., Haran, A., He, S., Rakamaric, Z.: Automated differential program verification for approximate computing. Technical report (2015)
Liu, T.: Datasheet for AM2302 Sensor (2020). https://cdn-shop.adafruit.com/datasheets/Digital+humidity+and+temperature+sensor+AM2302.pdf
Maderbacher, B., Karl, A.F., Bloem, R.: Placement of runtime checks to counteract fault injections. In: Deshmukh, J., Ničković, D. (eds.) RV 2020. LNCS, vol. 12399, pp. 241–258. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-60508-7_13
Misailovic, S., Carbin, M., Achour, S., Qi, Z., Rinard, M.: Chisel: reliability- and accuracy-aware optimization of approximate computational kernels. In: OOPSLA (2014)
Page, L., Brin, S., Motwani, R., Winograd, T.: The PageRank citation ranking: bringing order to the web. Technical report (1999)
Panchekha, P., Sanchez-Stern, A., Wilcox, J.R., Tatlock, Z.: Automatically improving accuracy for floating point expressions. In: PLDI (2015)
Paradis, L., Han, Q.: A survey of fault management in wireless sensor networks. J. Netw. Syst. Manag. 15, 171–190 (2007). https://doi.org/10.1007/s10922-007-9062-0
Ranjan, A., Venkataramani, S., Fong, X., Roy, K., Raghunathan, A.: Approximate storage for energy efficient spintronic memories. In: DAC 2015 (2015)
Recht, B., Re, C., Wright, S., Niu, F.: HOGWILD: a lock-free approach to parallelizing stochastic gradient descent. In: Advances in Neural Information Processing Systems (2011)
Ringenburg, M., Sampson, A., Ackerman, I., Ceze, L., Grossman, D.: Monitoring and debugging the quality of results in approximate programs. In: ASPLOS (2015)
Rubio-González, C., et al.: Precimonious: tuning assistant for floating-point precision. In: SC (2013)
Samadi, M., Jamshidi, D.A., Lee, J., Mahlke, S.: Paraprox: pattern-based approximation for data parallel applications. In: ASPLOS (2014)
Sampson, A., et al.: Accept: a programmer-guided compiler framework for practical approximate computing. Technical report (2015)
Sampson, A., Panchekha, P., Mytkowicz, T., McKinley, K., Grossman, D., Ceze, L.: Expressing and verifying probabilistic assertions. In: PLDI (2014)
Sampson, A., Dietl, W., Fortuna, E., Gnanapragasam, D., Ceze, L., Grossman, D.: EnerJ: approximate data types for safe and general low-power computation. In: PLDI (2011)
Sanchez-Stern, A., Panchekha, P., Lerner, S., Tatlock, Z.: Finding root causes of floating point error. In: PLDI (2018)
Sen, K., Viswanathan, M., Agha, G.: Statistical model checking of black-box probabilistic systems. In: Alur, R., Peled, D.A. (eds.) CAV 2004. LNCS, vol. 3114, pp. 202–215. Springer, Heidelberg (2004). https://doi.org/10.1007/978-3-540-27813-9_16
Sidiroglou, S., Misailovic, S., Hoffmann, H., Rinard, M.: Managing performance vs. accuracy trade-offs with loop perforation. In: FSE (2011)
Stanley-Marbell, P., et al.: Exploiting errors for efficiency: a survey from circuits to applications. ACM Comput. Surv. J. 53, 1–39 (2020)
Stevens, J.R., Ranjan, A., Raghunathan, A.: AxBA: an approximate bus architecture framework. In: ICCAD (2018)
TensorFlow Developers: Tensorflow (2021). https://doi.org/10.5281/zenodo.5159865. https://www.tensorflow.org
Yazdanbakhsh, A., Mahajan, D., Esmaeilzadeh, H., Lotfi-Kamran, P.: AxBench: a multiplatform benchmark suite for approximate computing. IEEE Design Test 34(2), 60–68 (2017)
Zhuang, W., Chen, X., Tan, J., Song, A.: An empirical analysis for evaluating the link quality of robotic sensor networks. In: WCSP (2009)
Acknowledgements
We thank the anonymous reviewers for their useful suggestions. The research presented in this paper was supported in part by NSF Grants No. CCF-1846354, CCF-1956374, CCF-2028861, and CCF-2008883, USDA Grant No. NIFA-2024827, and a gift from Facebook.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2021 Springer Nature Switzerland AG
About this paper
Cite this paper
Fernando, V., Joshi, K., Laurel, J., Misailovic, S. (2021). Diamont: Dynamic Monitoring of Uncertainty for Distributed Asynchronous Programs. In: Feng, L., Fisman, D. (eds) Runtime Verification. RV 2021. Lecture Notes in Computer Science(), vol 12974. Springer, Cham. https://doi.org/10.1007/978-3-030-88494-9_10
Download citation
DOI: https://doi.org/10.1007/978-3-030-88494-9_10
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-88493-2
Online ISBN: 978-3-030-88494-9
eBook Packages: Computer ScienceComputer Science (R0)