45 research outputs found
An interface between single assignment C and vector Pascal
This dissertation contains an overview of the research Iāve been doing over in Glasgow University, which is mainly a project of developing an interface between two array programming languages, Single Assignment C and Vector Pascal, to combine them together by using the Vector Pascal code generator for Single Assignment C.
Single Assignment C provides support for multi-threading but it doesnāt contain any utilization of SIMD technology, and Vector Pascal implements array operations with the help of SIMD instruction sets of modern general processors. Thus my hypothesis is that this combination will let the program enjoy higher run-time performance compared to the one which is only compiled by using Single Assignment Cās compiler.
This dissertation explains the detail of designing and implementing this interface between these two languages; and the system to manipulate the three parts, i.e. the interface and the two languagesā compilers together to make them work automatically. The interface is generally developed based on traversal over Syntax Tree and involves works of vectorization and loop unrolling.
Meanwhile, a benchmark testing system to validate my hypothesis is created and introduced in this dissertation too, which is accompanied with the testing results and analysis
Manual and Automatic Translation From Sequential to Parallel Programming On Cloud Systems
Cloud computing has gradually evolved into an infrastructural tool for a variety of scientiļ¬c research and computing applications. It has become a trend for many institutions and organizations to migrate their products from local servers to the cloud. One of the current challenges in cloud computing is running software eļ¬ciently on cloud platforms since many legacy codes cannot be executed in parallel in cloud contexts, which is a waste of the cloudās computing power. To solve this problem, we have researched ways to translate code from sequential to parallel cloud computing using three categories of translation methods: manual, automatic, and semi-automatic.
The performance of manual translation result is better than the other two types of translationās. However, it is costly to manually redesign and convert current sequential codes into cloud codes. Thus, the automatic translation of sequential codes to parallel cloud applications is one approach that could be taken to resolve the problem of code migration to a cloud infrastructure. During this research, two automatic code translators, Java to MapReduce (J2M) and Java to Spark (J2S), are developed to translate code automatically from sequential Java to MapReduce and Spark applications. A semi-automatic translation method is proposed, which is the combination of manual and automatic translation and performs well on large amounts of data with small fragment sizes.
This dissertation provides details about our sequential to parallel cloud code translation research in last four years. The experimental results not only indicate that translators can precisely translate a sequential Java program into parallel cloud applications but also show that it can speed up performance. We expect that an almost linear rate of speedup is possible when processing large datasets. However, some constraints still need to be overcome so more features can be implemented in future work. It is believed that our translators are the ideal models for code migration and will play an important role in the transition era of cloud computing