Metadata-Version: 2.4
Name: cannLog
Version: 0.1.0
Summary: CANN simulation log parser and web viewer
Author: CANN Log Parser Contributors
License-Expression: MIT
Keywords: cann,simulator,log,viewer,visualization
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Software Development :: Debuggers
Classifier: Topic :: System :: Logging
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Dynamic: license-file

# CANN Sim Log Viewer

用于浏览和解析 `cannsim` 仿真日志的本地 Web 可视化工具。后端给定日志目录启动，前端在浏览器中动态查看日志、访存数据和指令关联关系。

## 安装

从 PyPI 安装：

```bash
pip install cannLog
```

从源码安装：

```bash
pip install .
```

开发模式安装：

```bash
pip install -e .
```

安装后会提供两个等价命令：

```bash
cann-log-parser /path/to/log_dir --host localhost --port 8000
cann-log-viewer /path/to/log_dir --host localhost --port 8000
```

也可以继续使用兼容入口：

```bash
python -m cann_log_parser.server /path/to/log_dir --host localhost --port 8000
python -m app.server /path/to/log_dir --host localhost --port 8000
```

打开：`http://localhost:8000`

## 已支持的日志类型

- 指令日志：`*.instr_log.dump`、`*.instr_popped_log.dump`
- 访存日志：`*.rd_log.dump`、`*.wr_log.dump`
- PV 访存日志：`*rvec_pv.dump`，按指令 ID 合并 `Rd/Wr` 数据块并支持解码
- CCU/队列事件：`*.ccu_log.dump`、`*issque.dump`、`*.OOO.dump`
- PMU/summary：`*.perf_pmu.log`、`*.perf_pmu_per_vf.log`、`*summary_log`

## 功能

- 给定日志目录启动本地 Web 服务
- 前端动态加载文件树和事件页，大日志分页读取
- 访存日志按指令 ID 合并展示；同一指令拆开的多个数据块会作为同一事件的多个 block 展示
- 支持 `hex32`、`uint8/int8`、`uint16/int16/float16/bfloat16`、`uint32/int32/float32`、`uint64/int64/float64` 解码
- 按 `instructionId` 跨文件查询关联访存事件，并可跳转定位到具体事件
- 支持分类、Core、Unit、文件名过滤
- 支持多日志页签、右键菜单、新窗口打开、重载日志

## 使用示例

```bash
cann-log-parser /mnt/workspace/log/cann-sim/log_ca --host 0.0.0.0 --port 18000
```

打开：`http://localhost:18000`

## API

- `GET /api/overview`
- `GET /api/files`
- `GET /api/file?path=...&page=1&pageSize=50`
- `GET /api/stats?path=...`
- `GET /api/instruction-memory?instructionId=4309`
- `GET /api/decode-memory?path=core0.veccore0.ub.wr_log.dump&eventIndex=0&dtype=float32`
- `POST /api/reload`

## 打包发布到 PyPI

安装构建和上传工具：

```bash
python -m pip install build twine
```

构建源码包和 wheel：

```bash
python -m build
```

检查包元数据：

```bash
python -m twine check dist/*
```

上传到 TestPyPI：

```bash
python -m twine upload --repository testpypi dist/*
```

上传到正式 PyPI：

```bash
python -m twine upload dist/*
```

发布前建议：

- 确认 `pyproject.toml` 中的 `name = "cannLog"` 没有被 PyPI 占用
- 为每次发布递增 `version`
- 如果需要开源发布，补充许可证文件并在 `pyproject.toml` 里声明 license

## 实现说明

- 后端仅使用 Python 标准库，无运行时依赖
- 前端为原生 HTML/CSS/JS，无需构建
- 静态资源已作为 package data 打进 wheel，pip 安装后可直接运行

## 许可证

本项目使用 MIT License，详见 `LICENSE`。
