PyTorch C++扩展:访问Half-Tensors的数据
PyTorch C++ Extensions: Accessing data for Half Tensors
我正在尝试使用C++Tensor API为PyTorch编写C++/CUDA扩展,我希望我的代码能同时使用float32和float16(半精度(。我不知道如何访问来自Python的半张量的数据指针。
以下是我对浮动张量的处理方法:
// Access data pointer for float Tensor A
torch::Tensor A;
float* ptr = A.data<float>();
以下是我对半张量的尝试:
// CUDA float 16 type
// undefined symbol: _ZNK2at6Tensor4dataI6__halfEEPT_v
A.data<__half>();
// PyTorch float16 type
// error: no instance of function template "at::Tensor::data"
A.data<torch::ScalarType::Half>();
// Casting to __half*
// This compiles but throws and error if the requested pointer type doesn't match the Tensor type:
// RuntimeError: expected scalar type Float but found Half
(__half*)(A.data<float>());
我试着查看C++api源代码,但找不到其他类似float16类型的代码。
系统信息:Python 3.6.2PyTorch 1.0.1
正确的类型是at::Half
。
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 如何在C++中序列化结构数据
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 在c代码之间共享数据的最佳方式
- 链表,反向函数,数据结构
- 数据成员SFINAE的C++17测试:gcc vs clang
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何对点云数据进行排序
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- PyTorch C++扩展:访问Half-Tensors的数据