是否可以从 CUDA 10.1 内核调用 cuBLAS 或 cuBLASLt 函数?

2024-02-22

关于 CUDA 10.1

我正在对几何网格进行一些计算,并在网格的每个面进行大量独立计算。我运行一个 CUDA 内核来计算每个面。

计算涉及一些矩阵乘法,因此我想使用 cuBLAS 或 cuBLASLt 来加快速度。由于我需要进行许多矩阵乘法(至少每个面几次),我想直接在内核中进行。这可能吗?

cuBLAS 或 cuBLASLt 似乎不允许您从内核(__global__)代码调用它们的函数。我从 Visual Studio 收到以下错误:

“不允许从 __device__ 函数调用 __host__ 函数”

有一些旧答案(CUDA 内核可以调用 cublas 函数吗? https://stackoverflow.com/questions/13371082/could-a-cuda-kernel-call-a-cublas-function)这意味着这是可能的?

基本上,我想要一个像这样的内核:

__global__
void calcPerFace(...)
{
    int index = blockIdx.x * blockDim.x + threadIdx.x;
    int stride = blockDim.x * gridDim.x;

    for (int i = index; i < faceCount; i += stride)
    {
        // Calculate some matrices for each face in the mesh
        ...
        // Multiply those matrices
        cublasLtMatmul(...) // <- not allowed by cuBLASLt
        // Continue calculation
        ...
    }
}

是否可以从 CUDA 10.1 中这样的内核调用 cublasLtMatmul 或 cublassgemm ?


这不可能

从 CUDA 10.0 开始,CUDA 不再支持从设备代码调用 CUBLAS 例程的功能。

A 弃用通知 https://docs.nvidia.com/cuda/archive/9.2/cuda-toolkit-release-notes/index.html#deprecated-features在 CUDA 10.0 之前给出,正式公告位于CUDA 10.0 发行说明 https://docs.nvidia.com/cuda/archive/10.0/cuda-toolkit-release-notes/index.html#deprecated-features:

从 CUDA 10.0 开始,删除了 cuBLAS 库,以支持从设备例程 (cublas_device) 中调用相同 cuBLAS API 的功能。

同样,依赖于此功能的 CUDA 示例代码,例如simpleDevLibCUBLAS从 CUDA 10.0 开始,不再是 CUDA 工具包发行版的一部分。

这仅适用于 CUBLAS,并不意味着 CUDA 动态并行性的一般功能已被删除。

我将无法回答“为什么?”的问题。或者是“为什么?”的变体我将无法回答有关未来事件或主题的问题。没有任何技术原因导致此功能无法使用或不受支持。变化的原因与发展和资源优先级有关。我无法比这更深入了。如果您希望看到 CUDA 行为的变化,无论是功能、性能还是文档方面的变化,我们鼓励您通过在以下地址提交错误来表达您的愿望:http://developer.nvidia.com http://developer.nvidia.com。具体的错误提交说明已链接here https://devtalk.nvidia.com/default/topic/1044668/cuda-programming-and-performance/-how-to-report-a-bug/.

对于执行一些准备工作,然后调用 CUBLAS,然后执行一些其他工作的 CUDA 设备代码,一般建议是将其分解为执行准备工作的内核,然后从主机启动所需的 CUBLAS 例程,然后执行后续内核中的剩余工作。这并不意味着数据必须在设备和主机之间来回移动。当执行多个 CUBLAS 调用(例如每个设备线程)时,研究可用的各种 CUBLAS 批处理功能可能会有所帮助。不可能给出一个单一的方法来重构每种类型的代码。这些建议可能无法解决所有情况。

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

是否可以从 CUDA 10.1 内核调用 cuBLAS 或 cuBLASLt 函数? 的相关文章

随机推荐

  • 移至 Web API RC,获取:找不到方法:'System.Web.Http.Services.DependencyResolver System.Web.Http.HttpConfiguration.get_ServiceResolver()'

    我将网站从 WebAPI Beta 移至 WebAPI RC 现在加载网站时出现错误 Method not found System Web Http Services DependencyResolver System Web Http
  • 如何在Java中获取HashMap的前10个键值

    我有这样的哈希图 apple 20 nanas 18 anggur 12 我的哈希图已经按值降序排序 我想从第一个元素哈希图中获取 10 个元素 谁能帮我 如果你使用 java 8 我会选择 List
  • 防止多个 Ionic 警报叠加

    如何检测离子 2警报 UI 组件 http ionicframework com docs v2 components alert实例已经打开 以免出现另一个警报 我最终为 Ionic Alertcontroller 编写了一个包装提供程序
  • XLSX 文件是否按定义采用 UTF-8 编码?

    我正在尝试使用 PHP 读取 XLSX 文件 使用gneustaetter XLSXReader https github com gneustaetter XLSXReader准确地说 但是 这些 XLSX 文件是由不同的公司使用不同的软
  • 为 Facebook 页面生成“永不过期”访问令牌

    我已成功通过 API C 发布到 Facebook 页面 但是当页面管理员注销时 出现以下错误 OAuthException 190 验证访问令牌时出错 会话无效 因为用户注销 如何生成永不过期的访问令牌 我需要一个不会打开 Faceboo
  • Kafka 在生产者 vs 主题上设置压缩类型

    在kafka中启用压缩的以下方式有什么区别 方法一 使用命令创建主题 bin kafka topics sh create zookeeper localhost 2181 config compression type gzip topi
  • Importxml 导入内容为空

    当我在谷歌电子表格中使用下面的公式时 我遇到错误消息导入的内容为空 IMPORTXML https www moh gov sg content moh web home pressRoom html div class article h
  • nginx 位置索引指令不起作用

    我是 nginx 的新手 我无法确定为什么我的 nginx 配置不能按预期工作 我想做的就是让 nginx 对于每个 Web 根 请求优先考虑 index html 而不是 index php 这是我的 nginx 配置 user www
  • 使用 R 重现 SPSS 因子分析

    我希望有人能指出我正确的方向 首先 我不是统计学家 我是一名软件开发人员 其任务是尝试使用 R 重现 SPSS 因子分析的结果 使用 PC 提取和最大方差旋转 我在过去一周才接触过 R 所以我试图找到我的方式 我确实发现 2010 年的这篇
  • 存在哪些基于 IP 进行人员地理定位的服务? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 人们使用什么来对一个人的 IP 进行地理定位以确定他们所在的城市 我已经尝试过 Google API 的
  • Hadley高级R书中的非标准评估

    在哈德利的高级R书籍 http adv r had co nz Computing on the language html 有一段代码我无法理解输出 f lt function x substitute x g lt function x
  • 是否可以按值删除队列元素?

    我想从队列中删除具有特定值的元素 这样的事该怎么办呢 我正在尝试创建映射和队列的并发混合 目前我尝试在这个答案 https stackoverflow com questions 7704526 is thare in stl or boo
  • Eclipse PyDev 完成挂起(再次)

    我在 Eclipse 中使用 PyDev 作为我的 Python 编辑器 就功能集而言 它很好 除了一件非常烦人的事情之外 一切都工作正常 代码完成本身运行速度很快 当我按 Alt Space 时 窗口几乎立即弹出 所有选项都在那里 顶部的
  • PHP DOM文档错误处理

    在我的应用程序中 我从 url 加载 xml 以便解析它 但有时该网址可能无效 在这种情况下我需要处理错误 我有以下代码 xdoc new DOMDocument try xdoc gt load url This line causes
  • 无法让 QueryDsl / APT 生成 Q 类

    我正在尝试在新的 Spring 项目中使用 QueryDsl 我对 QueryDsl 很陌生 对 Maven 和 Spring 也很陌生 所以我可能会缺少一些相当基本的东西 但我无法让 QueryDsl maven apt plugin 来
  • boost是否支持c++11的std::tuple的序列化?

    boost是否支持c 11的std tuple的序列化 我在 boost serialization 找不到 tuple hpp 头文件 我正在使用 boost 1 52 0 如果需要的话很乐意升级 但似乎1 53版本的变化 http ww
  • Silex - Twig_Error_Syntax:函数“路径”不存在

    根据Silex 文档 http silex sensiolabs org doc providers twig html symfony2 components integration Symfony 提供了一个 Twig 桥 它在一些 S
  • React-native run-android 卡在 99% appDebug

    I have previously shut down the react native run android still it gets stuck at 99 executing I don t seem to find any so
  • Gulp src 返回空文件

    我正在尝试为 sass js 编译创建 Gulp 任务 并且我还包含了用于实时重新加载的代码 它工作得很好 只是有时 gulp src 在我编辑它们时会将空文件扔到管道中 var gulp require gulp var sass req
  • 是否可以从 CUDA 10.1 内核调用 cuBLAS 或 cuBLASLt 函数?

    关于 CUDA 10 1 我正在对几何网格进行一些计算 并在网格的每个面进行大量独立计算 我运行一个 CUDA 内核来计算每个面 计算涉及一些矩阵乘法 因此我想使用 cuBLAS 或 cuBLASLt 来加快速度 由于我需要进行许多矩阵乘法