【问题标题】:Using CUDA in an existing MFC project在现有 MFC 项目中使用 CUDA
【发布时间】:2010-12-05 21:49:59
【问题描述】:

我有一个现有的 MFC 应用程序,它使用 CPU 优化的 BLAS 库进行矩阵计算。我有兴趣在我的项目中添加 CuBLAS 计算功能,但我有以下两个问题:

1) 我不确定此时是否需要指定我自己的 CUDA 内核、线程和块配置。如果是这样,您建议在修改算法时最关注架构的哪些部分?

2) 我对 (a) 在 Visual Studio 中使用程序中的 CuBLAS 功能创建一个新项目或 (b) 在现有 MFC 项目中集成 CuBLAS 功能感兴趣。但是,除了遵循this 之类的指南之外,我在配置 Visual Studio 项目以正确使用 CUDA SDK 时遇到问题,如果我尝试将其与现有项目集成,这可能无法正常工作。您对此有何建议?

提前感谢 cmets。

【问题讨论】:

    标签: visual-studio mfc cuda


    【解决方案1】:

    1) 如果您只是打算使用 CUBLAS,则无需费心编写自己的内核。 CUBLAS 是内核和 C 包装器的集合,它们被打包到一个库中,并且被设计成可以很容易地从其他程序中调用。了解 CUDA 线程、块等的细节,对于使用 CUBLAS 是没有必要的。

    2) 由于您不需要编写自己的内核,因此您不需要使用 CUDA SDK 构建单独的 Visual Studio 项目。您只需要将现有项目中的函数调用调用到 cublas.dll(或用于静态链接的 cublas.lib)。 CUDA Toolkit 中CUBLAS_Library_2.3.pdf 的第 1 章包含一个示例程序,展示了如何从 C 调用 CUBLAS。

    【讨论】:

    • 我知道了解CUDA线程、块等细节对于使用CUBLAS不是必须的,但是对优化目的有帮助吗?
    • 线程、块、网格、warp 和共享内存是内核内部的,因此除非您正在创建自己的内核或编辑现有内核的源代码,否则该级别的详细信息是可能与你无关。正如我在回答您的另一个问题时提到的,最大的瓶颈通常是通过 PCIe 总线从主内存到视频内存的数据传输。但是 CUDA 编程指南很好地解释了所有这些。如果您想更深入地了解 CUDA 架构,或许您应该阅读一遍。
    • 感谢您的深入解释。
    猜你喜欢
    • 2018-03-08
    • 2011-02-08
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多