As I have to parellize some programs developed in my new lab, I monitor CPU usage during thier execution. I do not usually need MPI to optimize them (although sometimes it is needed), only OpenMP, which means I can track /proc/ to get CPU and instantaneously memory usages.
So I wrote a small script that can be used by anyone for this purpose. I’ll explain how it works now.
Continue reading Monitoring CPU usage in multithreaded applications
For four years I’ve been researching the intersting field of manifold learning. Indeed, I’ve defended my PhD thesis last friday and now I have a PhD in electronics, electrotechnics and automatism in the university Louis Pasteur in Strasbourg, France. Those years after my engineering school allowed me to read and to learn a lot, but I’m still glad those years are over.
During these years, I enjoyed looking for new solutions for my problems, and it helped me discover some technologies I didn’t really master (like Python but also C++, parallel computing, … now I can use some of them safely). So this is my advice to every new PhD student: read a lot, and not only articles or books in your field, but also in the other fields, like the tools you may use (Computer Science mainly) so that you can use the best of them (it takes some time, but you’ll be rewarded in the end).
And before I forget: read http://phdcomics.com/ (my favourite character being Mike, although since he’s doing a post-doc, we don’t see him much :().
Contrary to what the title may hint to, this book is an introduction to C++ and the Qt library. And in the process, the authors tried to teach some good practices through design patterns. So if you’re a good C++ or Qt programer, this book is not for you. If you’re a beginner, the answer is in my review.
Continue reading Book review: An Introduction to Design Patterns in C++ with Qt4
I got this book from a partnership between http://www.developpez.com/ and O’Reilly. Thanks to both of them.
What defines “beautiful code”? How do people think a beautiful code should look like? This isn’t a simple question to answer, so this book asked several lead programmers (Ruby, Python, C, C++, Java, Perl, …) some beautiful code they wrote or they encountered. And if some want to answer “think about a robust, simple to extend code and that will be it” (and I would be one of them before I read the book), there are some code that would not fit this profile.
Continue reading Book review: Beautiful Code: Leading Programmers Explain How They Think
Two months ago, my last post was on regression. I’d like to start this new year with some videos on how my algorithms behave.
Continue reading Dimensionality reduction: videos in regression algorithms
Once the data set is reduced (see my first posts if you’re jumping on the bandwagon), there are several ways of mapping this reduced space to the original space:
- you can interpolate the data in the original space based on an interpolation in the reduced space, or
- you create an approximation of the mapping with a multidimensional function (B-splines, …)
When using the first solution, if you map one of the reduced point used for the training, you get the original point. With the second solution, you get a close point. If the data set you have is noisy you should use the second solution, not the first. And if you are trying to compress data (lossly compression), you can not use the first one, as you need the original points to get new interpolated points, so you are not compressing your data set.
The solution I propose is based on approximation with a set of piecewise linear models (each model being a mapping between a subspace of the reduced space to the original space). At the boundaries between the models, I do not assert continuity, contrary to hinging hyperplanes. Contrary to Projection Pursuit Regression and hinging hyperplane, my mapping is between the two spaces, and not from the reduced space to one coordinate in the original space. This will enable projection on the manifold (which is another subject that will be discussed in another post).
Continue reading Dimensionality reduction: mapping the reduced space into the original space
After some general books on grid computation, I needed to change the subject of my readings a little bit. As Intel Threading Building Blocks always intrigued me, I chose the associated book.
Continue reading Book review: Intel Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism
My manifold learning code was for some time a Technology Preview in the scikit learn. Now I can say that it is available (BSD license) and there should not be any obvious bug left..
I’ve written a small tutorial. It is not an usual tutorial (there is a user tutorial and then what developers should know to enhance it), and some results of the techniques are exposed in my blog. It provides the basic commands to start using the scikit yourself (reducing some data, projecting new points, …) as well as the expoed interface to enhance the scikit.
If you have any question, feel free to ask me, I will add the answers to the tutorial page so that everyone can benefit from it.
Be free to contribute new techniques and additional tools as well, I cannot write them all ! For instance, the scikit lacks some robust neighbors selection to avoid short-cuts in the manifold…
Tutorial and the learn scikit mainpage.
Peer-to-peer. These words are unleashing in France a fight between the legislators and the developers. And this old – I say old because it was written in 2001, and 7 years is old for a book on this topic – book presented me the issues debated in journals, blogs, … in a new way.
Continue reading Book review: Peer-to-Peer: Harnessing the Power of Disruptive Technologies
At last, my article on manifold learning has been published and is accessible with doi.org (it was not the case last week, that’s why I waited before publishing this post).
The journal is free, so you won’t have to pay to read it : Access to the EURASIP JASP article
I will publish additional figures here in a short time. The scikit is almost completed as well, I’m finishing the online tutorial for those who are interested in using it and/or enhancing it.