GPU Emulator for CUDA programming without the hardware [closed] Ask Question

GPU Emulator for CUDA programming without the hardware [closed] Ask Question

Question: Is there an emulator for a Geforce card that would allow me to program and test CUDA without having the actual hardware?


Info:

CUDA でいくつかのシミュレーションを高速化したいと考えていますが、開発を行うためにデスクトップに常にいるわけではないのが問題です。代わりにネットブックで作業したいのですが、ネットブックには GPU がありません。私が知る限り、CUDA を実行するには CUDA 対応の GPU が必要です。これを回避する方法はありますか? 唯一の方法は GPU エミュレーターを使用する方法のようです (明らかに非常に遅いですが、機能します)。しかし、これを実現する方法が何であれ、ぜひ教えてください。

私はUbuntu 10.04 LTSでプログラミングしています。

ベストアンサー1

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) のエミュレーターを入手しようとしました。

私が学んだことをお話しします。


  1. nvcc-deviceemuCUDA Toolkit 3.0ではオプションがあった

    CUDA Toolkit 3.0 をダウンロードしてインストールし、簡単なプログラムを実行してみました。

    #include <stdio.h>
    
    __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<<<blocks, threads>>>();
        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エラーが消える可能性があることを発見しました。あきらめました。


  2. gpuocelot

    Stringer の回答には、非常に古いプロジェクト Web サイトへのリンクがありましたgpuocelot。そのため、最初はプロジェクトが 2012 年頃に中止されたと思いました。実際には、数年後に中止されました。

    以下に最新のウェブサイトをいくつか紹介します。

    私は次のようにgpuocelotをインストールしようとしましたガイドインストール中にいくつかのエラーが発生したため、再び諦めました。gpuocelotはサポートされなくなり、非常に特殊なバージョンのライブラリとソフトウェアのセットに依存します。

    フォローしてみるといいかもしれないこのチュートリアル2015 年 7 月から、動作を保証するものではありません。テストしていません。


  3. マクダ

    MCUDA 変換フレームワークは、CUDA プログラミング モデルを CPU アーキテクチャに効率的にコンパイルするように設計された Linux ベースのツールです。

    役に立つかもしれない。ここにウェブサイトへのリンク


  4. CUDA廃棄物

    これは、Windows 7 および 8 で使用するエミュレーターです。ただし、試したことはありません。もう開発されていないようです (最後のコミットは 2013 年 7 月 4 日です)。

    プロジェクトのウェブサイトへのリンクは次のとおりです:https://code.google.com/archive/p/cuda-waste/


  1. CU2CL

    最終更新日: 2017年3月12日

    としてダッシュなコメントで指摘されたように、CU2CL興味深いプロジェクトのようです。翻訳するCUDA コードを OpenCL コードに変換します。したがって、GPU が OpenCL コードを実行できる場合は、CU2CL プロジェクトが興味深いかもしれません。

    リンク:

おすすめ記事