还是挺标准的linux开发流程:
编辑器:vim(因为要远程在服务器上编辑)+ Sublime Text(本地编辑)
编译:gcc + nvcc + Makefile
调试:gdb + cuda-gdb (cuda-gdb用得很少),valgrind
调试cuda代码速度:nvvp
代码管理:git + github
补充一些不是那么相关的:
远程ssh自动重连:mosh
命令行下多窗口:tmux
偶尔需要用到的vnc:TigerVNC server + Chicken (mac client)
本地多种环境的集成测试:docker(当年没用到,后来开始用)
服务器上的集成测试:Travis CI
主要用到的dependency:
glog:打印调试信息,这个对于调错很有用。
gflags:命令行参数
gtest:测试框架
protobuf:数据的序列化
boost:一些类似C++11的feature,因为早期cuda不支持c++11
opencv:图像处理函数
leveldb,lmdb:简单的本地数据库。
cuda:这个就不用说了
atlas/mkl/eigen:线性代数计算库