如何将参数传递给 cudaGraphNode?

问题描述

我正在尝试使用 cudaGraphNode。除了向它传递参数之外,我已经让一切正常。它不会崩溃,但会给出完全不同的结果。例如:如果我通过 1337,在内核中将是 960051513。

这是我的代码

#include <cuda_runtime.h>
#include "device_launch_parameters.h"
#include <cuda.h>

#include <iostream>
#include <chrono>

__global__ void TestKernel(int *value)
{
    printf("Value: %d\n",*value);
}

void ExecuteTestKernel()
{
    int* d_value;

    cudamalloc((void **)&d_value,sizeof(int));
    cudamemset(d_value,1337,sizeof(int));

    cudaGraph_t graph;
    cudaGraphCreate(&graph,0);

    cudaGraphNode_t kernelNode;

    void *kernelArgs[1] = {(void *)&d_value};

    cudaKernelNodeParams kernelNodeParams = {0};
    kernelNodeParams.func = (void *)TestKernel;
    kernelNodeParams.gridDim = dim3(1,1,1);
    kernelNodeParams.blockDim = dim3(1,1);
    kernelNodeParams.sharedMemBytes = 0;
    kernelNodeParams.kernelParams = kernelArgs;
    kernelNodeParams.extra = NULL;

    cudaGraphAddKernelNode(&kernelNode,graph,&kernelNodeParams);

    cudaError_t e = cudaGetLastError();
    if (e != cudaSuccess)
    {
        printf("Cuda failure %s:%d: '%s'\n",__FILE__,__LINE__,cudaGetErrorString(e));
        exit(0);
    }

    cudaGraphExec_t graphInstance;
    cudaGraphInstantiate(&graphInstance,NULL,0);

    cudaGraphLaunch(graphInstance,0);

    cudaFree(d_value);
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)