我正在构建一个CUDA内核来计算函数的数字N*Njacobian,使用有限差分; 在我提供的示例中,它是平方函数(向量的每个条目是平方的).主机编码在线性内存中分配,而我在内核中使用二维索引.
我的问题是,我还没有找到一种方法来对矩阵cudaMalloc编辑的对角线求和.我的尝试一直是使用该语句threadIdx.x == blockIdx.x作为对角线的条件,但它只评估true它们的两个0.
这是内核和编辑:我发布了整个代码作为答案,基于评论中的建议(main()基本相同,而内核不是)
template <typename T>
__global__ void jacobian_kernel (
T * J,
const T t0,
const T tn,
const T h,
const T * u0,
const T * un,
const T * un_old)
{
T cgamma = 2 - sqrtf(2);
const unsigned int t = threadIdx.x;
const unsigned int b = blockIdx.x;
const unsigned int tid = t …Run Code Online (Sandbox Code Playgroud)