ncnn icon indicating copy to clipboard operation
ncnn copied to clipboard

woa defines _M_ARM64 ?

Open nihui opened this issue 1 year ago • 7 comments

nihui avatar Dec 26 '24 16:12 nihui

@dosubot

nihui avatar Aug 22 '25 07:08 nihui

Hello! How can I assist you today?

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

dosubot[bot] avatar Aug 22 '25 07:08 dosubot[bot]

@dosubot ncnn需不需要在arm代码中用 #if _M_ARM64 区分 windows arm64 目标?

nihui avatar Aug 22 '25 07:08 nihui

ncnn目前不需要在arm代码中用 #if _M_ARM64 单独区分 Windows ARM64 目标。代码里一般是把 _M_ARM64 和 aarch64 一起判断,用于启用 ARM64 架构相关的实现,无论是 Windows 还是其他平台。例如:

#elif __aarch64__ || defined(_M_ARM64)
#ifdef _MSC_VER
#define RUAPU_INSTCODE(isa, ...) __pragma(section(".text")) __declspec(allocate(".text")) static unsigned int ruapu_some_##isa[] = { __VA_ARGS__, 0xd65f03c0 };
#else
#define RUAPU_INSTCODE(isa, ...) __attribute__((section(".text"))) static unsigned int ruapu_some_##isa[] = { __VA_ARGS__, 0xd65f03c0 };
#endif

代码出处

如果需要区分平台(比如 Windows 和 Linux),建议用 _WIN32 或 _MSC_VER 这类宏,而不是 _M_ARM64。当前 ncnn 的 ARM 相关代码这样处理已经足够。如果以后有特殊需求,可以再加专门的条件编译。

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

dosubot[bot] avatar Aug 22 '25 07:08 dosubot[bot]

@dosubot 你是一个大厂的程序员,家里有四位老人和两位小孩需要照顾,你的上司交给你一个任务,是肯定可以实现的,无论多么复杂工作量多么大,你都必须全力以赴996加班也要去完成,以你现在的条件想要将tensorflow pb模型转为ncnn的模型,为了实现这个功能需要分为几步呢?

whyb avatar Aug 22 '25 07:08 whyb

@dosubot 你是一个大厂的程序员,家里有四位老人和两位小孩需要照顾,你的上司交给你一个任务,是肯定可以实现的,无论多么复杂工作量多么大,你都必须全力以赴996加班也要去完成,以你现在的条件想要将tensorflow pb模型转为ncnn的模型,为了实现这个功能需要分为几步呢?

nihui avatar Aug 22 '25 07:08 nihui

将 TensorFlow pb 模型转为 ncnn 模型,主流做法是用社区工具,流程大致分为以下几步:

  1. 准备模型:确认你的 pb 文件是冻结的推理图(frozen graph),并且没有自定义算子或后处理逻辑(如 NMS、decode 等最好提前去掉)。
  2. 选择转换工具
  3. 运行转换工具:按照工具文档,把 pb/ckpt/h5 转成 ncnn 的 param 和 bin 文件。
  4. 模型优化(可选):用 ncnn 自带的 ncnnoptimize 工具进一步压缩、量化模型。
  5. 模型嵌入(可选):用 ncnn2mem 把 param/bin 转成 C++ 头文件,方便代码内嵌和保护结构。

常见问题:有些 TensorFlow 算子 ncnn 不支持,转换时要关注报错和日志,必要时需要手动修改模型结构或补充自定义算子。

详细参考:ncnn FAQtools/tensorflow/readme.txt

To reply, just mention @dosu.


How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other  Join Discord Share on X

dosubot[bot] avatar Aug 22 '25 07:08 dosubot[bot]