Hi all,
my 2014 new year's resolution is to contribute to Redis code.
My field of expertise is GPU computing and I would like to implement
some functionality (like the sort) using a GPU as backend.
So far I have forked Redis and I have a branch cplusplus
that branch is able to be compiled with a c++ compiler (deps are
untouched), it's enough "CXX=1 make" and it uses g++ as compiler.
Note that I'm not going to change the code base to c++ or willing to
change it to c++, I have just modified the code so it's able to being
compiled by a standard c++ compiler, what I have changed so far:
- Casts between void* and X*
- Fixed some incongruenses between signature in headers and
actual implementation
- Added extern "C" on external libraries headers (where needed)
- Renamed variable using c++ reserved words, namely: new, class,
throw, this. - Renamed variable using the same name of the type they were
refering (list* list;)
so far I have quickly benchmarked redis using gcc/g++/llvm/icc on a dual
socket Intel Xeon E5-2690 equiped with 32GB and my feeling (I have to run
a serious benchmark section) is that:
gcc = g++ > icc > llvm (3.3)
On why the adoption of a c++ compiler for redis you can read about the
motivation the GCC development group decided to switch to it:
My next step is to implement the SORT command so it can be (for large
data set) off-loaded on a GPU ( a very cheap board can sort around
900Milions key per second).
What do you think about it?
What is a good benchmark set of options ?
Is redis evaluating to change the build chain (CMake for example)?
I believe there are a lot of questions/proposal for being my first write on this
mailing list.
Regards
Gaetano Mendola