【问题标题】:Format specifier for cuDoubleComplex variables for accessing files用于访问文件的 cuDoubleComplex 变量的格式说明符
【发布时间】:2021-11-28 12:26:17
【问题描述】:

在 C 语言中,我们可以使用fprintf()fscanf() 轻松访问文件,如下所示:

fp = fopen(“forces1.txt”, “w”);
for(h=0;h<147;h++)
{
fprintf(fp, “%f %f %f\n”, ForceX[h], ForceY[h], ForceZ[h]);
}

但我使用的是 CUDA,而我的变量 ForceX[h] 等的类型为 cuDoubleComplex。我想问两件事:

  1. 是否允许我在 CUDA 中使用 frintffscanf,如果不允许,那么如何访问文件。
  2. 因为我的变量不是浮点数,所以用来代替 %f 的格式说明符是什么。

【问题讨论】:

    标签: cuda


    【解决方案1】:

    来自here

    cuComplex.h(在您的CUDA 安装中的CUDA 包含目录中)我们可以看到以下typedef:

    typedef double2 cuDoubleComplex;
    

    double2 是一个结构定义(在vector_types.h,同一目录中),如下所示:

    struct double2 {
    
      double x,y;
    };
    

    所以现在您的问题是 C 或 C++ 问题。您可以使用%f 格式说明符轻松打印该结构的元素(.x.y)。

    是的,您可以在 CUDA 主机代码中使用 fprintffscanf,就像在普通主机代码中一样。

    【讨论】:

      猜你喜欢
      • 2016-05-23
      • 1970-01-01
      • 2014-05-04
      • 2021-11-27
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多