我已经阅读了GCC的代码生成约定选项,但无法理解"生成与位置无关的代码(PIC)"的作用.请举例说明一下这是什么意思.
我有一个完美的二叉树,即树中的每个节点都是叶节点,或者有两个子节点,并且所有叶节点都在同一级别上.每个节点都有一个深度优先的索引.
(例如,在具有3个级别的树中,根节点具有索引0,第一个孩子具有1,第一个孩子的第一个孩子具有2个,第一个孩子的第二个孩子具有3个,第二个孩子具有4个,第一个孩子第二个孩子有5个,第二个孩子的第二个孩子有6个.
0
/ \
1 4
/ \ / \
2 3 5 6
Run Code Online (Sandbox Code Playgroud)
)
我知道树的大小(节点数/最大级别),但只知道特定节点的索引,我需要计算它的级别(即它与根节点的距离).我如何最有效地完成这项工作?
我无法获得引用线性内存的无绑定纹理 - 结果始终为零/黑色读取.我的初始化代码:
缓冲区:
int const num = 4 * 16;
int const size = num * sizeof(float);
cudaMalloc(buffer, size);
auto b = new float[num];
for (int i = 0; i < num; ++i)
{
b[i] = i % 4 == 0 ? 1 : 1;
}
cudaMemcpy(*buffer, b, size, cudaMemcpyHostToDevice);
Run Code Online (Sandbox Code Playgroud)
纹理对象:
cudaTextureDesc td;
memset(&td, 0, sizeof(td));
td.normalizedCoords = 0;
td.addressMode[0] = cudaAddressModeClamp;
td.addressMode[1] = cudaAddressModeClamp;
td.addressMode[2] = cudaAddressModeClamp;
td.readMode = cudaReadModeElementType;
td.sRGB = 0;
td.filterMode = cudaFilterModePoint;
td.maxAnisotropy = …Run Code Online (Sandbox Code Playgroud)