sstsimulator / sst-elements

SST Architectural Simulation Components and Libraries
http://www.sst-simulator.org
Other
88 stars 114 forks source link

The error happens when I use Ariel and Pintool #857

Closed liuyidinguh closed 4 years ago

liuyidinguh commented 6 years ago

New Issue for sst-elements

1 - Detailed description of problem or enhancement When I want to use Ariel and pintool, the error shows: FATAL: ArielComponent[arielcpu.cc:461:forkPINChild] Launching trace child failed! Child Exited with status 255 FATAL: ArielComponent[arielcpu.cc:461:forkPINChild] Launching trace child failed! Child Exited with status 255 I have tried to use both the example of Pintool and Pintool I wrote, which have been successfully compiled with the GCC 4.9.2, Pin 2.14 and SST/6.1.0. I think it may be resulted from the injection failure between Pintool parent process and child application process. 2 - What Operating system(s) and versions GNU/Linux bash-4.1

Thanks for helping me!

nmhamster commented 6 years ago

Hi thanks for reporting this issue. Few questions:

Does your application run outside of Ariel successfully?

Can you "ldd" on your binary and reply with the output to this issue? This helps us identify possible library conflicts

Also, can we get the Ariel section of your Python input to SST?

Thanks! We won't be able to look at this until a little later this week.

liuyidinguh commented 6 years ago

Yes, the application runs successfully outside, and when I use the example of application in SST(stream), the error is same. Here is some additional error information: SST Fatal Backtrace Information: 0 : sst(_ZNK3SST6Output5fatalEjPKcS2_jS2_z+0x2aa) [0x496ada] 1 : /project/xfu/apps/sstelements-6.1.0/lib/sst-elements-library/libariel.so(_ZN3SST14ArielComponent8ArielCPU12forkPINChildEPKcPPcRSt3mapISsSsSt4lessISsESaISt4pairIKSsSsEEE+0x505) [0x2b85d12de8e5] 2 : /project/xfu/apps/sstelements-6.1.0/lib/sst-elements-library/libariel.so(_ZN3SST14ArielComponent8ArielCPU4initEj+0x61) [0x2b85d12dea31] 3 : sst(_ZN3SST10Simulation10initializeEv+0x89) [0x49cbe9] 4 : sst() [0x44e283] 5 : sst(main+0x1138) [0x45d388] 6 : /lib64/libc.so.6(__libc_start_main+0xfd) [0x362961ed1d] 7 : sst() [0x44d9cd]

In the second problem, the "ldd" shows: -bash-4.1$ ldd bfs linux-vdso.so.1 => (0x00007ffd767fc000) libstdc++.so.6 => /share/apps/gcc-4.9.2/lib64/libstdc++.so.6 (0x00002ac2371bf000) libm.so.6 => /lib64/libm.so.6 (0x0000003e7b200000) libgomp.so.1 => /share/apps/gcc-4.9.2/lib64/libgomp.so.1 (0x00002ac2374eb000) libgcc_s.so.1 => /share/apps/gcc-4.9.2/lib64/libgcc_s.so.1 (0x00002ac237701000) libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003e7b600000) libc.so.6 => /lib64/libc.so.6 (0x0000003e7ae00000) /lib64/ld-linux-x86-64.so.2 (0x0000003e7a600000) librt.so.1 => /lib64/librt.so.1 (0x0000003e7ba00000)

Here is the Ariel section configuration: import sst import sys import ConfigParser, argparse from utils_ariel import * import os

sst_root = os.getenv( "HOME" ) corecount = 2

Parse commandline arguments

parser = argparse.ArgumentParser() parser.add_argument("-c", "--config", help="specify configuration file", required=True) parser.add_argument("-v", "--verbose", help="increase verbosity of output", action="store_true") parser.add_argument("-s", "--statfile", help="statistics file", default="./stats.csv") parser.add_argument("-l", "--statlevel", help="statistics level", type=int, default=16)

args = parser.parse_args()

verbose = args.verbose cfgFile = args.config statFile = args.statfile statLevel = args.statlevel

Build Configuration Information

config = Config(cfgFile, verbose=verbose)

print "Configuring Network-on-Chip..."

router = sst.Component("router", "merlin.hr_router") router.addParams(config.getRouterParams()) router.addParam('id', 0)

Connect Cores & caches

