gpt4 book ai didi

c++ - OpenCL get_global_id

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:33 25 4
gpt4 key购买 nike

我正在尝试将一段 OpenCL 内核代码移植到 SideFX Houdini,使用它的内部脚本语言调用 VEX(代表 vector expression)。

但是,我在理解这些索引的作用以及它们的工作方式时遇到了问题。我知道 get_global_id() 将索引返回到给定工作项的工作中(在某处阅读),但我真的不明白那是什么。 (我猜可能与计算机内核有关?)

假设输入是由 x 和 y 方向的 500 像素组成的二维网格,并假设每个像素都有一些属性(我通过 name_in 传递给内核参数的那个,而 name_out 是更新相同的属性值),他是什么如何处理这些索引操作?

它究竟是如何工作的,我如何在 c 中做同样的事情?

非常感谢您,亚历山德罗

__kernel void rd_compute(__global float4 *a_in, __global float4 *b_in, __global float4 *c_in, __global float4 *d_in, __global float4 *e_in, __global float4 *f_in, __global float4 *g_in, __global float4 *h_in, __global float4 *i_in, __global float4 *a_out, __global float4 *b_out, __global float4 *c_out, __global float4 *d_out, __global float4 *e_out, __global float4 *f_out, __global float4 *g_out, __global float4 *h_out, __global float4 *i_out)
{
const int index_x = get_global_id(0);
const int index_y = get_global_id(1);
const int index_z = get_global_id(2);
const int X = get_global_size(0);
const int Y = get_global_size(1);
const int Z = get_global_size(2);
const int index_here = X*(Y*index_z + index_y) + index_x;

最佳答案

请学习许多很棒的介绍性教程。

在串行代码中,如果您使用循环(例如 for (int i=0; i<10; i++)),则 int i = get_global_id(0)替换它以便您可以获得当前工作项的索引。运行时确保所有工作项都运行。它们可能是并行的、串行的或成组的(某种组合)。

关于c++ - OpenCL get_global_id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47614762/

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