Some updates from Slovenia

Already leaving almost a month of the SoHPC behind…time goes by pretty fast when you have fun! Let’s recap the things that happened over the last few weeks.
The project first. After translating the code from Matlab into C++, I spent a few days in documenting myself and understanding the basic steps required to call a ScaLAPACK function. My aim is to include a call to the PDSYEVD function into the code for calculating the eigen decomposition of a real symmetric matrix in parallel. The eigen decomposition is in fact one of the two bottlenecks of the boundary point method. If you come across an example of a ScaLAPACK routine you can see that there is plenty of code before actually calling the function. Well, that is required in order to distribute the matrix over the processes. There are different distribution techniques: a block decomposition is good for data access, while a cyclic one allows better parallelism, due to better load balancing. In fact, ScaLAPACK uses an interpolation between the two methods: a block-cyclic data distribution. Basically you decompose the matrix into blocks and then cyclicly distribute those blocks across processes, according to the rule:
It might look intimidating at first… distributing the matrix on the processor grid was the most challenging part, but once you understand it, calling a ScaLAPACK function is not that difficult. However we soon realized that the spectral decomposition may not be the top priority. We want to deal with a large number of constraints and this mainly affects the sparse linear system. Yes, sparse matrices… I got used to love them! If a semidefinite optimization problem has no block structure, then it will probably not benefit of parallelization. However, if block structure exists (check image above) then HPC can be exploited. In order to enable parallelization I had to implement a structure that would allow us to make use of more CPU nodes. I have to admit it took me some time, but eventually managed to achieve that kind of structure. Now the parallelization process is under progress… looking forward to beating Matlab’s performance, which I have to admit I reconsidered. Matlab is actually really fast.
This keeps me pretty busy during the week. However the weekends give the opportunity to me and Ben to travel and see some of the beauties of Slovenia. I am going to mention some places that you cannot miss if you ever happen to be in Slovenia. Let’s start with the area around Postojna, which is famous all over the world for its caves. I will just leave a picture and say that it is like an underground canyon. Close to Postojna you may also visit the Predjama Grad, a castle built within a cave mouth.
Me and Ben also decided to spend a day at Lake Bled. I have to say we weren’t expecting such a beautiful place. The lake itself is located in the Julian Alps and is surrounded by mountains and forests. We had a refreshing swim at a Lido and, as a swimmer, I enjoyed the water a lot. Afterwards we went for some adventure: we had fun riding down a hill with an alpine slide. The route offered a splendid view of the lake, the castle, and the city. The image below describes it better anyway.
The second half of the SoHPC is approaching and I will spend the second month in Ljubljana. More on this later.
Leave a Reply