gpt4 book ai didi

types - OpenCL 内核中的自定义类型

转载 作者:行者123 更新时间:2023-12-04 00:05:41 25 4
gpt4 key购买 nike

是否可以在 OpenCL 内核中使用自定义类型,如 gmp 类型 (mpz_t, mpq_t, ...) ?

有这样的东西(这个内核不只是因为 #include <gmp.h> ):

#include
__核正方形(
__全局 mpz_t* 输入,
__global mpz_t 编号,
__global int* 输出,
const unsigned int 计数)
{
int i = get_global_id(0);
如果(我<计数)
输出[i] = mpz_divisible_p(number,input[i]);
}

也许通过向 clBuildProgram 的第四个参数(选项)添加不同的参数?

或者 OpenCL 是否已经有可以处理大数的类型?

最佳答案

通常,您可以在 OpenCL 程序中使用任何类型。但是由于导入不起作用,您必须在同一个程序中重新定义它们。例如:

typedef char my_char[8];

typedef struct tag_my_struct
{
long int id;
my_char chars[2];
int numerics[4]
float decimals[4];
} my_struct;

__kernel void foo(__global my_struct * input,
__global int * output)
{
int gid = get_global_id(0);
output[gid] = input[gid].numerics[3]== 2 ? 1 : 0;
}

但是,您显然需要保持 OpenCL 内部和外部的定义相同。还要确保类型在设备和主机上具有相同的大小(使用 sizeof(my_struct) 应该可以解决问题)。在某些情况下,我不得不调整定义,以获得匹配的尺寸。

关于types - OpenCL 内核中的自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2423825/

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