It’s just yulistic!

PARSEC 3.0 installation issues

· by yulistic · Read in about 3 min · (473 Words)
installation parsec simulator

0. Refer to official site

(http://parsec.cs.princeton.edu/parsec3-doc.htm#simulation)

1. Prerequisites: refer to requirements section in download page

(http://parsec.cs.princeton.edu/download.htm)

2. correct smime.pod error

Error message is like below.

    installing man1/smime.1
    smime.pod around line 272: Expected text after =item, not a number
    smime.pod around line 276: Expected text after =item, not a number
    smime.pod around line 280: Expected text after =item, not a number
    smime.pod around line 285: Expected text after =item, not a number
    smime.pod around line 289: Expected text after =item, not a number
    POD document had syntax errors at /usr/bin/pod2man line 71.
    make: *** [install_docs] Error 255

Modify files: [parsec_root_dir]/pkgs/libs/ssl/src/doc/apps/smime.pod [parsec_root_dir]/pkgs/libs/ssl/src/doc/ssl/SSL_COMP_add_compression_method.pod … and so on.

Change =item 0to =item C<0>

(Also other numbers as below.)

    268 =item C<0>
    269 
    270 the operation was completely successfully.
    271 
    272 =item C<1>
    273 
    274 an error occurred parsing the command options.
    275 
    276 =item C<2>
    277 
    278 one of the input files could not be read.
    279 
    280 =item C<3>
    281 
    282 an error occurred creating the PKCS#7 file or when reading the MIME
    283 message.
    284 
    285 =item C<4>
    286 
    287 an error occurred decrypting or verifying the message.
    288 
    289 =item C<5>
    290 
    291 the message was verified correctly but an error occurred writing out
    292 the signers certificates.

You can use the following shell script. (in the root directory of the benchmark)

    #! /bin/bash
    for i in 0 1 2 3 4 5 6 7 8 9
    do
        echo "Replacing '=item $i' to '=item C<$i>'"
        grep -rl "=item $i" * | xargs sed -i "s/=item $i/=item C<$i>/g"
    done

3. __mbstate_t conflict

Error message is like below.

    /usr/include/wchar.h:94:3: error: conflicting types for ‘__mbstate_t’
     } __mbstate_t;
       ^
    In file included from ../include/machine/bsd_endian.h:37:0,
                     from ../include/sys/bsd_types.h:44,
                     from ../include/sys/bsd_param.h:64,
                     from if_host.c:48:
    ../include/sys/bsd__types.h:105:3: note: previous declaration of ‘__mbstate_t’ was here
     } __mbstate_t;

It is because of conflict between system declaration and parsec library.

Comment out the declaration of __mbstate_t in parsec library:  [parsec_root_dir]/pkgs/libs/uptcpip/src/include/sys/bsd__types.h (not bsd_types.h)

     96 /*
     97  * mbstate_t is an opaque object to keep conversion state during multibyte
     98  * stream conversions.
     99  */
    100 //#ifndef __mbstate_t_defined
    101 //# define __mbstate_t_defined    1
    102 //typedef union {
    103     //char      __mbstate8[128];
    104     //__int64_t _mbstateL;  [> for alignment <]
    105 //} __mbstate_t;
    106 //#endif 

— Added. November 4, 2015 —

According to the comment from Shwartz, following packages are required on Ubuntu 14.04.1.

    sudo apt-get install -y build-essential m4 x11proto-xext-dev libglu1-mesa-dev libxi-dev libxmu-dev libtbb-dev

— Added. Mar 31, 2020 —

  • gcc and g++ version 4.8 was used for compilation in Ubuntu 18.04.

4. HUGE undeclared error while building ferret

HUGE is replaced to DBL_MAX. Replace all HUGEs in ferret source code to DBL_MAX. You might want the following script. Run it in the root directory of the benchmark.

# Fix HUGE related error.
grep -rl "HUGE" pkgs/apps/ferret | xargs sed -i "s/HUGE/DBL_MAX/g"
grep -rl "HUGE" pkgs/netapps/netferret | xargs sed -i "s/HUGE/DBL_MAX/g"

Comments