【问题标题】:CUDA run solution with three .cu filesCUDA 使用三个 .cu 文件运行解决方案
【发布时间】:2018-02-17 20:13:04
【问题描述】:

我有 CUDA 8 和 Visual Studio 2015。

我想运行“CUDA by example”一书中的三个 cuda 文件(示例是直方图)。

我有三个 .cu 文件:

hist_cpu.cu
hist_gpu_gmem_atomics.cu
hist_gpu_shmem_atomics.cu

我想同时运行这些。这三个文件都包括book.h

如何编译这些文件并在一个输出中显示三个文件的结果?有可能吗?

【问题讨论】:

  • 执行此操作的一种方法是编写一个包装脚本,该脚本将编译和运行每个文件,连接它们的输出,然后打印它。
  • 你有这方面的例子吗,或者你能帮我写吗?
  • 我可以用 bash 编写它,它可以在 linux 上运行,但是由于您使用的是 Windows 系统,除非您使用 Cygwin,否则 bash 脚本将无济于事。为此,您还可以在 Windows 上使用其他脚本语言,例如 Python、Perl 或 PHP;如果您对此进行 google 搜索,您应该会找到许多有关如何执行此操作的资源。
  • CUDA 与 C 无关。

标签: c++ parallel-processing cuda gpu


【解决方案1】:

我假设您将 CUDA 与 C++ 一起使用。假设您有 3 个.cu 文件。每个文件都包含一个内核和一个调用内核的函数。

__global__
void testKernel1() {}

void func1()
{
    testKernel1<<<1,1,1>>>();
    printf("Called Kernel 1\n");
}

然后你有一个.cpp 文件,其中包含你的main 函数。在此文件中,使用 extern 关键字包含来自 .cu 文件的 3 个函数。

#include <iostream>

extern void func1();
extern void func2();
extern void func3();

int main(int argc, char** argv)
{
    func1(); //calling func1 from 1st .cu file
    func2(); //calling func2 from 2nd .cu file
    func3(); //calling func3 from 3rd .cu file
}

【讨论】:

  • .cu 文件有main函数
  • @K.Kempski 将这些 main 函数重命名为其他名称,如果这些函数接受参数,则将参数从您的 main 文件中的 main 函数传递给这些函数。
  • 现在它输出“无法打开文件 gcc.obj”
  • @K.Kempski 将您的 4 个文件上传到 pastebin 并在此处上传链接。
  • 加入这个聊天室:OpenCV Related,让我们谈谈。你必须做一些工作才能让它发挥作用。
猜你喜欢
  • 2015-03-07
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 2015-09-20
  • 1970-01-01
  • 2015-02-15
  • 1970-01-01
  • 2012-07-21
相关资源
最近更新 更多