我们可以在opencl中使用结构结构吗?

时间:2014-05-12 16:09:57

标签: struct opencl

我使用的结构如下。

struct domain_data
{
     int *no_h_domains,
     *no_v_domains,
     *domain_hsize,
     *domain_vsize,
     *domain_hstep,
     *domain_vstep;
     struct domain_pixels
     {
          int dom_x, dom_y;
          double sum,sum2;
          int sym;
     } ***pixel;

} domain;

但是当我尝试

domain.pixel =(struct domain_pixels ***)malloc(i * sizeof(struct domain_pixels **));

然后它会出现以下错误。

  

错误C2440:' =' :无法转换为' domain_pixels '到' domain_data :: domain_pixels '

  

类型" domain_pixels *"无法分配到" domain_data :: domain_pixels * "

类型的实体

但是在win32应用程序中,相同的代码执行得非常好。

任何人都可以告诉我,我是否可以在opencl中执行此操作?如果是,那怎么样?

3 个答案:

答案 0 :(得分:1)

问题不在于结构结构,问题在于结构的指针和三指针。

在OpenCL中不允许传递指针。 即使没有它,它也永远不会起作用,因为OpenCL中不允许使用malloc。

在尝试复制粘贴怪物C代码之前,请先阅读指南和教程,以期直接使用它。

答案 1 :(得分:0)

应该可以使用OpenCL 2.0&具有细粒缓冲区的SVM。 英特尔计划通过BDW启动SVM支持。

答案 2 :(得分:0)

当我创建另一个OpenCl项目并在那里复制相同的代码时,该错误被删除!所以感谢大家的回复!