使用 Fortran (CLFORTRAN) 在 OpenCL 中将两个选项作为参数传递

2024-04-16

当我的主机程序采用 C 语言时,我可以传递两个选项作为 OpenCL 函数的参数。例如,我可以通过两个 标志到clCreateBuffer像这样的函数:



clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR,
                            sizeof(main_data), main_data, &err;)
  

但是,当我尝试在用 Fortran 编写的主机程序中执行相同操作时:



main_data=clCreateBuffer(context, CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR, &
                               sizeof(main_data), C_NULL_PTR, err)
  

我收到错误:

 &     |CL_MEM_COPY_HOST_PTR, size_in_bytes,C_NULL_PTR,ierr)        
       1
Error: Syntax error in argument list at (1)

我已经使用 CLFORTRAN 成功编译了一些其他程序,但是每当我尝试传递两个标志时,例如CL_MEM_READ_ONLY | CL_MEM_COPY_HOST_PTR我收到上述错误。


C 按位或|不能在 Fortran 中使用。你必须使用+. The ior()函数可能也可以工作,但我会使用+*。它之所以有效,是因为常量的值通常是以这样一种方式设计的:它们只有一个1位并且每次都在不同的位置。

*如果您确实使用+您不能两次添加相同的标志,否则标志将被错误计算。

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

使用 Fortran (CLFORTRAN) 在 OpenCL 中将两个选项作为参数传递 的相关文章

  • 编译错误:无法打开模块文件

    我有这个代码 PROGRAM xfit driver for routine fit USE nrtype USE nrutil USE nr USE ran state ONLY ran seed IMPLICIT NONE INTEGE
  • 如何在 CUDA 中执行多个矩阵乘法?

    我有一个方阵数组int M 10 以便M i 定位第一个元素i th 矩阵 我想将所有矩阵相乘M i 通过另一个矩阵N 这样我就收到了方阵数组int P 10 作为输出 我看到有不同的可能性 分配不同元素的计算M i 到不同的线程 例如 我
  • 如何用好Fortran语句标签?

    我正在开发一个用 Fortran 95 编写的模型 我对此完全陌生 语句标签的概念似乎很奇怪 到目前为止我只找到了标签可以由作者任意决定的解释 通常以 10 为增量 除了更容易地找出语句的结尾位置之外 这些标签还有其他实际用途吗 以及关于如
  • 带有 return 语句的 Julia @parallel for 循环

    如何在满足条件时立即返回所有工作人员的函数中编写并行 for 循环 IE 像这样的东西 function test n sync parallel for i in 1 1000 statement if condition return
  • FORTRAN 写()

    在开始之前 我必须先声明一下 我是 FORTRAN 的新手 我正在维护 1978 年的一段遗留代码 它的目的是从文件中读取一些数据值 处理这些值 然后将处理后的值输出到另一个文本文件 给出以下 FORTRAN 代码 INTEGER NM S
  • HashSet 中的并行流不并行运行

    我有想要并行处理的元素集合 当我使用List 并行性有效 但是 当我使用Set 它不并行运行 我编写了一个代码示例来显示该问题 public static void main String args ParallelTest test ne
  • gfortran 未定义的引用

    我正在尝试编译一个依赖很多东西的程序 我使用并修改了提供的 makefile 来代表我的计算机设置 但在编译的最后一步中我不断收到许多未定义的引用 导致问题的命令行是 gfortran o cosmomc ParamNames o Matr
  • 在 __device/global__ CUDA 内核中动态分配内存

    根据CUDA 编程指南 http developer download nvidia com compute cuda 3 2 prod toolkit docs CUDA C Programming Guide pdf 第 122 页 可
  • shell进程的并行执行

    有没有一个工具可以在 Windows 批处理文件中并行执行多个进程 我发现了一些有趣的 Linux 工具 parallel http mi eng cam ac uk er258 code parallel html and PPSS ht
  • 将 R 包函数导出到 R 包内的并行集群

    有一些功能 比如function1 在我正在开发的 R 包中 它依赖于辅助函数 例如h function1 and h function2 在我的包裹里 我正在并行化重复调用function1在我的包中的另一个函数中 目前 在我的包中我正在
  • fork() 不并行运行

    我对编程过程很陌生 我的基本程序并没有真正按照我的预期工作 我在 Oracle VM 上的 Ubuntu 18 04 上运行此代码 这是代码 include
  • MPI Alltoallv 还是更好的单独发送和接收? (表现)

    我有许多进程 大约 100 到 1000 个 每个进程都必须将一些数据发送到其他一些进程 比如大约 10 个 通常 但并非总是必要 如果 A 发送到 B B 也会发送到 A 每个进程都知道它必须从哪个进程接收多少数据 所以我可以用MPI A
  • 使用 Scoop 编程 DEAP

    我在 python 中使用 DEAP 库来解决多目标优化问题 我想使用多个处理器来完成这项任务 但是 我遇到了一些麻烦 为了提供一些背景信息 我将 networkx 与 DEAP 结合使用 我还定义了适应度函数 交叉和变异函数 由于某些原因
  • OpenMP 线程映射到物理内核

    于是我在网上查了一段时间没有结果 我是 OpenMP 的新手 所以不确定这里的术语 但是有没有办法从 OMPThread 由 omp get thread num 给出 和线程将运行的物理核心找出特定机器的映射 我还对 OMP 分配线程的精
  • Fortran 中的数组第一个索引

    我认为 Fortran 中数组的第一个索引是 1 但是为什么这段代码可以工作呢 代码是 Wavewatch 的修改部分 http polar ncep noaa gov waves wavewatch http polar ncep noa
  • 将数组从 .npy 文件读入 Fortran 90

    我使用 Python 以二维数组 例如 X 的形式生成一些初始数据 然后使用 Fortran 对它们进行一些计算 最初 当数组大小约为 10 000 x 10 000 时 np savetxt 在速度方面表现良好 但是一旦我开始增加数组的维
  • 如何在Fortran代码中将二维数组转换为一维数组?

    如何将 r i j 转换为一维数组以便可以轻松地对数字进行排序 program sort implicit none character CN 8 O 7 integer j iconf nconf integer i nbins t in
  • 并行模拟写入同一文件

    我的目标是在集群上并行运行 10 000 个左右的 Julia 编码模拟 每个模拟独立于所有其他模拟 每个模拟都有一个要输出的数字 以及有关哪个模拟产生该数字的 3 列信息 因此 强制每个模拟打印在单独的文件上对我来说听起来有点愚蠢 我可以
  • Parallel.For 和 Break() 误解?

    我正在研究 For 循环中的并行性中断 看完之后this http tipsandtricks runicsoft com CSharp ParallelClass html and this http reedcopsey com 201
  • lambda 表达式是多线程的吗?

    lambda 表达式是多线程的吗 假设当你将数学公式编写为 lambda 方法时 当你将其传递给另一个方法时 它会是多线程的吗 不是100 清楚你问的是什么 您是否想问 lambda 是否自然地在不同的线程上运行 如果是这样 则它们只是 S

随机推荐