gpt4 book ai didi

OpenCL 构造函数语法和更新变量

转载 作者:行者123 更新时间:2023-12-02 00:53:00 28 4
gpt4 key购买 nike

当我尝试更新 OpenCL 内核中的 float3 变量时,我得到了一些看似奇怪的结果。归根结底:

float3 vel = float3( 0 );   // a
vel = float3( 0, 1, 0 ); // b
vel = (float3)( 0, 2, 0 ); // c

如果我在每次调用后打印 vel:

if( get_global_id( 0 ) == 0 )
printf( "[%d]: vel: ( %f, %f, %f )\n", index, vel.x, vel.y, vel.z );

然后我看到 a) 正确地初始化了 vel,但是 b) 没有做任何事情。 c) 工作。有谁知道为什么我不能像在 b 中那样用新的 float3 对象更新变量?这就是我在 C++ 和 glsl 中习惯的做法。或者可能是驱动程序错误?

在运行 OS X 10.11.5 的 macbook pro 上使用 OpenCL 1.2。

最佳答案

只有 c) 是初始化/使用向量类型的正确方法。 a)b) 可能是 Mac 实现中的一个错误(在我试过的 2 个 GPU 和 1 个 CPU 上没有编译)。

初始化向量类型的几种方法:

float3 vel = (float3)( 1,1,1 );
float3 vel2 = (float3) 1; // it will be ( 1,1,1 )
float3 vel3 = 1; // it will be ( 1,1,1 )

有关矢量类型用法的更多信息:spec

关于OpenCL 构造函数语法和更新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38048158/

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