• Gem5 Bug Record


    Bug

    BugCauseFix
    新增加的memory imitator会重复进入simulate在switch cpu时,memory imitator有残留的event没有deschedule 。即在switch之前,有event被schedule了,但在switch时,还没来得及调用,也没被清空,就会进入死循环。持续报告:“Entering event queue @ %d. Starting simulation…”没有解决,通过atomic时,不发送请求,也就不需要清空残留的event规避掉了
    packet指针错乱对于不需要response的packet,负责处理该packet的节点在处理完毕时,会直接delete该packet,如果此时中间的节点仍然hold该packet,后续该空间再被allocate时,就会指针错乱重新copy一份,或者换个方式使用packet
    libgomp: Thread creation failed: Resource temporarily unavailablegem5 se mode 不支持多线程,而spec2017 FP speed mode基本都使用了多线程1)可以尝试编译时,引入m5_thread(放弃) 2)编译spec2017时,EXTRA_OPTIMIZE = - DSPEC_SUPPRESS_OPENMP,编译时不使用openmp,可解。
    non temporal instruction try to access unmapped memoryx86 MOVNTDQ 在x86指令中认为是uncacheable,在se模式下不会分配页表,不在stack或者heap中,会报错。src/sim/mem_state.cc MemState::fixupFault中直接 给该地址分配memory解决 _ownerProcess->allocateMem(page_aligned, _pageBytes);
    full system spec2017 仿真时,num-cpu和copies的数量如果不匹配,其他的cpu会一直发送对0x2c00200c的读请求忽略即可,也可以将numcpu和copies的数量匹配一致
    restore checkpoint fatal condition can’t unserialize ‘system.cpu:_pid’replace switch_cpus with cpu
    spec2017 omentpp Error: Network `largeNet’ not found, check .ini and .ned files.largeNet 网络加载时遇到问题修改源代码,如下1)
    Gem5环境问题
    gem5-art环境bugpip install -U virtualenv
    gem5 报错 collect2: fatal error: ld terminated with signal 9最新版本已经没有–force-lto的optition了scons ./build/X86/gem5.opt --gold-linker 可解
    perf kvm counter error. A value greater than 1 prevents gem5 from making the syscall to perf_event_open.sudo sysctl -w kernel.perf_event_paranoid=1
    sniper环境问题
    编译失败使用docker编译模式,结果发现Error: ‘PIN_REGISTER’ has not been declared,切换pin_kit的版本到 Pin 3.22 ,软连接后,编译成功。
    ubuntu环境问题
    网络不通检查了windows防火墙设置,vmware的网络设置等一系列之后发现是ubuntu自身问题sudo service network-manager stop; sudo rm /var/lib/NetworkManager/NetworkManager.state; sudo service network-manager start; sudo vim /etc/NetworkManager/NetworkManager.conf; sudo service network-manager restart
    超算环境问题
    gui卡死ps -ef / grep session 找到 xfce-session的pid之后,kill该进程,即重启了gui,当然所有的进程也都杀死了
    1. omnetpp内的函数替换为以下
    int NEDResourceCache::doLoadNedSourceFolder(const char *foldername, const char *expectedPackage)
    {
        PushDir pushDir(foldername);
        int count = 0;
        int numFiles = 13;
        std::string filelist[13]{"EtherAppCli.ned", "EtherBus.ned", "EtherHost.ned", "EtherLLC.ned", "EtherSwitch.ned", "MACRelayUnit.ned",
                "MACRelayUnitPP.ned", "EtherAppSrv.ned", "EtherEncap.ned", "EtherHub.ned", "EtherMAC.ned", "LargeNet.ned", "MACRelayUnitNP.ned"};
    
        const char *filename;
    
        for (int i = 0; i < numFiles; i++)
        {
            filename = filelist[i].c_str();
            if (filename[0] == '.')
            {
                continue;  // ignore ".", "..", and dotfiles
            }
            else if (opp_stringendswith(filename, ".ned"))
            {
                doLoadNedFileOrText(filename, NULL, expectedPackage, false);
                count++;
            }
        }
        return count;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    推荐

    • 如果是使用se mode,建议使用arm arch,而不是x86,spec2017 很多指令x86支持的不好,arm支持的比较好
    • full system mode 多核模式下,cache和memory之间需要使用coherent X bar互联,支持snoop req才能运行,如果只是简单的bridge,port没有snoop的功能,会卡死。

    This bug list is the root cause of all my bitterness,wishing you guys do not suffer any more.


    ****

  • 相关阅读:
    【ROS】msg&srv
    设计模式之装饰者模式
    源码编译安装LAMP和LNMP
    SpringBoot 日志文件
    【无标题】
    与Cartesi 技术社区经理Shaheen 的 AMA 回顾
    第四章《类与对象》第2节:方法的定义
    Lwip之PPP、PPPoE实现(二)
    黑马点评环境搭建导入
    益智类游戏关卡设计:逆推法--巧解益智类游戏关卡设计
  • 原文地址:https://blog.csdn.net/hit_shaoqi/article/details/126575816