Introducing the Task-Aware Storage I/O (TASIO) Library
Task-based programming models are excellent tools to parallelize and seamlessly load balance an application workload. However, the integration of I/O intensive applications and task-based programming models is lacking. Typically, I/O operations stall the requesting thread until the data is serviced by the backing device. Because the core where the thread was running becomes idle, it should be possible to overlap the data query operation with either computation workloads or even more I/O operations. Nonetheless, overlapping I/O tasks with other tasks entails an extra degree of complexity currently not managed by programming models’ runtimes. In this work, we focus on integrating storage I/O into the tasking model by introducing the Task-Aware Storage I/O (TASIO) library. We test TASIO extensively with a custom benchmark for a number of configurations and conclude that it is able to achieve speedups up to 2x depending on the workload, although it might lead to slowdowns if not used with the right settings.
KeywordsTask-based programming models I/O OmpSs-2 OpenMP HPC
This project is supported by the European Union’s Horizon 2021 research and innovation programme under the grant agreement No 754304 (DEEP-EST), the Ministry of Economy of Spain through the Severo Ochoa Center of Excellence Program (SEV-2015-0493), by the Spanish Ministry of Science and Innovation (contract TIN2015-65316-P) and by the Generalitat de Catalunya (2017-SGR-1481). Also, the authors would like to acknowledge that the test environment (Cobi) was ceded by Intel Corporation in the frame of the BSC - Intel collaboration.
- 1.Axboe, J.: Fio-flexible io tester (2014). http://freecode.com/projects/fio
- 3.Bhattacharya, S., Pratt, S., Pulavarty, B., Morgan, J.: Asynchronous I/O support in linux 2.5. In: Proceedings of the Linux Symposium, pp. 371–386 (2003)Google Scholar
- 4.E Community: Clarifying direct IO’s semantics (2019). https://ext4.wiki.kernel.org/index.php/Clarifying_Direct_IO%27s_Semantics#Allocating_writes. Accessed 7 May 2019
- 5.Intel Corporation: Intel SSD 905P series (2019). https://www.intel.com/content/www/us/en/products/memory-storage/solid-state-drives/gaming-enthusiast-ssds/optane-905p-series/905p-960gb-aic-20nm.html. Accessed 7 May 2019
- 7.Duran, A., Perez, J.M., Ayguadé, E., Badia, R.M., Labarta, J.: Extending the OpenMP tasking model to allow dependent tasks. In: Eigenmann, R., de Supinski, B.R. (eds.) IWOMP 2008. LNCS, vol. 5004, pp. 111–122. Springer, Heidelberg (2008). https://doi.org/10.1007/978-3-540-79561-2_10CrossRefGoogle Scholar
- 8.OpenMP Architecture Review Board: OpenMP application program interface version 5.0 (2018). http://www.openmp.org. Accessed 7 May 2019
- 9.Perez, J.M., Beltran, V., Labarta, J., Ayguadé, E.: Improving the integration of task nesting and dependencies in OpenMP. In: 2017 IEEE International Parallel and Distributed Processing Symposium (IPDPS), pp. 809–818. IEEE (2017)Google Scholar
- 10.Sala, K., Teruel, X., Perez, J.M., Peña, A.J., Beltran, V., Labarta, J.: Integrating blocking and non-blocking MPI primitives with task-based programming models. Parallel Comput. 85, 153–166 (2019). https://doi.org/10.1016/j.parco.2018.12.008. http://www.sciencedirect.com/science/article/pii/S0167819118303326CrossRefGoogle Scholar