gpt4 book ai didi

kernel - OpenCL 内核参数

转载 作者:行者123 更新时间:2023-12-02 05:26:04 25 4
gpt4 key购买 nike

我是 OpenCL 新手。我想在内核中传递一个int类型的参数来进行操作,但我不知道该怎么做。我只处理过向量和矩阵,但从未转移过属性。

如果我有下面的代码示例:

typedef struct{
int fila;
int columna;
int value;
}Matrix;

int main(){

Matrix matrix;
matrix.row = 56;
matrix.column = 64;
matrix.value = 0;
float A[matrix.fila][matrix.columna];
}

在内核中:

__kernel void matrix(__global int vue) {
value = value + 10; //it is only an example
}

我可以在内核中执行上面的“matrix.valor”(值+10)操作吗?或者它仅适用于向量和矩阵运算?我需要 cl_mem 还是没有必要?我目前对此感到迷失。

最佳答案

从内核参数中删除__global。然后,在您的 C/C++ 代码中,有一个 cl_int 类型的变量(在 cl.h 中声明)并将其设置为您想要传递到内核的值。在排队内核之前(使用 clEnqueueNDRangeKernel)调用 clSetKernelArg,其中包含内核参数、参数索引 (0)、sizeof(cl_int) 和变量地址(例如, clSetKernelArg(myKernel, 0, sizeof(cl_int), &myVariable)

Here是 clSetKernelArg 的文档。另外,搜索 OpenCL 的任何部分 sample code .

关于kernel - OpenCL 内核参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45833907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com