当前位置:  开发笔记 > 编程语言 > 正文

用于CUDA编程的GPU仿真器,无需硬件

如何解决《用于CUDA编程的GPU仿真器,无需硬件》经验,为你挑选了5个好方法。

问题:是否有Geforce卡的仿真器,可以让我在没有实际硬件的情况下编程和测试CUDA?


信息:

I'm looking to speed up a few simulations of mine in CUDA, but my problem is that I'm not always around my desktop for doing this development. I would like to do some work on my netbook instead, but my netbook doesn't have a GPU. Now as far as I know, you need a CUDA capable GPU to run CUDA. Is there a way to get around this? It would seem like the only way is a GPU emulator (which obviously would be painfully slow, but would work). But whatever way there is to do this I would like to hear.

I'm programming on Ubuntu 10.04 LTS.



1> 小智..:

这种反应可能为时已晚,但无论如何都值得注意.如果您希望使用仿真器或LLVM后端,可以在没有安装CUDA设备驱动程序(libcuda.so)的情况下编译GPU Ocelot(我是其中一个核心贡献者).我在没有NVIDIA GPU的系统上演示了仿真器.

仿真器试图忠实地实现PTX 1.4和PTX 2.1规范,其中可能包括旧GPU不支持的功能.LLVM转换器致力于从PTX到x86的正确和高效转换,这有望使CUDA成为编程多核CPU和GPU的有效方法.-deviceemu在很长一段时间内,CUDA一直被弃用,但LLVM转换器一直都比较快.

此外,在仿真器中内置了几个正确性检查器以验证:对齐的存储器访问,对共享存储器的访问是否正确同步,以及全局存储器解除引用访问分配的存储器区域.我们还实现了一个命令行交互式调试器,它主要受到gdb的启发,可以单步执行CUDA内核,设置断点和观察点等等......这些工具专门用于加快CUDA程序的调试; 你会发现它们很有用.

对于仅限Linux的方面感到抱歉.我们已经启动了Windows分支(以及Mac OS X端口),但工程负担已经足够大,足以强调我们的研究追求.如果有人有任何时间和兴趣,他们可能希望帮助我们为Windows提供支持!

希望这可以帮助.

[1]:GPU Ocelot - https://code.google.com/archive/p/gpuocelot/

[2]:Ocelot Interactive Debugger - http://forums.nvidia.com/index.php?showtopic=174820


嗨 - 你还在吗?是否有关于如何在现有CUDA构建环境中使用Ocelot构建程序的文档?此外,Ocelot是否与Thrust合作?

2> Mateusz Piot..:
对于那些在2016年(甚至2017年)寻求答案的人......

放弃

毕竟我没能模仿GPU.

gpuocelot如果您满足其依赖项列表,则可以使用它.

我试图为BunsenLabs获得一个模拟器(Linux 3.16.0-4-686-pae#1 SMP Debian 3.16.7-ckt20-1 + deb8u4(2016-02-29)i686 GNU/Linux).

我会告诉你我学到了什么.


    nvcc曾经-deviceemu在CUDA Toolkit 3.0中有一个选项

    我下载了CUDA Toolkit 3.0,安装它并尝试运行一个简单的程序:

    #include 
    
    __global__ void helloWorld() {
        printf("Hello world! I am %d (Warp %d) from %d.\n",
            threadIdx.x, threadIdx.x / warpSize, blockIdx.x);
    }
    
    int main() {
        int blocks, threads;
        scanf("%d%d", &blocks, &threads);
        helloWorld<<>>();
        cudaDeviceSynchronize();
        return 0;
    }
    

    请注意,在CUDA Toolkit 3.0 nvcc/usr/local/cuda/bin/.

    原来我编译时遇到了困难:

    NOTE: device emulation mode is deprecated in this release
          and will be removed in a future release.
    
    /usr/include/i386-linux-gnu/bits/byteswap.h(47): error: identifier "__builtin_bswap32" is undefined
    
    /usr/include/i386-linux-gnu/bits/byteswap.h(111): error: identifier "__builtin_bswap64" is undefined
    
    /home/user/Downloads/helloworld.cu(12): error: identifier "cudaDeviceSynchronize" is undefined
    
    3 errors detected in the compilation of "/tmp/tmpxft_000011c2_00000000-4_helloworld.cpp1.ii".
    

    我在互联网上发现,如果我使用gcc-4.2或类似古代而不是gcc-4.9.2错误可能会消失.我放弃.


    gpuocelot

    斯特林格的回答链接到一个非常古老的gpuocelot项目网站.所以起初我认为该项目在2012年左右被放弃了.实际上,它在几年后被放弃了.

    以下是一些最新的网站:

    GitHub ;

    项目网站 ;

    安装指南.

    我试着按照指南安装gpuocelot .我在安装过程中遇到了几个错误,但我又放弃了.gpuocelot不再受支持,取决于一组非常特定的库和软件版本.

    您可能会尝试从2015年7月开始学习本教程,但我不保证它会起作用.我没有测试过它.


    MCUDA

    MCUDA转换框架是一个基于linux的工具,旨在将CUDA编程模型有效地编译为CPU架构.

    它可能有用.这是该网站的链接.


    CUDA废物

    它是在Windows 7和8上使用的模拟器.我没试过它.它似乎不再开发(最后一次提交日期为2013年7月4日).

    以下是该项目网站的链接:https://code.google.com/archive/p/cuda-waste/


    CU2CL

    最后更新:12.03.2017

    正如dashesy在评论中指出的那样,CU2CL似乎是一个有趣的项目.它似乎能够 CUDA代码转换为OpenCL代码.因此,如果您的GPU能够运行OpenCL代码,那么CU2CL项目可能是您感兴趣的.

    链接:

    CU2CL主页

    CU2CL GitHub存储库


这是一种耻辱!通过不提供慢速路径,很难在任何机器上构建和测试应用程序.这意味着,开发人员应该避免向Cuda添加依赖.对于一次性项目,业余爱好者和研究人员仍然可以使用它.不适用于客户的真实应用.
[CU2CL](https://github.com/vtsynergy/CU2CL)似乎很活跃,值得关注.
4.“ CUDA Waste”工作正常
5.使CU2CL工作

3> Stringer..:

您还可以检查gpuocelot项目,它是一个真正的模拟器,因为将模拟PTX(转换为CUDA代码的字节码).

还有一个LLVM转换器,测试它是否比使用-deviceemu时更快是有趣的.



4> Jubal..:

CUDA工具包内置一个,直到CUDA 3.0发布周期.我使用其中一个非常旧版本的CUDA,确保在使用nvcc编译时使用-deviceemu.


不推荐使用CUDA模拟器,你最好不要看gpuocelot.

5> Hugh Perkins..:

https://github.com/hughperkins/cuda-on-cl允许您在OpenCL 1.2 GPU上运行NVIDIA®CUDA™程序(完全披露:我是作者)

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有