Gromacs源码收获(三)
来源:互联网 发布:安卓软件源码破解 编辑:程序博客网 时间:2024/06/05 03:09
哎,真是苦逼的,对分子动力学的不熟悉导致对Gromacs源码的解读不太顺利。目前摸索出来的Gromacs程序集中最主要的计算程序为mdrun,所以很自然地想要了解mdrun程序源码都包含哪些。经过解读,终于有了初步的了解:
Gromacs中的核心运算程序为mdrun程序,为了查找mdrun程序的源码,通过查看CMake中发现如下语句:
其程序信息主要在kernel\CMakeLists.txt中。
set(MDRUN_SOURCES
gctio.c ionize.c runner.c
do_gct.c repl_ex.c xutils.c pme_loadbal.c
md.c mdrun.c genalg.c membed.c)
add_executable(mdrun ${MDRUN_SOURCES} main.c)
而gpu相关的则在gmxlib目录下面的Cmake中。
if(GMX_GPU)
add_subdirectory(cuda_tools)
add_subdirectory(gpu_utils)
set(GMX_GPU_LIBRARIES gpu_utils cuda_tools)
endif()
可以看到应该是生成了两个库,同时其子文件夹为cuda_tools以及gpu_utils两个文件夹。
同时通过查看生成的exe的方式,可以看到main.c只有一个文件,只是起到一个入口的作用。
set(GMX_KERNEL_PROGRAMS
grompp tpbconv pdb2gmx g_protonate gmxdump g_x2top gmxcheck)
if (NOT GMX_NO_QUOTES)
set(GMX_KERNEL_PROGRAMS ${GMX_KERNEL_PROGRAMS} g_luck)
endif (NOT GMX_NO_QUOTES)
foreach(PROGRAM ${GMX_KERNEL_PROGRAMS})
add_executable(${PROGRAM} ${PROGRAM}.c main.c)
if (NOT ${PROGRAM} STREQUAL "g_luck")
gmx_add_man_page(${PROGRAM})
endif()
target_link_libraries(${PROGRAM} gmxpreprocess md gmx ${OpenMP_LINKER_FLAGS})
set_target_properties(${PROGRAM} PROPERTIES OUTPUT_NAME "${PROGRAM}${GMX_BINARY_SUFFIX}")
endforeach()
如表格中红色字体标注部分,也就是说对于所有的gromacs程序,都是用main.c这个文件作为入口,通过其中对各个程序的链接入口(暂且这么叫吧)cmain()函数链接到其他程序。
main.c中内容:
#ifdef __cplusplus
extern "C" {
#endif
int cmain(int argc, char *argv[]);
#ifdef __cplusplus
}
#endif
int main(int argc, char *argv[])
{
return cmain(argc, argv);
}
真正的入口是cmain,这样就可以用一个main.c搞定了所有函数入口,不需要写多个main.c给管理带来灵活性。
例如:mdrun.c中,实际上就是有一个cmain函数作为入口。
- Gromacs源码收获(三)
- Gromacs源码收获(一)
- Gromacs源码收获(二)
- Gromacs源码收获(四)
- Gromacs源码收获(五)
- apache ftpServer源码解读与收获(三)
- GROMACS运行参数整理(一)
- GROMACS运行参数整理(二)
- servlet复习中的一些收获(三)
- apache ftpServer源码解读与收获(一)
- apache ftpServer源码解读与收获(二)
- C++ Primer Plus的若干收获--(三)
- 机房收费系统(三)-点点滴滴的收获
- gmapping源码分析以及收获
- Universal-Image-Loader源码收获
- 学习java基础教程收获三
- OOC源码(三)
- 源码阅读(三)
- 开机自启动oracle 10g
- CSS
- ClassLoader&Class使用
- android解析plist文件
- poi操作excel
- Gromacs源码收获(三)
- Oracle学习笔记
- Spring事务管理
- 利用python进行批量导出时态图片
- Asp.net课后生活(2)
- eclipse 快捷键总结 记录中!!!
- 习近平抵达莫斯科开始访俄 夫人陪同
- HTML 节点类型的 总结
- CentOS下设置路由