[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;
}
- distributed octave, Jason Tillett, 2003/11/06
- Re: distributed octave,
JD Cole <=
- Message not available
Message not available