Advertisement

2021SC@SDUSC CUDA实现模幂运算源码分析(1)

阅读量:

2021SC@SDUSC

CGBN概念解析

CGBN 的典型应用场景在于设计能够处理大量问题实例的核心模块,这些实例均需进行无符号多精度算术运算。传统的 CUDA 实现方式通常为每个问题实例分配独立线程,然而多精度算法对寄存器资源需求较高,因此将多精度数值分配至一组连续线程中会更为高效,这也是 CGBN 设计所遵循的基本原则。

以一个示例内核作为起点,该内核接收一系列问题实例,并针对每个实例执行计算操作,即对 ab 进行加法运算,所得结果存储于 r 中。其中 abr 均为 1024 位的数值。

复制代码
    #include "cgbn/cgbn.h"
    
    // define a struct to hold each problem instance
    typedef struct {  
       cgbn_mem_t<1024> a;
       cgbn_mem_t<1024> b;
       cgbn_mem_t<1024> r;
    } problem_instance_t;
    
    #define TPI 8  // threads per instance (can be 4, 8, 16 or 32)

全部评论 (0)

还没有任何评论哟~