This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

EVMK2H Benchmark Set-up

I am a newbie to the EVMK2H board, and am working to benchmark the performance of it by using a number of industry-recognized benchmarks (EEMBC).  This is an evaluation exercise, so we are working to simply compile benchmark code on the processor and run it.  We are not working to evaluate the DSP processing at this time, just the ARM processor.  We are remoting to the processor via Putty (like the Terra Term), copying code files there and make file, completing the compile and running the resultant executable on the core.  So, we are not using the MCSDK or CCS at present.  Just using the resident Linux on the board.  We are trying to figure out how to run the different benchmarks on a selection of the cores.  So, how do we simply remote into an individual core and execute our process there?  In Terra Term, how do you navigate to access the different cores?  Is there an address map of the cores?

 

Thanks.

  • Hi, Paul,

    You can't remote into the secondary cores. The SMP linux will be able to execute process on the secondary ARM cores if it is multithread.

    Rex

  • Rex,

    thanks for your response.  My task is one I need to complete in a matter of a few weeks.  Again, I am working to benchmark the 4 ARM cores on our EVMK2H board.  We are attempting to run the same benchmark code on each core singly, as well as run the same code on combinations of the cores (1 and 3,...).  We are hoping to be able to get this going very quickly.  We would prefer to simply kickoff these benchmarks with some kind of serial remote session to each core.  As you say, i can't remote into the secondary cores.  Can you fill me in on the quickest way to get this done?  Does it require use of the MCSDK tool?  Does it require assembling a task scheduler to kick off the individual tasks for each core?  Given that we are not looking to understand how to code this for a production delivery but only for benchmarking, we would rather not have to go through the process of learning the big picture of how to set this up for a production, and we would rather not have to use the processor utilities to manage the workload.  So, guidance on the quickest way is very helpful for us at this point.  Thanks!

  • Rex, if it is more helpful to simply make a phone call rather than provide text and instructions, my phone number is (303) 971-8971.   Thanks.

  • Rex, thanks for the phone call.  Very much appreciated.  i have some following questions about tools and needed environment.  Again, I have the EVMK2H board.  The TI website for that board says to use the following tools:

    - MCSDK 3.01.01.04,  as referenced in   http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mcsdk/latest/index_FDS.html

    - this board and this version of MCSDK works with CCS V5, as referenced on the same page, but I thought I had read somewhere that CCS V5 was validated specifically for the EVMK2H, among other boards.

    So, my questions are:

    - is the CCS V6 validated for this board as well, and the webpage just needs to be updated?  Or is V5 still the only version that has been validated for the EVMK2H.  Can't imagine that V6 wouldn't deprecate the functionality so as to not support this board, but I want to make sure.

    - what I have for hosts are a Windows box with Win7 and a Linux box with RHEL 6.  You told me that the cross-compiler doesn't work for the Windows box, so linux is the way to go.  The linux variants that are supported for V5 don't include a RHEL or CentOs.  V6 says it is supported on CentOs (preliminary).

    - so, am I OK to use CCS V6 with this board?  Or do i really need to say with CCS V5 and find a way to host it?

    - is the CCS really necessary?  Not knowing what the MCSDK does on its own, I was wondering it is worked as a cmd line compiler/build process.  What we are trying to accomplish is build the kernel so as to enable/disable specific cores, enable/disable the ARM cache (if possible) and build the industry-provided benchmarks (meaning that we don't think we need to debug the code) for the target, and then port the new kernel to the target and boot it/run it.  If getting CCS to work is going to be a hassle, then can we accomplish our tasks without CCS?

    Thanks. 

  • Hi, Paul,

     CCSv5.5 is the version MCSDK had tested against at the time of its release. CCS v6 should work but has not been tested against. You may or may not find some glitches during operation. If you need to use CCS, it can be hosted either on Win7 or Linux (not sure about RedHat though).

    Our development environment is under Ubuntu Linux. We moved away from RedHat. The compiler should work, but again, RedHat has not been verified with MCSDK, but Ubuntu. Ubuntu is free and open source.

    You don't really need CCS unless you are working on DSP project, debugging, or in extreme case that the uboot is corrupted, then you need CCS to burn the uboot. Uboot update can be done in uboot prompt without CCS.

    Rex

  • Hi Rex,

    I had a couple of questions from the meeting yesterday.

    We still don’t know how to have insight into a couple of things.

    If we are trying to run the same executable on 2,3 or 4 cores, how do we do it?  How do we get the SMP to put one execution on 1 core and another execution on another core,…?  Do we fire off 2,3 or 4 tasks with the same .exe and let SMP assign the tasks to the cores? 

    If we have one executable that runs, I don’t hink it will be possible to break it up into parallel computing processes and farmed to the other cores.

    I presume that they have to be independent tasks kicked off separately.

     

    Then, is there a way to have a console for the other cores?  Not sure how to get benchmark results off of cores 1,2,3. Does a process retain the printf statements that the .exe is usually sending to the console?

    Do we end up needing to write a utility that saves printout to a file and then after the run we manually collect the resulting file?

     

    Also, we didn’t cover how to disable the cache yesterday.  Is it one of the settings in the menu that  covered yesterday?

    Thanks!

    Paul

  • HI, Paul,

    SMP linux does not designate which ARM core to run the application. Instead, using pthread, it will have the thead run on the idle core. You can refer to the smp example in mcsdk_linux_x_xx_xx_xx/example-applications/smp_test to see how tasks get spawn and executed in other cores. In the example, you can see each core prints the messge and they are all shown on the console.

    In the menuconfig, you can try to disable I-cache  and D-cache under System Type.

    Rex

     

  • Linux normally allows the user to set a process's CPU affinity.  I have not looked at TI's distribution for this EVM, but a desktop box will typically have the "taskset" command-line utility.  For example, if I wanted to let a process run on the second and fourth cores, I could use "taskset 10 my-process".  It is also possible to use sched_setaffinity() or pthread_setaffinity_np() from within the program, but the "taskset" utility is easier for simple test cases.

  • Rex,

    you and RandyP had mentioned that you had a document which shows your results of running benchmarks against 1 core, 2 cores, 3 cores, 4 cores.  You had also mentioned that TI had some documented results against specific industry standard benchmarks.  WOuld you be able to share these documents with me?

    Thanks,

    Paul

  • Paul,

    I am checking what need to be done before sharing.

    Rex

  • Rex,

     

    I disabled the following menuconfig variables.  Let me know if this is right when disabling cache:

     

    CPU_ICACHE_DISABLE

    Disable I-Cache (I-bit)

    Say Y here to disable the processor instruction cache. Unless

    you have a reason not to or are unsure, say N.

     

    CPU_DCACHE_DISABLE

    Disable D-Cache (C-bit)

    Say Y here to disable the processor data cache. Unless

    you have a reason not to or are unsure, say N.

     

    When disabling these (saying y), linux hangs at the “starting kernel….” Phase of the boot process.

     

    Mitesh 

  • Rex,

    We are looking to now do a net boot of the keystone2 processor using a NFS with our modified kernel.  Our admin on the machine I am working on has setup this up correctly (and tested this) (note: serverip is the same for NFS and TFTP), but I am still getting the following error when booting in regards to NFS:

    [  243.263992] IP-Config: Complete:

    [  243.267212]      device=eth0, hwaddr=08:00:28:32:9e:5d, ipaddr=129.197.194.206, mask=255.255.255.0, gw=129.197.194.254

    [  243.277898]      host=129.197.194.206, domain=lmms.lmco.com, nis-domain=(none)

    [  243.285115]      bootserver=0.0.0.0, rootserver=160.205.160.190, rootpath=

    [  243.291810]      nameserver0=129.197.217.100, nameserver1=129.197.216.100

    [  243.960819] VFS: Mounted root (nfs filesystem) on device 0:12.

    [  244.011869] devtmpfs: error mounting -2

     

    Here are my boot arguments for the NET BOOT:

    bootargs=console=ttyS0,115200n8 rootwait=1 rootfstype=nfs root=/dev/nfs rw nfsroot=160.205.160.190:/tftpboot,v3,tcp,rsize=4096,wsize=4096 ip=dhcp

     

    I am successfully able to TFTP images (kernel, device Tree, and boot monitor) over with the following tftp_root:

    Tftp_root /

    For NFS the cpu admin has updated our etc/exports file to mount the following location from root of the machine:

     

    Nfs_root /tftpboot

    Any ideas on what could be happening here?  

    Thanks

  • 1. Please set up the NFS filesystem by following below wiki.

    http://processors.wiki.ti.com/index.php/MCSDK_UG_Chapter_Exploring#Setting_up_an_NFS_filesystem

    Note: Use tisdk-rootfs.tar.gz image for NFS.

    tisdk-rootfs.tar.gz ti root file system gzipped tar file (may be used as NFS rootfs)

    2. Please follow below wiki for NFS booting from u-boot.

    http://processors.wiki.ti.com/index.php/MCSDK_UG_Chapter_Tools#Loading_and_Running_Linux_Kernel_using_tftp_with_NFS_file_system

    Thank you.

  • Hi Paul,

    In addition to Raja suggested, I would like to add some more hints.

    We were able to mount NFS on keystone 2.

    Boot args used:

    setenv bootargs 'earlyprintk debug console=ttyS0,115200n8 ip=dhcp mem=2G rootwait=1 rootfstype=     root=/dev/nfs nfsroot=192.168.1.146:/usr/local/ks2_fs,v3,tcp rw'

    setenv bootargs 'earlyprintk debug console=ttyS0,115200n8 ip=dhcp mem=2G rootwait=1 rootfstype=     root=/dev/nfs nfsroot=192.168.1.146:/usr/local/ks2_fs_cpio,v3,tcp rw'

    Please refer to the attachment of log.

    6283.log_nfs.txt
    root@titus:~# 
    root@titus:~# ls /usr/local/ks2_fs
    a.out                                                                   ipaddr                            srv
    bin                                                                     keystone-evm-ubifs.ubi            sys
    boot                                                                    lib                               test.EXE
    debug                                                                   media                             timestamping
    dev                                                                     mnt                               tisdk-rootfs.tar.gz
    ejre1.7.0_60                                                            mpmsrv_keystone2_example.out      tisdk-rootfs.ubifs
    ejre-7u60-fcs-b19-linux-arm-vfp-hflt-client_headful-07_may_2014.tar.gz  OMAP-L138_FlashAndBootUtils_2_40  tmp
    etc                                                                     pps-atvtimer.ko                   usr
    first.jar                                                               proc                              var
    gpio_irq_ks2.ko                                                         sbin                              www
    home                                                                    SDCARD
    root@titus:~# 
    root@titus:~# 
    root@titus:~# cat /etc/exports
    exports   exports~  
    root@titus:~# cat /etc/exports
    # /etc/exports: the access control list for filesystems which may be exported
    #		to NFS clients.  See exports(5).
    #
    # Example for NFSv2 and NFSv3:
    # /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
    #
    
    #Titus
    
    /var/lib/tftpboot *(rw,sync,no_root_squash,no_subtree_check)
    
    /usr/local/ks2_fs *(rw,sync,no_root_squash,no_subtree_check)
    
    /usr/local/targetNFS *(rw,sync,no_root_squash,no_subtree_check)
    
    /usr/local/filesystem_omapl138 *(rw,sync,no_root_squash,no_subtree_check)
    
    /usr/local/ks2_fs_cpio *(rw,sync,no_root_squash,no_subtree_check)
    
    /usr/local/armv7_fs_x11 *(rw,sync,no_root_squash,no_subtree_check)
    
    /home/ti/Downloads/am333x_ramfs *(rw,sync,no_root_squash,no_subtree_check)
    root@titus:~# 
    root@titus:~# 
    root@titus:~# exportfs -rav
    exporting *:/home/ti/Downloads/am333x_ramfs
    exporting *:/usr/local/armv7_fs_x11
    exporting *:/usr/local/ks2_fs_cpio
    exporting *:/usr/local/filesystem_omapl138
    exporting *:/usr/local/targetNFS
    exporting *:/usr/local/ks2_fs
    exporting *:/var/lib/tftpboot
    root@titus:~# 
    root@titus:~# exportfs
    /var/lib/tftpboot
    		<world>
    /usr/local/ks2_fs
    		<world>
    /usr/local/targetNFS
    		<world>
    /usr/local/filesystem_omapl138
    		<world>
    /usr/local/ks2_fs_cpio
    		<world>
    /usr/local/armv7_fs_x11
    		<world>
    /home/ti/Downloads/am333x_ramfs
    		<world>
    root@titus:~# 
    

    Refer to the following TI wiki.

    http://processors.wiki.ti.com/index.php/NFS_Setup

    [  243.960819] VFS: Mounted root (nfs filesystem) on device 0:12.

    [  244.011869] devtmpfs: error mounting -2

     Here are my boot arguments for the NET BOOT:

    bootargs=console=ttyS0,115200n8 rootwait=1 rootfstype=nfs root=/dev/nfs rw nfsroot=160.205.160.190:/tftpboot,v3,tcp,rsize=4096,wsize=4096 ip=dhcp

     I am successfully able to TFTP images (kernel, device Tree, and boot monitor) over with the following tftp_root:

    Tftp_root /

    For NFS the cpu admin has updated our etc/exports file to mount the following location from root of the machine:

     Nfs_root /tftpboot

    Any ideas on what could be happening here? 

    I suspect that the problem could be in NFS 's filesystem location.

    You have mentioned NFS ROOT path as "/tftpboot" but actually you had filesystem in different area as I think.

    Could you attach your /etc/exports file and please tell us where you had the extracted filesystem from tar ball like as I have at "/usr/local/ks2_fs" in my PC.