【问题标题】:Is possible to use CUBLAS with OpenACC?是否可以将 CUBLAS 与 OpenACC 一起使用?
【发布时间】:2014-02-27 04:09:20
【问题描述】:

我必须使用 OpenACC 指令实现我在 CUDA-C 中已有的功能(我必须进行比较)。原代码中有 cubasSgemv 调用,openacc 下有没有办法使用 cublas 库?

【问题讨论】:

    标签: cublas openacc


    【解决方案1】:

    是的,您可以使用host_data 构造来执行此操作。下面是一个如何从 OpenACC 调用 cublasSaxpy 的示例:

     #pragma acc data create(x[0:n]) copyout(y[0:n])
      {
        #pragma acc kernels
        {
          for( i = 0; i < n; i++)
          {
            x[i] = 1.0f;
            y[i] = 0.0f;
          }
        }
    
        #pragma acc host_data use_device(x,y)
        {
          cublasSaxpy(n, 2.0, x, 1, y, 1);
        }
      }
    

    我在几个月前写的一篇关于 OpenACC 互操作性的文章中还有其他示例。您可以在http://www.pgroup.com/lit/articles/insider/v5n2a2.htm 找到它。

    【讨论】:

    • 非常感谢!我以这种方式编写代码,但编译器告诉:“调用 cuEventSynchronize 返回错误 700:启动失败”。所以我尝试使用 cuda-memcheck 启动程序,我发现每个块中的两个线程都有一个错误“Invalid global read of size 4 (...) address xxx is out of bounds ”。这是否取决于 cublasSgemv 的第一个参数是 cublasHandle_t 类型?我使用 cublasStatus_t 状态; cublasHandle_t 句柄;状态=cublasCreate(&handle);让它发挥作用,但我不知道这如何与 OpenACC 交互...请帮助
    • 当然!这里是代码dropbox.com/s/dh5jhgz2uva78cp/kernel_matrix_calculation.c。我不知道这是否是正确的发布方式,我希望它会起作用。非常感谢您的帮助。你也需要原始的 CUDA-C 代码吗?
    • 链接有问题吗?很抱歉打扰您,但我真的不知道该怎么做,一些提示会很有用
    猜你喜欢
    • 2016-03-15
    • 2021-11-12
    • 2016-04-01
    • 2011-01-20
    • 2018-08-11
    • 2021-08-05
    • 2019-03-18
    • 2014-03-15
    • 2021-03-31
    相关资源
    最近更新 更多