JSC: Speeding up quantums on Intel Xeon Phi
The past weeks at the Forschungszentrum in Juelich (Germany) have been awesome. I’ve been granted a bike to move around and I found myself enjoying the differences between my place in Spain and here. I suppose it’s the same as traveling anywhere else, but the weather, the forests and the German culture in general are a great change for me.
The Forschungszentrum itself was nothing like I expected when I came the first day. As a student that just completed his degree I was shocked to see such big place for researching. It’s just like a small town focused on research and learning. There will be hundreds (or even more) projects from very different knowledge areas in progress over here, which is just amazing.
About my work here, I’m actually working with a team trying to adapt a physic code, that was prepared for running using different nodes of the HPC here, to run on the Intel Xeon Phis (MIC) coprocessors available in the center.
The code I mention is an important computing step of the quantum chromodynamics (QCD) simulation. That’s the physical study of the hard interactions between quantums, which take place inside the nucleus of the atoms. I’ve not really been trying to understand every theoretical concept related to the physics that the code belongs as I’m doing the more engineering part.
For more details, I’ve been working on consecutive steps during this weeks:
- Understanding the basics of the code we had.
- Making the code to compile and run on the MICs.
- Testing the correctness of the results we obtain.
- Profiling the executions while changing the input parameters values, the size of the problem and the resources.
- Proposing some ideas for improving the performance.
Actually I’m working hard on points 4 and 5 and we already made some improvements, but there is still a lot of work to do. It’s also an iterative task, since every time we try any new approach steps 2 to 4 must be done again.
I have to say that I’m glad to be working on this project. I’ve being interested in this specific problems for about a year and I’m going to continue studding in this direction, so I’m learning so much useful things for my future.
In conclusion, I want to share something with all the readers. I’ve been working for first time with an English keyboard configuration programming on C/C++. I know it may be crazy to say this and maybe all of you already know it but, if you had never tried it, just do it. I could never imagine how useful and fast it was compared with my Spanish one.
The SoHPC Experience
JSC: Speeding up quantums on Intel Xeon Phi (vol. 2)
Here I am with an article on the second half of my time on the SoHPC programme. These past few weeks have been harder than the first ones, in terms of amount of work, but also more interesting than the first ones as I got more in depth with my project.
The first interesting thing I want to share was a tour we did inside the Forschungszentrum, we went to different places inside this big area of study and development. For example, we saw a new clean chamber (where there are almost no particle in the air) for working on the construction and development of nanocomponents or we found ourselves visiting a department where people work on studying neurones, by growing them and using some bio-synthetic synapses. Those are just two examples that show what I was saying in the first report: this place is so big and all people here work in research. It’s just amazing.
As a part of this tour, we also managed to go to see one of the supercomputers. While we were there we got a very detailed explanation of how it works and its actual computing capacity. That information made me feel very tiny, as I was just working on a few nodes for testing inside a smaller supercomputer called “Juropa3”. But I discovered that this supercomputer was the smallest testing one, and that the real BIG one, called “Juqueen”, was so big and powerful (it’s the second best in Europe and eighth fastest in the world!). We were able to go inside the chamber as well, and see the nodes ourselves. I’m attaching some pictures of it.
Regarding the work, I’m still improving the code I’ve mentioned in the first article. I’m glad to say that we are getting good results and there are also lots more improvements planned to be made.
More specifically, one of the things I’ve manage to do is to isolate some code from the serial part of the execution, which was thought to be needed in serial because it was done at the same time as the MPI communications, and move it to the parallel part. That made us improve some numbers in terms of Gflops, bandwidth, time, etc. It also allows us to start thinking about fusing some parallel parts into a single big one, since now there are no such serial dependencies.
I have to say that these two months have passed quite fast and that I’m realizing that I have been working very hard to understand fully the big code that they give me, and now that I’m really starting to do the most interesting and important things, that is changing code finally in the right way. It’s almost sad that now I have to stop and go home. It’s true that I was feeling a little homesick, but I also feeling like wanting to stay and continue what I started.
By the way, I’m learning lots of skills and programming patterns for parallel computing that will be useful for my next studies at the university. I’m planning to make a doctorate in this area of knowledge also, so this summer has been very productive for me.