gpt4 book ai didi

c++ - 如何在 OpenCL 内核中包含 C++ 类

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:40 26 4
gpt4 key购买 nike

我一直在使用 OpenCL 1.2,但在使用 OpenCL C++ Wrapper API ( https://www.khronos.org/registry/OpenCL/specs/opencl-cplusplus-1.2.pdf) 时遇到了问题。

它没有说明在 kerenel (cl) 文件中包含类“class MyClass”的任何限制,我认为这是可能的,因为平台、设备和上下文是“类”(如果不是,那是什么那么它的目标是什么?X_X)

嗯,我在“printer.h”文件中有以下简单类:

class Printer{

public:
void print();
}

cl 文件中,我有以下几行:

#include "printer.h"
__kernel void hello()
{
Printer myPrinter;
//myPrinter.print();
}

但是当我在我的 cpp 程序中构建这个内核文件时,它带来了错误:未知类型名称'class'。我已阅读帖子 Passing Class to a Kernel in Intel Opencl建议使用 SYCL,但是,根据标准和包装器,是否没有其他“更简单”的方法?

谢谢你的帮助

最佳答案

这里确实存在三个不同的东西:

  1. OpenCL C++ Wrapper API 用于在主机端使用 C++ 调用 OpenCL API。它与设备端的 C++ 内核无关。它可以与您正在使用的 OpenCL 1.2 配合使用。
  2. OpenCL 2.2 将 OpenCL C++ 内核语言引入核心规范(在 OpenCL 2.1 中可选)。
  3. SYCL 是一个单源 C++ 主机和内核系统,它允许您编写一个代码块,在后台执行主机 API 调用并调用 C++ 内核装置。它需要 SYCL 编译器预先通过。

关于c++ - 如何在 OpenCL 内核中包含 C++ 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48271570/

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