cpu = sst.Component("ariel8", "ariel.ariel") cpu.addParams( { "verbose" : "0", "maxcorequeue" : "256", "maxissuepercycle" : "2", "pipetimeout" : "0", "corecount" : str(corecount),

"profilefunctions": "1",

              "executable" :  sst_root + "/sst/Experiment/ariel/bfs",
              "appargcount" : "2",
            "apparg0" : "--dataset",
            "apparg1" :  sst_root + "/sst/Experiment/ariel/dataset/small",
              "arielmode" : "1",
            #"arieltool": sst_root + "/sst/sst-tools-devel/tools/ariel/fesimple/fesimple.so" ,
            "arieltool" : sst_root + "/sst/Experiment/Pintool/task.so",
            "launchparamcount":  "0" ,
            #"launchparam0": "-injection",
            #"launchparam1": "self" ,
            #"memorylevels" : "3",
       #"arielinterceptcalls" : "0"
            # "defaultlevel" : "0")
                            } )

for next_core_id in range(0,corecount): print "Configuring core %d..."%next_core_id

l1 = sst.Component("l1cache_%d"%(next_core_id), "memHierarchy.Cache")
l1.addParams(config.getL1Params())

l2 = sst.Component("l2cache_%d"%(next_core_id), "memHierarchy.Cache")
l2.addParams(config.getL2Params())

l3 = sst.Component("l3cache_%d"%(next_core_id), "memHierarchy.Cache")
l3.addParams(config.getL3Params())
l3.addParam( "network_address", next_core_id )
l3.addParam( "slice_id", next_core_id )

connect("cpu_cache_link_%d"%next_core_id,
        cpu, "cache_link_%d"%next_core_id,
        l1, "high_network_0",
        config.ring_latency).setNoCut()

connect("l2cache_%d_link"%next_core_id,
        l1, "low_network_0",
        l2, "high_network_0",
        config.ring_latency).setNoCut()

connect("l3cache_%d_link"%next_core_id,
        l2, "low_network_0",
        l3, "high_network_0",
        config.ring_latency).setNoCut()

connect("l3_ring_link_%d"%next_core_id,
        l3, "directory",
        router, "port%d"%next_core_id,
        config.ring_latency)

Connect Memory and Memory Controller to the ring

mem = sst.Component("memory", "memHierarchy.MemController") mem.addParams(config.getMemParams())

dc = sst.Component("dc", "memHierarchy.DirectoryController") dc.addParams(config.getDCParams(0)) dc.addParam("network_address", str(corecount))

connect("mem_link_0", mem, "direct_link", dc, "memory", config.ring_latency)

connect("dc_link_0", dc, "network", router, "port%d"%corecount, config.ring_latency)

===============================================================================

Enable SST Statistics Outputs for this simulation

sst.setStatisticLoadLevel(statLevel) sst.enableAllStatisticsForAllComponents({"type":"sst.AccumulatorStatistic"})

sst.setStatisticOutput("sst.statOutputCSV") sst.setStatisticOutputOptions( { "filepath" : statFile, "separator" : ", " } )

print "Completed configuring the multicore model"

hughes-c commented 4 years ago

@liuyidinguh Are you still having a problem with this?

allevin commented 4 years ago

No further response from author, closing this issue.

juddyoung commented 4 years ago

@hughes-c hello Hughes, I also met 'FATAL: ArielComponent[arielcpu.cc:512:forkPINChild] Launching trace child failed! Child Exited with status 255', the following is my configuration info.

ariel_params={ "verbose": "0", "maxcorequeue": "256", "maxissuepercycle": "2", "pipetimeout": "10", "corecount": groups * cores_per_group,

canneal

"arieltool" : "../pin-2.14-71313-gcc.4.4.7-linux/source/tools/ManualExamples/obj-intel64/pinatrace.so", "launcher" : "../pin-2.14-71313-gcc.4.4.7-linux/pin", "instrument_instructions" : "1", "executable" : "../parsec-3.0/pkgs/kernels/canneal/src/canneal", "launchparamcount" : 0,

"launchparam0" : "-ifeellucky",

    "appargcount" : 5,
    "apparg0" : "1",#NTHREADS NSWAPS TEMP NETLIST
    "apparg1" : "100",
    "apparg2" : "5",
    "apparg3" : "../parsec-3.0/pkgs/kernels/canneal/inputs/10.nets",
    "apparg4" : "32",

canneal

    "arielmode" : "1",#"Tool interception mode, set to 1 to trace entire program (default), set to 0 to delay tracing until ariel_enable() call., set to 2 to attempt auto-detect", "2"

"max_insts" : 500000000, "clock":str(clock),#add by judd "memmgr.memorylevels" : "2", "arielinterceptcalls" : "0", "memmgr.defaultlevel" : "0", "checkaddresses":1#add by judd } ariel = sst.Component("a0", "ariel.ariel") ariel.addParams(ariel_params)