This is for the common knowledge base everyone need to know, detailed requirements are listed below. Note that for actual competition env, we should use Linux as the hosting OS(no exceptions). Hence, if you could practise all the things on a Linux, that's the best.
OS: LINUX(CentOS prefered,Ubuntu)
Parallel environment:
-
MPI (essential, MPICH)
-
OpenMP(build with POSIX Thread)
-
POSIX Thread
-
CUDA
-
OpenCL
Language:
-
C/C++
-
Fortran
-
Python
-
Shell
Compiler:
- GNU/GCC(clang)
Debugger:
-
GNU/GDB
-
IDB(if you are rich)
-
TotalView
Math Library:
-
MKL(Math Kernel Library)
-
FFTW(fast Fourier transform in the west)
Tools:
- DNU/gprof
- Intel VTune
Teamwork: Git/Github(fork workflow, pull request work flow)
Computer architecture:
- CPU
- GPU
- MIC
Network: InfiniBand