Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 张量流C++;API:如何将输入参数传递给CUDA内核 我对CUDA/C++编程很陌生,我坚持从ToSoFraseC++接口将输入参数传递给CUDA内核。_Python_C++_Tensorflow_Custom Operator - Fatal编程技术网

Python 张量流C++;API:如何将输入参数传递给CUDA内核 我对CUDA/C++编程很陌生,我坚持从ToSoFraseC++接口将输入参数传递给CUDA内核。

Python 张量流C++;API:如何将输入参数传递给CUDA内核 我对CUDA/C++编程很陌生,我坚持从ToSoFraseC++接口将输入参数传递给CUDA内核。,python,c++,tensorflow,custom-operator,Python,C++,Tensorflow,Custom Operator,首先,我注册以下Op: REGISTER_OP("Op") .Attr("T: {float, int64}") .Input("in: T") .Input("angles: T") .Output("out: T"); 之后,我想将第二个输入(角度)传递给CPU/GPU内核。不知怎的,下面的实现对于CPU实现来说很好,但是当我在GPU上运行它时,在Python中抛出了一个错误。。。 Pyth

首先,我注册以下Op:

REGISTER_OP("Op")
.Attr("T: {float, int64}")
.Input("in: T")
.Input("angles: T")
.Output("out: T");
之后,我想将第二个输入(角度)传递给CPU/GPU内核。不知怎的,下面的实现对于CPU实现来说很好,但是当我在GPU上运行它时,在Python中抛出了一个错误。。。 Python错误消息:

Process finished with exit code -1073741819 (0xC0000005)
这就是我试图访问输入值的方式。请注意,“角度”的输入始终是单个值(浮点或整数):

void计算(OpKernelContext*context)覆盖{
...
常量张量和输入角度=上下文->输入(1);
自动角度调整=输入角度调整();
常数浮点N=角度(0);
...
}
按如下方式调用CPU/GPU内核:

...
Functor<Device, T>()(
            context->eigen_device<Device>(),
            static_cast<int>(input_tensor.NumElements()),
            input_tensor.flat<T>().data(),
            output_tensor->flat<T>().data(),
            N);
...

。。。
函子()(
上下文->本征设备(),
静态\u转换(输入\u张量.NumElements()),
输入张量.flat().data(),
输出张量->展开().data(),
N) );
...

正如我之前所说的,在CPU上运行这个操作正是我想要的,但是当我在GPU上运行它时,我总是得到上面提到的Python错误。。。有人知道如何解决这个问题吗?我只能猜测我试图使用
角度\u平面(0)
访问GPU上的错误地址。。。因此,如果有人能在这里帮助我,我将不胜感激

您的错误是主机SEGFULT/地址无效。它不是来自GPU。它可能来自于试图在代码中的某个地方取消引用主机代码中的GPU指针,或者将GPU数据容器传递给需要主机数据的API。我看这里没有CUDA的问题。我想您需要关注Tensorflow主机代码中的数据流和使用情况。您遇到的错误是主机SEGFULT/无效地址。它不是来自GPU。它可能来自于试图在代码中的某个地方取消引用主机代码中的GPU指针,或者将GPU数据容器传递给需要主机数据的API。我看这里没有CUDA的问题。我想您需要关注Tensorflow主机代码中的数据流和使用情况。
...
Functor<Device, T>()(
            context->eigen_device<Device>(),
            static_cast<int>(input_tensor.NumElements()),
            input_tensor.flat<T>().data(),
            output_tensor->flat<T>().data(),
            N);
...