如何在opencl中将double4转换为double数组?

时间:2014-04-07 08:24:58

标签: casting opencl

我有一个double4变量,我想将其转换为双数组。由于double4是4个双打的向量,我们有没有办法从double4中提取这些双打?同样在最基本的层面上,所有数据类型都可以分解为字节,那么有没有一种方法可以将double4作为字节准备好然后转换为double?

2 个答案:

答案 0 :(得分:1)

您只需要vstoren()。这里有DOC和一个用法示例:

__kernel mykern (...){

    ...
    private double data[8]; //vstore works for private/local/global memory types
    private double4 vec = (double4)(0.0, 1.0, 2.0, 3.0);

    vstore4(vec, 0, data); //Will write the first 4 doubles of data with vec information
    vstore4(vec, 4, data); //Will write the last 4 doubles of data with vec information
    ...
}

答案 1 :(得分:0)

是的,你可以做,矢量数据类型的组件(有1到4个组件)可以解决为.xyzw

double4 vecArray;
....
....
double extractedVecArray[4];

extractedVecArray[0] = vecArray.w;
extractedVecArray[1] = vecArray.x;
extractedVecArray[2] = vecArray.y;
extractedVecArray[3] = vecArray.z;

我没有测试过上面的代码,但它应该可行。