I know there are hundreds of C compilers and that I am just reinventing the wheel. But my main goal is just learning. I have already written another compiler before, but it was just for a toy language. For this reason, I would like to build a compiler for a "real-life" language, and C is an important but yet small language. I want to master the whole process of a fully working compiler for a "real-life" language, and afterwards continue to build on top of this knowledge, since I have been doing research on automatic parallelisation, and I am interested in optimising compilers in general.
Even if this project doesn't turn out to be useful for a lot of people, I hope at least to inspire a few people to tackle big problems.
For the stencil computation, if the input and output array together are greater than the GPU memory, there is an automatic and transparent method for tiling the data array into the GPU's memory, computing the stencil pattern in several chunks.
PSkel offers a high-level API for programming for heterogeneous parallel architectures, including both multi-core CPUs and GPUs.
PSkel is a high-performance framework for parallel skeletons. Using a high-level abstraction for parallel skeletons, PSkel releases the programmer from the responsibility of writing boiler-plate code for parallel programming in heterogeneous architectures, e.g., explicit synchronization and data exchanges between GPU memory and main memory. Furthermore, the framework translates the abstractions described using its application programming interface (API) into lowlevel C++ code compatible with Intel TBB, OpenMP and NVIDIA CUDA. PSkel's API is mainly based on a C++ template library that implements parallel skeletons and provides useful constructs for developing parallel applications. The framework provides an API for manipulating input and output data; specifying stencil computations; encapsulating memory management, computations, and runtime details.
I think it can be used in other operating systems with little (if any) change, as far as you have all the python libraries requested. But, I've only tested it with Ubuntu.
That would be great!
I have some future plans for using it with some robots (https://www.youtube.com/watch?v=X5nTHwl0K_w), with smart-house technology, like "turn on/off the lights".