【发布时间】:2020-05-26 02:02:39
【问题描述】:
有时,人们想编写一个(小)CUDA 设备端函数,它返回两个值。在 C 语言中,您可以让该函数采用两个输出参数,例如:
__device__ void pair_maker(float x, float &out1, float& out2);
但在 C++ 中,编写此代码的惯用方式是返回 std::pair(嗯,可能是 std::tuple 或结构,但 C++ 元组很笨重,结构不够通用):
__device__ std::pair<float, float> pair_maker(float x);
我的问题:我是否可以信任 NVCC(使用 --expt-relaxed-constexpr)来优化指针的构造,并直接分配给我稍后从 .first 和 .second 元素分配给的变量对吗?
【问题讨论】:
标签: cuda std-pair nvcc copy-elision rvo