1

実際には、CUmodule が CUDA ドライバー API 関数で何を表しているのかを理解しようとしています。

多くの CUDA ドライバー API 関数には CUmodule ハンドルがありますが、それは何ですか? ドライバの呼び出し手順を操作する dll へのハンドルであり、CUDA 関数の名前で GetProcAddress のように呼び出すことができますか?

簡単にしてください(平易な英語が望ましい)

4

1 に答える 1

5

これは、ロードする cuda コンパイル済みバイナリ ファイルへのハンドルです(単純な Google ルックアップとロジック:P)

ソースからの例:

#include <stdio.h>
#include <cuda.h>
#include <cuda_runtime_api.h>

int main() {
    CUresult error;
    CUdevice cuDevice;
    CUcontext cuContext;
    CUmodule cuModule;
    CUfunction testkernel;
    // Initialize
    error = cuInit(0);
    if (error != CUDA_SUCCESS) printf("ERROR: cuInit, %i\n", error);
    error = cuDeviceGet(&cuDevice, 0);
    if (error != CUDA_SUCCESS) printf("ERROR: cuInit, %i\n", error);
    error = cuCtxCreate(&cuContext, 0, cuDevice);
    if (error != CUDA_SUCCESS) printf("ERROR: cuCtxCreate, %i\n", error);
    error = cuModuleLoad(&cuModule, "test.cubin");//see here!
    if (error != CUDA_SUCCESS) printf("ERROR: cuModuleLoad, %i\n", error);
    error = cuModuleGetFunction(&testkernel, cuModule, "a");
    if (error != CUDA_SUCCESS) printf("ERROR: cuModuleGetFunction, %i\n", error);
    return 0;
}
于 2013-06-11T13:11:49.753 に答える