GatedRecurrentLayer 优化计划
Created by: zhaify
ALL- 我是Intel 这边负责GatedRecurrentLayer 优化的工程师,GatedRecurrentLayer代码优化的DEMO已经完成并且通过了单元测试。希望GatedRecurrentLayer 优化的代码能尽快merge 到paddle项目中,以提高GatedRecurrentLayer的性能,让更多使用paddle的用户受益。
由于Intel的优化涉及到以下文件: a. paddle/gserver/layers/GatedRecurrentLayer.cpp b. paddle/gserver/layers/GatedRecurrentLayer.h c. paddle/function/GruFunctor.h 因此在merge 代码方面我们这边提供了三个方法:
- 用条件编译的方式修改GatedRecurrentLayer 和GruFunctor的代码,增加Intel 优化的packedGemm。
- 在GatedRecurrentLayer中实现packedGemm 子类,并且修改GruCompute::forward接口,将Intel优化 的packedGemm对象传给GruFunctor。
- 在GatedRecurrentLayer 类中添加一个新的成员函数例如:forwardBatchPacked,将Intel 修改和依赖 的的代码全部放到这个函数中,在GatedRecurrentLayer::forwardBatch函数中添加新分支来调用Intel 优化的forwardBatchPacked函数。
请问paddle team这边觉得那种方案比较合理,可以接受?或者是否有更好的方案?