Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cuda 模块中的变量而不是公共语句_Cuda_Fortran_Openacc - Fatal编程技术网

Cuda 模块中的变量而不是公共语句

Cuda 模块中的变量而不是公共语句,cuda,fortran,openacc,Cuda,Fortran,Openacc,我正在尝试使用cuda fortran加速一段代码。此代码在变量定义中使用了common语句,该语句在cuda设备代码中无效 我所做的是在模块中定义变量,而不是使用common语句,但这给了我一个错误的答案。我在普通代码上执行所有这些操作是为了找到通用语句的替代品 我认为应该是这样的,因为这些变量只被这些函数使用,但它不是。为什么呢?我能做些什么来解决这个问题呢?查看您的文件后,我发现您正在使用OpenACC for Fortran,这不是我所说的CUDA Fortran。我将假设这是您的意

我正在尝试使用cuda fortran加速一段代码。此代码在变量定义中使用了common语句,该语句在cuda设备代码中无效

我所做的是在模块中定义变量,而不是使用common语句,但这给了我一个错误的答案。我在普通代码上执行所有这些操作是为了找到通用语句的替代品


我认为应该是这样的,因为这些变量只被这些函数使用,但它不是。为什么呢?我能做些什么来解决这个问题呢?

查看您的文件后,我发现您正在使用OpenACC for Fortran,这不是我所说的CUDA Fortran。我将假设这是您的意图,并且您实际上并不打算使用CUDA fortran,而是试图使OpenACC代码正常工作

我有两个建议

  • 具体点。哪些变量,哪些函数工作不正常,您得到的结果是什么,您期望的结果是什么?最好的方案是提供一个简短、完整、可编译的示例,而不是将整个代码文件转储到一个问题中。把你的问题缩小到某个不起作用的具体例子
  • 同样,假设您的目的是使用OpenACC fortran,您已经证明您至少对如何使用
    有一些想法!acc内核
    指令。我快速浏览了一下您的代码,您所封装的循环看起来并不复杂。我的建议是,确定这些循环所需(输入)和从这些循环生成(输出)的所有数据,并包括附加的
    !acc data
    指令,将输入数据指定为
    copyin
    ,输出数据指定为
    copyout
    。给出了一个具体的示例/教程。话虽如此,只要编译器试图在
    中使用数据时数据在范围内!acc内核
    region,我认为您不应该得到错误的结果。但为了进一步探讨这一点,我认为一个具体的例子是合适的。通常,请使用
    !acc data
    指令将帮助您将注意力集中在所需的数据上,并确保编译器了解如何将数据传输到设备或何时从设备传输数据

  • 正如我已经提到的,请粘贴您希望其他人在实际问题中看到的代码示例,而不是包含链接。

    最好将代码放在问题中,而不是外部链接。一旦这些链接断开,你的问题对未来的读者将毫无用处。不要使用common语句,而是将参数列表中的变量传递给任何需要它们的cuda函数。@RobertCrovella您的建议可以作为答案吗?