如何将结构体中的数组传递给内核?

2023-12-20

我需要向内核输出一个结构数组,其中将有一个数组。但最终,数据有点正确,但在某种程度上存在错误。 我在主机上有这个代码

struct myStruct
{
    int a;
    double b;
    double c[5];
};

myStruct *result = new myStruct[countOptim];

for (int i = 0; i < countOptim; i++)
{
    result[i].a = 5;
    result[i].b = 11.5;
    for (int j = 0; j < 5; j++)
    {
        result[i].c[j] = j;
    }
}

// Make kernel
Kernel kernel(program, "vector_add");

Buffer bufferResult = Buffer(context, CL_MEM_READ_WRITE, countOptim * sizeof(myStruct));

queue.enqueueWriteBuffer(bufferResult, CL_TRUE, 0, countOptim * sizeof(myStruct), result);


kernel.setArg(0, bufferResult);


// Run the kernel on specific ND range
NDRange global(countOptim);
queue.enqueueNDRangeKernel(kernel, NULL, global);

内核上的这段代码

struct myStruct
{
    int a;
    double b;
    double c[];
};
typedef struct myStruct myStruct;

__kernel void vector_add(__global myStruct *result) 
{


   // Get the index of the current element to be processed
   int id = get_global_id(0);

   printf("a - %d, b - %f, c[0] - %f",result[id].a, result[id].b, result[id].c[0]);
}

In the console displays this enter image description here

也许问题出在内存上

好吧,这是通过在内核中指定数组的大小来解决的。但是是否可以在内核中不设置数组大小?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将结构体中的数组传递给内核? 的相关文章

随机推荐

  • 初始化(复杂)静态数据成员的 Pythonic 方法

    我有一个包含复杂数据成员的类 我想保持 静态 我想使用函数初始化一次 Pythonic 是这样的 def generate data do some analysis and return complex object e g list c
  • sudo Kill 导致权限被拒绝

    ps 辅助 grep 节点结果 root 2814 0 0 0 0 4344 0 S Mai27 0 00 sh c node node modules webpack dev server bin webpack dev server j
  • 宏定义

    我尝试定义一个宏 其功能如下 调用 1 没有问题 但调用 2 提示编译器错误 因为第三个参数不可用 如何定义一个同时支持调用1和调用2的宏 define RDF LOG dbglevel fmt rdfDBG dbglevel fmt VA
  • 如何获取未缓存的数据?

    当我尝试与数据交互时 会抛出错误 const user client users cache get user id user send message 类型错误 无法读取未定义的属性 发送 缓存实用程序说明 缓存是一个收藏 https d
  • 如何使用 sed 删除双换行符?

    I tried sed i s n n file 但它不起作用 我仍然想要单行中断 Input abc def ghi jkl 期望的输出 abc def ghi jkl 这可能对你有用 GNU sed sed a N s n ta fil
  • 混合应用程序取决于服务器端补丁

    我想制作一个混合应用程序 可以像网站一样经常修补并立即反映 原生应用每次都需要花费太多时间才能获得商店的批准 因此搜索了 Cordova Xamarin React Native 等 但不确定哪一个最适合我 我不会使用复杂的函数或逻辑 也不
  • 使用“strstr”在字符串中搜索多字节 UTF-8 字符是否安全?

    按照我之前的问题 尽管手册页有免责声明 为什么 strchr 似乎可以使用多字节字符 https stackoverflow com q 25566356 3194340 我发现strchr是一个糟糕的选择 相反 我正在考虑使用strstr
  • PHP正则表达式验证

    只是一个简单的问题 我对正则表达式有点垃圾 所以我想我会在这里发布 下面的正则表达式用于验证用户名 长度必须在 4 26 个字符之间 至少以 2 个字母开头 只能包含数字和一 下划线和一个点 到目前为止我有这个 但不起作用 谢谢 你可以使用
  • 为什么  出现在我的 HTML 中? [复制]

    这个问题在这里已经有答案了 我在 Firebug 中看到这个角色 65279 我不知道为什么会发生这种情况 我的代码中没有这样的字符 对于 Firefox 来说还可以 但是在 IE 中一切都会崩溃 我什至无法在谷歌中搜索到这个角色 我用没有
  • 无法在沙箱上找到 paypal 付款按钮创建

    我有两个沙箱贝宝帐户 买家和企业 卖家 最近我添加了一个从 PayPal 生成的 html 作为 立即购买 按钮 它看起来效果很好 现在我想添加沙盒按钮来测试该过程 但登录到我的沙盒帐户后 我看不到任何创建付款按钮的选项 就像我的常规帐户中
  • 自定义形状周围的 CSS 框阴影?

    你好 我需要创建一个如下所示的 div 到目前为止我想出的是 http jsfiddle net suamikim ft33k http jsfiddle net suamikim ft33k bubble position relativ
  • 防止 Kivy 留下调试消息

    我有一个简单的 Kivy 界面 也使用终端 示例代码 import kivy kivy require 1 0 6 from kivy app import App from kivy uix label import Label clas
  • 如何在 vue cli 中使用 Moment.js

    我已经 npm 安装了 vue moment 我需要通过 for 循环将日期传递给 p 标记 还我需要创建一个方法我可以在其中添加天数到我的日期 以便它显示该天数之后的日期 我该怎么做或者我错在哪里 main js代码 Vue use re
  • 从另一个文件导入和更改变量

    Okay 我一直在寻找可以直接回答我的问题的答案 但没有成功 我的问题非常简单 老实说我认为会有更直接的答案 请记住 我对这门语言还比较陌生 并且仍在学习中 所以我会用fileA and fileB作为我的两个文件 以及x作为我的示例变量
  • “应用程序安装失败。发生运行时错误。修复 App Manifest.xml 文件中的功能。”

    我正在为 WP8 构建这个简单的应用程序 一切都工作正常 直到今天我必须向清单文件添加新功能以允许访问传感器 我只是用图形编辑器打勾ID CAP SENSORS 现在 每次我尝试部署我的应用程序时 我都会得到 Installation of
  • SQLSTATE[HY000] [2002] yii2 中没有这样的文件或目录

    I use ubuntu 16 04 PHP Version 7 0 4 7ubuntu2 Apache 2 4 18 Ubuntu PHP extension mysqli 在 phpmyadmin 中写的 我从升级我的ubuntu15
  • WifiP2pManager.discoverPeers 在 android 10 中失败

    以下代码示例返回Error code 0 这是android中内部错误的错误代码 是否有任何解决方法可以在 Android 10 设备中发现对等点 wifip2pmanager discoverPeers wifip2pmanagerCha
  • 如何将Int16Array缓冲区保存到wav文件节点js

    我在音频处理时将 Int16Array 缓冲区发送到服务器 var handleSuccess function stream globalStream stream input context createMediaStreamSourc
  • 将新行添加到 pandas 中的现有数据框时出现错误

    我有以下数据框 df3 pd DataFrame columns Devices months 我从循环中获取行值 排 打印 数据 Devices months 1 Powerbank Feb month 当我将此数据行添加到 df3 时
  • 如何将结构体中的数组传递给内核?

    我需要向内核输出一个结构数组 其中将有一个数组 但最终 数据有点正确 但在某种程度上存在错误 我在主机上有这个代码 struct myStruct int a double b double c 5 myStruct result new