help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: distributed octave


From: JD Cole
Subject: Re: distributed octave
Date: Fri, 07 Nov 2003 02:13:53 -0800
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031007

Jason,
I tried recompiling the "pre-patched" source, also under RedHat 9, and succeeded. So here are my thoughts: (1) The build_parallel source tries to apply the patch a specifically dated CVS tree. (I.e. I grab the CVS source ats of a certain date and patch that.) It's possible that there is a problem with my script, or as your inquiry has brought to light, there may be some changes in CVS which have causes a problem. (In the future it would be best if JWE could tag major Octave releases in CVS so they could be used as synchronization points.;-))

(2) My best guess as to why you couldn't "make" the pre-patched sources is that you don't have gperf installed (you can get that here: ftp://rpmfind.net/linux/redhat/9/en/os/i386/RedHat/RPMS/gperf-2.7.2-9.i386.rpm or, alternatively, it should be on one of your RedHat CDs), ./configure looks for gperf prior to compilation time. Generally the file oct-gperf.h is included in the Octave source, but since I changed octave.gperf, I forgot to add it to my distribution, sorry about that. I have attached the generated file if you would prefer not to install gperf (above).

(3) In addition to (2), don't forget to ./configure w/ the --enable-dl and --enable-shared flags. These are key. (I've changed this on the web site, again my apologies.)

If this doesn't help, please try to include more details about WHY the make command failed. I'm happy to help out.

Best,

JDoct
Jason Tillett wrote:

Has anyone successfully built a distributed octave binary (for mpi)
using  http://www.transientresearch.com/d-octave/index.php?menu=Download

I am trying to build on Redhat 9.

I am unable to get the ./build_parallel_sources to complete
and when I try to build the pre-patched source tree I get
through configure but am unable to make.

thank you
--------------------------------------
/* ANSI-C code produced by gperf version 2.7.2 */
/* Command-line: gperf -t -C -D -E -G -L ANSI-C -H octave_kw_hash -N 
octave_kw_lookup octave.gperf  */

enum octave_kw_id
{
  all_va_args_kw,
  break_kw,
  case_kw,
  catch_kw,
  continue_kw,
  do_kw,
  else_kw,
  elseif_kw,
  end_kw,
  end_try_catch_kw,
  end_unwind_protect_kw,
  endfor_kw,
  endfunction_kw,
  endif_kw,
  endswitch_kw,
  endwhile_kw,
  endparallel_kw,
  for_kw,
  function_kw,
  global_kw,
  gplot_kw,
  gsplot_kw,
  if_kw,
  magic_file_kw,
  magic_line_kw,
  otherwise_kw,
  replot_kw,
  return_kw,
  static_kw,
  switch_kw,
  try_kw,
  until_kw,
  unwind_protect_kw,
  unwind_protect_cleanup_kw,
  varargin_kw,
  varargout_kw,
  while_kw,
  parallel_kw,
  parallelsection_kw
};

struct octave_kw { const char *name; int tok; octave_kw_id kw_id; };
enum
  {
    TOTAL_KEYWORDS = 40,
    MIN_WORD_LENGTH = 2,
    MAX_WORD_LENGTH = 22,
    MIN_HASH_VALUE = 2,
    MAX_HASH_VALUE = 78
  };

/* maximum key range = 77, duplicates = 1 */

#ifdef __GNUC__
__inline
#else
#ifdef __cplusplus
inline
#endif
#endif
static unsigned int
octave_kw_hash (register const char *str, register unsigned int len)
{
  static const unsigned char asso_values[] =
    {
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79,  5, 79, 25, 10, 35,
       0,  0, 25, 25, 15,  0, 79,  0, 15, 79,
      45,  0,  0, 79, 10,  0, 35,  0, 10,  0,
      79, 10, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
      79, 79, 79, 79, 79, 79
    };
  return len + asso_values[(unsigned char)str[len - 1]] + asso_values[(unsigned 
char)str[0]];
}

