gpt4 book ai didi

debugging - cudaMemPrefetchAsync() 返回 cudaErrorInvalidDevice - 为什么?

转载 作者:行者123 更新时间:2023-12-04 12:40:51 25 4
gpt4 key购买 nike

每当我打电话cudaMemPrefetchAsync()它返回错误代码 cudaErrorInvalidDevice .我确定我传递了正确的设备 ID(我的笔记本电脑中只有一个支持 CUDA 的 GPU,位于 id == 0 下)。

我相信下面发布的代码示例没有错误,但在行 52 (调用 cudaMemPrefetchAsync())我不断收到此错误。

我试过:

  • 清洁驱动安装。 (最新版本)
  • 我在谷歌上搜索答案,但找不到任何答案。 (我只找到了 this )

  • (我没有别的想法)

    系统规范:

    操作系统: Microsoft Windows 8.1 x64 主页。
    IDE:视觉工作室 2015
    CUDA 工具包: 8.0.61
    英伟达 GPU: GeForce GTX 960M
    NVIDIA GPU 驱动程序:版本 381.65(最新)
    计算能力: 5.0(麦克斯韦)
    统一内存支持:支持。
    英特尔集成 GPU:英特尔高清显卡 4600

    代码示例:
    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    // TEST AREA:
    // -- INCLUDE:
    /////////////////////////////////////////////////////////////////////////////////////////////////////////

    // Cuda Libs: ( Device Side ):
    #include <cuda_runtime.h>
    #include <device_launch_parameters.h>

    // Std C++ Libs:
    #include <iostream>
    #include <iomanip>
    ///////////





    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    // TEST AREA:
    // -- NAMESPACE:
    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    using namespace std;
    ///////////





    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    // TEST AREA:
    // -- START POINT:
    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    int main() {

    // Set cuda Device:
    if (cudaSetDevice(0) != cudaSuccess)
    cout << "ERROR: cudaSetDevice(***)" << endl;

    // Array:
    unsigned int size = 1000;
    double * d_ptr = nullptr;

    // Allocate unified memory:
    if (cudaMallocManaged(&d_ptr, size * sizeof(double), cudaMemAttachGlobal) != cudaSuccess)
    cout << "ERROR: cudaMallocManaged(***)" << endl;

    if (cudaDeviceSynchronize() != cudaSuccess)
    cout << "ERROR: cudaDeviceSynchronize(***)" << endl;

    // Prefetch:
    if(cudaMemPrefetchAsync(d_ptr, size * sizeof(double), 0) != cudaSuccess)
    cout << "ERROR: cudaMemPrefetchAsync(***)" << endl;

    // Exit:
    getchar();
    }
    ///////////

    最佳答案

    感谢 talonmies我意识到我的 GPU 不支持 prefetch特征。为了能够使用cudaMemPrefetchAsync(***) gpu 在 (cudaDeviceProp)deviceProp.concurrentManagedAccess 中必须具有非零值.

    查看更多 here .

    关于debugging - cudaMemPrefetchAsync() 返回 cudaErrorInvalidDevice - 为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43430216/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com