访问向量类型OpenCL [英] Access vector type OpenCL

查看:136
本文介绍了访问向量类型OpenCL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在一个像这样的内核中有一个变量:

I have a variable whithin a kernel like:

int16 element;

我想知道是否有一种方法可以处理元素中的第三个int

I would like to know if there is a way to adress the third int in element like

element[2],这样我将与编写element.s2

element[2] so that i would be as same as writing element.s2

那么我该怎么做:

int16 element;
int vector[100] = rand() % 16;

for ( int i=0; i<100; i++ )
   element[ vector[i] ]++;

我的做法是:

int temp[16] = {0};
int16 element;
int vector[100] = rand() % 16;

for ( int i=0; i<100; i++ )
  temp[ vector[i] ]++;


element = (int16)(temp[0],temp[1],temp[2],temp[3],temp[4],temp[5],temp[6],temp[7],temp[8],temp[9],temp[10],temp[11],temp[12],temp[13],temp[14],temp[15]);

我知道这很糟糕,但是有效,;-)

I know this is terrible, but it works, ;-)

推荐答案

还有更好的方法:),我希望OpenCL提供更好的遍历矢量元素的方法.

Well there is still dirtier way :), I hope OpenCL provides better way of traversing vector elements.

这是我的方法.

union
    {
      int  elarray[16];
      int16 elvector;
     } element;

//traverse the elements
for ( i = 0; i < 16; i++)
 element.elarray[i] = temp[vector[i]]++;

Btw rand()函数在OpenCL内核中不可用,您是如何使它工作的??

Btw rand() function is not available in OpenCL kernel, how did you make it work ??

这篇关于访问向量类型OpenCL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