fast-cuda-operator

Fast C++/CUDA implementations of NLP operations

强烈建议开发前先阅读官方的PyTorch C++/CUDA extension tutorial

Install

python setup.py install

目录结构

.
├── fast_cuda_operator
│   └── clib
    │   ├── add_example
    │           ├── add_cuda.cpp
    │           └── add_cuda_kernel.cu
    │     ...
│   └── add.py
│        ...        
├── README.md
├── setup.py
    ...

我们以简单的add_example算子为例,我们通过在fast_cuda_operator/clib/add_example中定义的add_cuda.cpp作为C++ extension, 并在其中调用add_cuda_kernel.cu 中的CUDA算子。通过python setup.py install编译后就可以在fast_cuda_operator/add.py中进行调用测试了。

TODO

  1. 用香侬平台发布,需要做的事情包括
    • 让gitlab的runner支持cuda编译
    • 每个cuda版本build一个wheel

Features

  • add_example: 一个naive地利用cuda做矩阵加法的示例代码
  • ngram_block: Seq2Seq时不希望decode重复的ngram
    • 目前实现的是cuda版本,待实现cpu版本
  • src_ngram_repeat: Seq2Seq时不希望decode出的tgt和src有重复的ngram,有则对logits给以一定的惩罚。

References