简单问题: 是否可以在不分配内存的情况下计算或获得阵列的最佳音高,如
cudaMallocPitch(void** p, size_t *pitch, size_t width, size_t height)
我想在没有分配内存的情况下获得音调,然后使用函数cudaMalloc!
(如果想为cuda平台实现一些缓存分配的缓存分配器,这是至关重要的)
是吗:
// round width to next mulitple of prop.textureAlignment;
size_t proper_pitch = ((width / (size_t)device.m_prob.textureAlignment) + 1) * device.m_prob.textureAlignment;
更新 我现在将proper_pitch计算为32/64/128字节的最小上部倍数: 我没有试过这个,我仍然不知道运行时API可以做什么,也许看看已经分配的内存并做一些拟合?在CUDA编程指南中,对于完全合并的访问,上面是必要的要求(不够,因为在运行时warp需要不断访问)...
// use Cuda Programming Guide Alignmenet (which should be the best i think)
// Upper closest multible of 32/64/128
//size_t upperMultOf32 = ((widthInBytes + 32 - 1)/32)*32; // ((widthInBytes-1)/32 + 1)*32
proper_pitch = std::min(
std::min( ((widthInBytes + 32 - 1)>>5)<<5 , ((widthInBytes + 64 - 1)>>6)<<6 ),
((widthInBytes + 128 - 1)>>7)<<7
);
答案 0 :(得分:2)
目前无法获得音高计算。细节可能是特定于硬件版本的,NVIDIA既没有记录计算,也没有通过API公开计算(尽管如此指出,这样做对他们来说是微不足道的。)
如果这是对现实世界用例的严重限制,我建议通过NVIDIA注册开发人员门户网站提出错误报告/功能请求。根据我的经验,他们会听取严肃的功能请求。
[这个答案主要来自评论,并作为社区维基条目添加,以便将这个问题从未答复的清单中删除]