static const struct octave_kw wordlist[] =
  {
    {"do", DO, do_kw},
    {"end", END, end_kw},
    {"else", ELSE, else_kw},
    {"while", WHILE, while_kw},
    {"endwhile", END, endwhile_kw},
    {"otherwise", OTHERWISE, otherwise_kw},
    {"break", BREAK, break_kw},
    {"endfor", END, endfor_kw},
    {"__FILE__", STRING, magic_file_kw},
    {"__LINE__", NUM, magic_line_kw},
    {"until", UNTIL, until_kw},
    {"switch", SWITCH, switch_kw},
    {"unwind_protect_cleanup", CLEANUP, unwind_protect_cleanup_kw},
    {"parallel", PARALLEL, parallel_kw},
    {"endswitch", END, endswitch_kw},
    {"endparallel", END, endparallel_kw},
    {"if", IF, if_kw},
    {"end_try_catch", END, end_try_catch_kw},
    {"endif", END, endif_kw},
    {"elseif", ELSEIF, elseif_kw},
    {"all_va_args", ALL_VA_ARGS, all_va_args_kw},
    {"for", FOR, for_kw},
    {"case", CASE, case_kw},
    {"static", STATIC, static_kw},
    {"continue", CONTINUE, continue_kw},
    {"persistent", STATIC, static_kw},
    {"global", GLOBAL, global_kw},
    {"try", TRY, try_kw},
    {"unwind_protect", UNWIND, unwind_protect_kw},
    {"replot", PLOT, replot_kw},
    {"end_unwind_protect", END, end_unwind_protect_kw},
    {"varargout", VARARGOUT, varargout_kw},
    {"catch", CATCH, catch_kw},
    {"endfunction", END, endfunction_kw},
    {"parallelsection", PARALLELSECTION, parallelsection_kw},
    {"return", FUNC_RET, return_kw},
    {"varargin", VARARGIN, varargin_kw},
    {"gplot", PLOT, gplot_kw},
    {"gsplot", PLOT, gsplot_kw},
    {"function", FCN, function_kw}
  };

static const signed char gperf_lookup[] =
  {
     -1,  -1,   0,   1,   2,   3,  -1,  -1,   4,   5,
     -1,  -1,  -1,  -1,  -1,   6,   7,  -1, -73,  -1,
     10,  11,  12,  13,  14,  -1,  15,  16,  17,  -1,
     18,  19, -32,  -2,  -1,  -1,  20,  -1,  21,  22,
     -1,  23,  -1,  24,  -1,  25,  26,  -1,  27,  28,
     -1,  29,  -1,  30,  31,  32,  33,  -1,  -1,  -1,
     34,  35,  -1,  36,  -1,  37,  38,  -1,  -1,  -1,
     -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  39
  };

#ifdef __GNUC__
__inline
#endif
const struct octave_kw *
octave_kw_lookup (register const char *str, register unsigned int len)
{
  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
    {
      register int key = octave_kw_hash (str, len);

      if (key <= MAX_HASH_VALUE && key >= 0)
        {
          register int index = gperf_lookup[key];

          if (index >= 0)
            {
              register const char *s = wordlist[index].name;

              if (*str == *s && !strcmp (str + 1, s + 1))
                return &wordlist[index];
            }
          else if (index < -TOTAL_KEYWORDS)
            {
              register int offset = - 1 - TOTAL_KEYWORDS - index;
              register const struct octave_kw *wordptr = 
&wordlist[TOTAL_KEYWORDS + gperf_lookup[offset]];
              register const struct octave_kw *wordendptr = wordptr + 
-gperf_lookup[offset + 1];

              while (wordptr < wordendptr)
                {
                  register const char *s = wordptr->name;

                  if (*str == *s && !strcmp (str + 1, s + 1))
                    return wordptr;
                  wordptr++;
                }
            }
        }
    }
  return 0;
}

reply via email to

[Prev in Thread] Current Thread [Next in Thread]