OpenSubdiv.OPENSUBDIV_VERSION.Bfr
OpenSubdiv.OPENSUBDIV_VERSION.Far
OpenSubdiv.OPENSUBDIV_VERSION.Osd
OpenSubdiv.OPENSUBDIV_VERSION.Sdc
OpenSubdiv.OPENSUBDIV_VERSION.Vtr

OpenSubdiv.OPENSUBDIV_VERSION.Osd.CudaStencilTable

概述

Osd.CudaStencilTable类封装了用于计算图像上邻近像素值的CUDA码头。它提供了低层次的CUDA手推算法以及高层次的Stencil算法。

Stencil表格被视为一组稀疏矩阵,例如用于近似微分方程的用于矩阵内扩散和导数的中心差分系数。这个类负责将这个表格转化为一组矩阵操作。

成员函数

函数 描述
const CudaStencilTable *Create(int numStencils, const int * sizes, const int * offsets, const int * indices, const float * weights, cudaStream_t stream) 构造函数,返回一个该类的实例对象。
void * GetCudaStencilTable() const 获取CUDA Stencil表格的指针。
void * GetSizes() const 获取Stencil中的每个条目的Size向量数组的指针。
void * GetOffsets() const 获取Stencil中的每个条目的偏移向量数组的指针。
void * GetIndices() const 获取Stencil中的每个条目的索引向量数组的指针。

示例

以下是一个使用Osd.CudaStencilTable类的简单示例:

const int numControls = 1000;
const int numStencils = ...;

stencilSizes = new int[numStencils];
stencilOffsets = new int[numStencils];
stencilIndices = new int[numStencils*27];
stencilWeights = new float[numStencils*27];

...

// 创建CUDA Stencil表格
Osd::CudaStencilTable *stencilTable = Osd::CudaStencilTable::Create(numStencils, stencilSizes, stencilOffsets, stencilIndices, stencilWeights, cudaStream);

...

// 获取Stencil表格指针
void *devStencilTable = stencilTable->GetCudaStencilTable();

...

// 释放资源
delete[] stencilSizes;
delete[] stencilOffsets;
delete[] stencilIndices;
delete[] stencilWeights;
delete stencilTable;

结论

Osd.CudaStencilTable类提供了用于计算图像上邻近像素值的CUDA码头。Stencil表格被视为一组稀疏矩阵,该类将这个表格转化为一组矩阵操作。