Visual studio 在现有MFC项目中使用CUDA

Visual studio 在现有MFC项目中使用CUDA,visual-studio,mfc,cuda,Visual Studio,Mfc,Cuda,我有一个现有的MFC应用程序,它使用CPU优化的BLAS库进行矩阵计算。我对向我的项目中添加CuBLAS计算功能感兴趣,但我有以下两个问题: 1) 我不确定此时是否需要在指定自己的CUDA内核、线程和块配置方面做些什么。如果是这样的话,您建议在修改算法时最关注体系结构的哪些部分 2) 我感兴趣的是(a)在VisualStudio中创建一个新项目,在程序中使用CuBLAS功能,或者(b)在现有MFC项目中集成CuBLAS功能。但是,我在配置VisualStudio项目以正确使用CUDA SDK时遇

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

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

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

提前感谢您的评论。

1)如果您只是想使用CUBLAS,您不需要费心编写自己的内核。CUBLAS是一个内核和C包装器的集合,打包到一个库中,设计成可以从其他程序轻松调用。使用CUBLAS不需要了解CUDA线程、块等的详细信息


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

我知道使用CUBLAS不需要了解CUDA线程、块等的详细信息,但它是否有助于优化目的?线程、块、网格、扭曲,共享内存是内核内部的,因此除非您创建自己的内核,或者编辑现有内核的源代码,否则该级别的细节可能与您无关。正如我在回答您的另一个问题时提到的,最大的瓶颈通常是通过PCIe总线从主内存到视频内存的数据传输。但《CUDA编程指南》对所有这些都做了很好的解释。如果你想对CUDA架构有更深入的了解,也许你应该把它读一遍。谢谢你的深入解释。