切换版块
×
基础软件平台
PyTorch开发
TensorFlow开发
编解码及SDK开发
BANG语言与计算库
开发工具链
MagicMind开发
软件栈百科
云平台集成
硬件产品专区
大模型专区
寒武纪® AIDC® MLU370®系列加速卡
MLU200系列AI加速产品
经验方案交流区
经验案例与实践分享
开发者服务
开发者活动
公告与版务
高校支持
《智能计算系统》
签到
版块
社区
文档
SDK下载
370系列
200系列
开发平台
官网首页
注册
登录
全部版块
基础软件平台
硬件产品专区
经验方案交流区
开发者服务
高校支持
发布新帖
登录/注册
LV.1
haozhou.wong
75
积分
0
赞
9
帖子
40
回复
0
收藏
TA的动态
TA的帖子
TA的回复
ipuUtil与averageCoreUtilization的区别?
我的回复:#2JCBCam回复应该是先调用一个接口,然后再调用另一个接口。之间有个时间差,这段时间可能ipu运行,也可能没运行,这样两个接口获得的利用率就不太一样展开这个差别也太大了吧,不是时间差能够解释的,IPU Util 基本每0.2ms就会有数值变动
0
ipuUtil与averageCoreUtilization的区别?
我的回复:#2JCBCam回复应该是先调用一个接口,然后再调用另一个接口。之间有个时间差,这段时间可能ipu运行,也可能没运行,这样两个接口获得的利用率就不太一样展开#include <cndev.h> #include <stdio.h> #include <sys/time.h> int main() { // init libcndev cndevRet_t ret = cndevInit(0); // you can compare cndevRet manually, or just use cndevCheckErrors if (CNDEV_SUCCESS != ret) { printf("cndev init failed: %s.\\n", cndevGetErrorString(ret)); // should exit now exit(0); } cndevDevice_t devHandle; ret = cndevGetDeviceHandleByIndex(0, &devHandle); cndevCheckErrors(ret); struct timeval tv; while (1) { // get card[x]'s process utilization // in most cases, the number of processes running on a card will not exceed // 10 but if cndevProcessUtilization_t's space is not enough, // CNDEV_ERROR_INSUFFICIENT_SPACE will be returned unsigned pCount = 10; cndevProcessUtilization_t *procUtil = NULL; procUtil = (cndevProcessUtilization_t *)malloc( pCount * sizeof(cndevProcessUtilization_t)); procUtil->version = CNDEV_VERSION_5; ret = cndevGetProcessUtilization(&pCount, procUtil, devHandle); if (ret == CNDEV_ERROR_NOT_SUPPORTED) { printf("cndevGetProcessUtilization is not supported.\\n"); } else { // if ret is CNDEV_ERROR_INSUFFICIENT_SPACE, should get again while (ret == CNDEV_ERROR_INSUFFICIENT_SPACE) { procUtil = (cndevProcessUtilization_t *)realloc( procUtil, pCount * sizeof(cndevProcessUtilization_t)); ret = cndevGetProcessUtilization(&pCount, procUtil, devHandle); } cndevCheckErrors(ret); // printf("process: count: %d\\n", pCount); for (unsigned int i = 0; i < pCount; i++) { gettimeofday(&tv, NULL); printf("[time:%ld.%ld] ", tv.tv_sec, tv.tv_usec); printf("process %d:pid:%u, IPU Util:%u %%, Memory Util:%u %%\\n", i, (procUtil + i)->pid, (procUtil + i)->ipuUtil, (procUtil + i)->memUtil); // printf("pid:%u, IPU Util:%u %%, jpu Util:%u %%, vpu Enc Util:%u %%, vpu Dec Util:%u %%\\n", // (procUtil + i)->pid, (procUtil + i)->ipuUtil, // (procUtil + i)->jpuUtil, (procUtil + i)->vpuEncUtil, // (procUtil + i)->vpuDecUtil); } } free(procUtil); // get card[x]'s MLU utilization cndevUtilizationInfo_t utilInfo; utilInfo.version = CNDEV_VERSION_5; cndevCheckErrors(cndevGetDeviceUtilizationInfo(&utilInfo, devHandle)); gettimeofday(&tv, NULL); printf("[time:%ld.%ld] ", tv.tv_sec, tv.tv_usec); printf("Util:%d%%\\n", utilInfo.averageCoreUtilization); usleep(100); } return 0; }
0
ipuUtil与averageCoreUtilization的区别?
我的回复:#1JCBCam回复应该是两个接口调用的时间不同步导致的ipuUtil=所有进程利用率相加采样间隔应该都是50ms是哪种板卡?ipuUtil不是单个进程的利用率吗?
0
ipuUtil与averageCoreUtilization的区别?
我的回复:#2JCBCam回复应该是先调用一个接口,然后再调用另一个接口。之间有个时间差,这段时间可能ipu运行,也可能没运行,这样两个接口获得的利用率就不太一样展开#include#include#includeint main() { // init libcndev cndevRet_t ret = cndevInit(0); // you can compare cndevRet manually, or just use cndevCheckErrors if (CNDEV_SUCCESS != ret) { printf("cndev init failed: %s.\\n", cndevGetErrorString(ret)); // should exit now exit(0); } cndevDevice_t devHandle; ret = cndevGetDeviceHandleByIndex(0, &devHandle); cndevCheckErrors(ret); struct timeval tv; while (1) { // get card[x]'s process utilization // in most cases, the number of processes running on a card will not exceed // 10 but if cndevProcessUtilization_t's space is not enough, // CNDEV_ERROR_INSUFFICIENT_SPACE will be returned unsigned pCount = 10; cndevProcessUtilization_t *procUtil = NULL; procUtil = (cndevProcessUtilization_t *)malloc( pCount * sizeof(cndevProcessUtilization_t)); procUtil->version = CNDEV_VERSION_5; ret = cndevGetProcessUtilization(&pCount, procUtil, devHandle); if (ret == CNDEV_ERROR_NOT_SUPPORTED) { printf("cndevGetProcessUtilization is not supported.\\n"); } else { // if ret is CNDEV_ERROR_INSUFFICIENT_SPACE, should get again while (ret == CNDEV_ERROR_INSUFFICIENT_SPACE) { procUtil = (cndevProcessUtilization_t *)realloc( procUtil, pCount * sizeof(cndevProcessUtilization_t)); ret = cndevGetProcessUtilization(&pCount, procUtil, devHandle); } cndevCheckErrors(ret); // printf("process: count: %d\\n", pCount); for (unsigned int i = 0; i < pCount; i++) { gettimeofday(&tv, NULL); printf("[time:%ld.%ld] ", tv.tv_sec, tv.tv_usec); printf("process %d:pid:%u, IPU Util:%u %%, Memory Util:%u %%\\n", i, (procUtil + i)->pid, (procUtil + i)->ipuUtil, (procUtil + i)->memUtil); // printf("pid:%u, IPU Util:%u %%, jpu Util:%u %%, vpu Enc Util:%u %%, vpu Dec Util:%u %%\\n", // (procUtil + i)->pid, (procUtil + i)->ipuUtil, // (procUtil + i)->jpuUtil, (procUtil + i)->vpuEncUtil, // (procUtil + i)->vpuDecUtil); } } free(procUtil); // get card[x]'s MLU utilization cndevUtilizationInfo_t utilInfo; utilInfo.version = CNDEV_VERSION_5; cndevCheckErrors(cndevGetDeviceUtilizationInfo(&utilInfo, devHandle)); gettimeofday(&tv, NULL); printf("[time:%ld.%ld] ", tv.tv_sec, tv.tv_usec); printf("Util:%d%%\\n", utilInfo.averageCoreUtilization); usleep(100); } return 0; }运行结果如下:
0
ipuUtil与averageCoreUtilization的区别?
我的回复:#2JCBCam回复应该是先调用一个接口,然后再调用另一个接口。之间有个时间差,这段时间可能ipu运行,也可能没运行,这样两个接口获得的利用率就不太一样展开
0
ipuUtil与averageCoreUtilization的区别?
我的回复:#1JCBCam回复应该是两个接口调用的时间不同步导致的ipuUtil=所有进程利用率相加采样间隔应该都是50ms是哪种板卡?用的mlu370-x4
0
cndev返回的mlu利用率的采样周期是多少?
我的回复:#1lhscau回复您好,第一个问题,采样周期为50ms左右,第二个问题,暂未开放相关接口。请问上面这个接口返回的ipuutil和主贴中的averageCoreUtil的关系是什么呢?在我程序中输出的值差异很大(只有一个进程在使用mlu),采样周期好像也不一样,我现在是每1ms调用一次,ipuutil可以看见会有明显变化。
0
cambricon-k8s-device-plugin deamonsets启动失败
我的回复:#2lhscau回复加载加载了的
0
上一页
1
2
下一页
Github
开发平台
文档中心
新手必读
官方微信
版权所有 © 2026 寒武纪 Cambricon.com 备案/许可证号:
京ICP备17003415号-1
关闭