Gromacs作为老牌的分子动力学模拟软件,其优化已经做的相当出色了。我想做的工作主要是将其中的CUDA计算nonbond力的工作移植到OpenCL上来,讲起来容易,可是真正做起来才发现不是这么简单啊。
1.首先对分子动力学不了解,目前也就是皮毛的认识
2.CUDA不了解
3.因为工程是用CMake去管理,这也将会是一个工作量
4.OpenCL在学习中
尽量去做吧,研究生用最后在校的时间按照老师的要求再折腾下吧。
我所阅读的代码的版本是Gromacs4.6.5。欢迎有相同志向和兴趣的一起探讨。
好了,说了这么多,今天要讲的只是一个知识点,用typedef定义一个函数,什么用?下面就知道了:
这里定义了两个函数类型,这是很多C语言程序初学者感觉迷惑的,因为typedef真的很少用。然后看一个简化的结构体
在上面的结构体中,下面两个变量是关键:
这实际上就是用C语言定义类的一个基础模型,就是用结构体实现简单的类功能,有数据有操作。这两个变量实际上就是定义了两个上面类型的函数的指针。