首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OpenCL -从主机初始化程序范围变量?

OpenCL -从主机初始化程序范围变量?
EN

Stack Overflow用户
提问于 2011-08-22 04:09:45
回答 1查看 3.3K关注 0票数 3

我将一些通用参数声明为全局(__constant)结构,如下所示:

代码语言:javascript
复制
typedef struct
{
    int a;
    int b;
    float c;
    /// blah blah

} SomeParams;

__constant SomeParams Parameters;

在内核中,我需要这样使用它:

代码语言:javascript
复制
__kernel void Foo()
{
    int a = Parameters.a;
    /// do something useful...
}

在执行内核之前,我不确定如何从主机初始化参数值。

我可以为内核参数创建缓冲区等,但既然这不是内核参数,我需要做什么?

我使用的是Cloo C#/OpenCL绑定,但即使是一个原始的Cloo也会有所帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-22 22:38:27

据我所知(但我不敢保证这一点),你不能从以这种方式声明的主机代码中初始化变量(有一个例外,见下文)。您可以声明一个变量并将其初始化,如下所示:

代码语言:javascript
复制
__constant float pi = 3.14f;

你也可以这样做:

内核:__constant float width = WIDTH

主机:使用定义WIDTH的值的-D构建参数构建内核。

我在过去所做的是将常量变量作为内核参数。

代码语言:javascript
复制
__kernel void Foo(__constant SomeParams Parameters)
{
    int a = Parameters.a;
    /// do something useful...
}

然后,您可以像任何其他内核参数一样分配和设置该值。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7140820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档