今天开始开mpich2的源代码了。像以前所看到的那些大型软件的代码一样,到处都是宏。
但今天学习到一个新的知识点,原来C中的函数定义是可以被同名宏覆盖的。
代码中有一个关于获得一个时钟周期的秒数的函数MPID_Wtime_init,用gcc内联汇编的形式调用了rdtsc指令,这个指令可以获得开机以来的累记时钟周期。MPID_Wtime_init通过计算一个时间间隔(用usleep可以达到微秒级)内有多少个时钟周期,从而得到一个周期中有多少秒。
看代码的结构,我想我们在程序中调用的mpi库函数可能都是在src/mpi 目录下
MPI_Init函数在src/mpi/init/init.c中
如果要看的文件中的代码太多太乱(相对而言),那么把代码复制出来,删掉不相关的或是不重要的代码,真的是很有用的一招。
而用gcc -MM -MG -I 头文件路径 来找到依赖关系,也对读代码挺有用的。
今天的问题是,不知道从哪个地方看起,是先看mpd的实现,还是先看mpi库的实现呢,也不知道在mpi库的实现里有多少地方是与mpd有关的,如果mpd更底层是不是要看先看mpd呢?头大呀!
阅读(446) | 评论(0) | 转发(0) |