Thanks for sending an issue! Please fill in the following template to help quickly solve your problem.
https://gitcode.com/cann/ops-cv/blob/master/docs/QUICKSTART.md
std::vector<int64_t> selfXShape = {8, 8, 8, 8}; std::vector<float> selfXHostData(4096); // 4096 = 8 * 8 * 8 *8 for (int i = 0; i < 4096; ++i) { selfXHostData[i] = static_cast<float>(i % 10); }
在 QUICKSTART.md的 “四、算子验证 > 1. 修改测试输入” 章节中,示例代码使用硬编码数值 4096定义输入数据数组大小,而非基于输入张量形状动态计算。若用户修改 selfXShape的形状(如从 {8,8,8,8}改为 {16,16,16,16}),selfXHostData的大小未同步调整,将直接导致 数组越界 或 数据不完整,引发运行时错误。示例代码应具备鲁棒性,能够基于用户输入的张量形状自动计算所需内存大小,避免硬编码。
建议将硬编码的 4096替换为基于 selfXShape的动态计算逻辑:
std::vector<int64_t> selfXShape = {8, 8, 8, 8}; size_t totalElements = 1; for (auto dim : selfXShape) { totalElements *= dim; // 动态计算总元素数 } std::vector<float> selfXHostData(totalElements); for (size_t i = 0; i < totalElements; ++i) { selfXHostData[i] = static_cast<float>(i % 10); }
您好,感谢建议,这里修改下吧,硬编码看起来不太友好。
Thanks for sending an issue! Please fill in the following template to help quickly solve your problem.
Document Link(文档链接)
https://gitcode.com/cann/ops-cv/blob/master/docs/QUICKSTART.md
Issues Section(问题文档片段)
std::vector<int64_t> selfXShape = {8, 8, 8, 8}; std::vector<float> selfXHostData(4096); // 4096 = 8 * 8 * 8 *8 for (int i = 0; i < 4096; ++i) { selfXHostData[i] = static_cast<float>(i % 10); }Existing Issues(存在的问题)
在 QUICKSTART.md的 “四、算子验证 > 1. 修改测试输入” 章节中,示例代码使用硬编码数值 4096定义输入数据数组大小,而非基于输入张量形状动态计算。若用户修改 selfXShape的形状(如从 {8,8,8,8}改为 {16,16,16,16}),selfXHostData的大小未同步调整,将直接导致 数组越界 或 数据不完整,引发运行时错误。示例代码应具备鲁棒性,能够基于用户输入的张量形状自动计算所需内存大小,避免硬编码。
建议将硬编码的 4096替换为基于 selfXShape的动态计算逻辑:
std::vector<int64_t> selfXShape = {8, 8, 8, 8}; size_t totalElements = 1; for (auto dim : selfXShape) { totalElements *= dim; // 动态计算总元素数 } std::vector<float> selfXHostData(totalElements); for (size_t i = 0; i < totalElements; ++i) { selfXHostData[i] = static_cast<float>(i % 10); }