Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Caitlin Ross
codes
Commits
6bfad35b
Commit
6bfad35b
authored
Nov 06, 2013
by
Shane Snyder
Browse files
Merge branch 'master' of git.mcs.anl.gov:radix/codes-base
parents
b3c569cd
8f38d1b9
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
.gitignore
View file @
6bfad35b
...
...
@@ -28,10 +28,6 @@
/src/modelconfig/configparser.c
/src/modelconfig/configlex.h
/src/modelconfig/configlex.c
/src/iokernellang/codeslexer.h
/src/iokernellang/codeslexer.c
/src/iokernellang/codesparser.h
/codes/codeslexer.h
/tests/lp-io-test
# hide backups
...
...
Make.rules
View file @
6bfad35b
...
...
@@ -7,11 +7,11 @@
#
# specific rule for codesparser generation; we want the header to land in
# the codes/ directory because it will be installed for use by other repos
src/iokernellang/codesparser.c codes/codesparser.h: src/iokernellang/codesparser.y
mkdir -p codes
@test "x$(bison_ok)" != "yes" || echo "*** WARNING *** Bison version might be too old"
$(AM_V_GEN)$(YACC) --defines=codes/codesparser.h -o src/iokernellang/codesparser.c $< \
|| ( $(RM) $(basename $@).h $(basename $@).c ; exit 1)
#
src/iokernellang/codesparser.c codes/codesparser.h: src/iokernellang/codesparser.y
#
mkdir -p codes
#
@test "x$(bison_ok)" != "yes" || echo "*** WARNING *** Bison version might be too old"
#
$(AM_V_GEN)$(YACC) --defines=codes/codesparser.h -o src/iokernellang/codesparser.c $< \
#
|| ( $(RM) $(basename $@).h $(basename $@).c ; exit 1)
%.c %.h: %.y
...
...
codes/CodesKernelHelpers.h
View file @
6bfad35b
...
...
@@ -20,6 +20,7 @@
#include "codes/CodesIOKernelTypes.h"
#include "codes/CodesIOKernelParser.h"
#include "codes/codeslexer.h"
#include "codes/codes-workload.h"
#define CL_INST_MAX_ARGS 10
...
...
@@ -61,7 +62,7 @@ int codes_kernel_helper_parse_input(CodesIOKernel_pstate * ps,
int
codes_kernel_helper_bootstrap
(
char
*
io_kernel_path
,
char
*
def_io_kernel_path
,
char
*
io_kernel_meta_path
,
int
rank
,
CodesIOKernelContext
*
c
,
CodesIOKernel_pstate
**
ps
,
app_cf
_info
_t
*
task_info
,
CodesIOKernel_pstate
**
ps
,
codes_workload
_info
*
task_info
,
codeslang_inst
*
next_event
);
char
*
code_kernel_helpers_cleventToStr
(
int
inst
);
...
...
codes/codes-workload.h
View file @
6bfad35b
...
...
@@ -13,16 +13,27 @@
#define CODES_WORKLOAD_H
#include "ross.h"
#define MAX_NAME_LENGTH 512
typedef
struct
bgp_params
bgp_params
;
typedef
struct
codes_workload_info
codes_workload_info
;
struct
bgp_params
{
int
num_cns_per_lp
;
char
*
io_kernel_meta_path
;
char
*
bgp_config_file
;
char
*
io_kernel_path
;
char
*
io_kernel_def_path
;
char
io_kernel_meta_path
[
MAX_NAME_LENGTH
];
char
bgp_config_file
[
MAX_NAME_LENGTH
];
char
io_kernel_path
[
MAX_NAME_LENGTH
];
char
io_kernel_def_path
[
MAX_NAME_LENGTH
];
};
struct
codes_workload_info
{
int
group_id
;
/* group id */
int
min_rank
;
/* minimum rank in the collective operation */
int
max_rank
;
/* maximum rank in the collective operation */
int
local_rank
;
/* local rank? never being used in the bg/p model */
int
num_lrank
;
/* number of ranks participating in the collective operation*/
};
/* supported I/O operations */
...
...
@@ -106,6 +117,9 @@ void codes_workload_get_next(int wkld_id, int rank, struct codes_workload_op *op
/* Reverse of the above function. */
void
codes_workload_get_next_rc
(
int
wkld_id
,
int
rank
,
const
struct
codes_workload_op
*
op
);
/* get related information for the codes workload (specifically for the BG/P model) */
void
*
codes_workload_get_info
(
int
wkld_id
,
int
rank
);
/* NOTE: there is deliberately no finalize function; we don't have any
* reliable way to tell when a workload is truly done and will not
* participate in further reverse computation. The underlying generators
...
...
codes/codeslexer.h
0 → 100644
View file @
6bfad35b
#ifndef CodesIOKernel_HEADER_H
#define CodesIOKernel_HEADER_H 1
#define CodesIOKernel_IN_HEADER 1
#line 6 "src/iokernellang/codeslexer.h"
#line 8 "src/iokernellang/codeslexer.h"
#define YY_INT_ALIGNED short int
/* A lexical scanner generated by flex */
#define FLEX_SCANNER
#define YY_FLEX_MAJOR_VERSION 2
#define YY_FLEX_MINOR_VERSION 5
#define YY_FLEX_SUBMINOR_VERSION 35
#if YY_FLEX_SUBMINOR_VERSION > 0
#define FLEX_BETA
#endif
/* First, we deal with platform-specific or compiler-specific issues. */
/* begin standard C headers. */
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include <stdlib.h>
/* end standard C headers. */
/* flex integer type definitions */
#ifndef FLEXINT_H
#define FLEXINT_H
/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */
#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h,
* if you want the limit (max/min) macros for int types.
*/
#ifndef __STDC_LIMIT_MACROS
#define __STDC_LIMIT_MACROS 1
#endif
#include <inttypes.h>
typedef
int8_t
flex_int8_t
;
typedef
uint8_t
flex_uint8_t
;
typedef
int16_t
flex_int16_t
;
typedef
uint16_t
flex_uint16_t
;
typedef
int32_t
flex_int32_t
;
typedef
uint32_t
flex_uint32_t
;
#else
typedef
signed
char
flex_int8_t
;
typedef
short
int
flex_int16_t
;
typedef
int
flex_int32_t
;
typedef
unsigned
char
flex_uint8_t
;
typedef
unsigned
short
int
flex_uint16_t
;
typedef
unsigned
int
flex_uint32_t
;
/* Limits of integral types. */
#ifndef INT8_MIN
#define INT8_MIN (-128)
#endif
#ifndef INT16_MIN
#define INT16_MIN (-32767-1)
#endif
#ifndef INT32_MIN
#define INT32_MIN (-2147483647-1)
#endif
#ifndef INT8_MAX
#define INT8_MAX (127)
#endif
#ifndef INT16_MAX
#define INT16_MAX (32767)
#endif
#ifndef INT32_MAX
#define INT32_MAX (2147483647)
#endif
#ifndef UINT8_MAX
#define UINT8_MAX (255U)
#endif
#ifndef UINT16_MAX
#define UINT16_MAX (65535U)
#endif
#ifndef UINT32_MAX
#define UINT32_MAX (4294967295U)
#endif
#endif
/* ! C99 */
#endif
/* ! FLEXINT_H */
#ifdef __cplusplus
/* The "const" storage-class-modifier is valid. */
#define YY_USE_CONST
#else
/* ! __cplusplus */
/* C99 requires __STDC__ to be defined as 1. */
#if defined (__STDC__)
#define YY_USE_CONST
#endif
/* defined (__STDC__) */
#endif
/* ! __cplusplus */
#ifdef YY_USE_CONST
#define yyconst const
#else
#define yyconst
#endif
/* An opaque pointer. */
#ifndef YY_TYPEDEF_YY_SCANNER_T
#define YY_TYPEDEF_YY_SCANNER_T
typedef
void
*
yyscan_t
;
#endif
/* For convenience, these vars (plus the bison vars far below)
are macros in the reentrant scanner. */
#define yyin yyg->yyin_r
#define yyout yyg->yyout_r
#define yyextra yyg->yyextra_r
#define yyleng yyg->yyleng_r
#define yytext yyg->yytext_r
#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno)
#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column)
#define yy_flex_debug yyg->yy_flex_debug_r
/* Size of default input buffer. */
#ifndef YY_BUF_SIZE
#ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k.
* Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case.
* Ditto for the __ia64__ case accordingly.
*/
#define YY_BUF_SIZE 32768
#else
#define YY_BUF_SIZE 16384
#endif
/* __ia64__ */
#endif
#ifndef YY_TYPEDEF_YY_BUFFER_STATE
#define YY_TYPEDEF_YY_BUFFER_STATE
typedef
struct
yy_buffer_state
*
YY_BUFFER_STATE
;
#endif
#ifndef YY_TYPEDEF_YY_SIZE_T
#define YY_TYPEDEF_YY_SIZE_T
typedef
size_t
yy_size_t
;
#endif
#ifndef YY_STRUCT_YY_BUFFER_STATE
#define YY_STRUCT_YY_BUFFER_STATE
struct
yy_buffer_state
{
FILE
*
yy_input_file
;
char
*
yy_ch_buf
;
/* input buffer */
char
*
yy_buf_pos
;
/* current position in input buffer */
/* Size of input buffer in bytes, not including room for EOB
* characters.
*/
yy_size_t
yy_buf_size
;
/* Number of characters read into yy_ch_buf, not including EOB
* characters.
*/
int
yy_n_chars
;
/* Whether we "own" the buffer - i.e., we know we created it,
* and can realloc() it to grow it, and should free() it to
* delete it.
*/
int
yy_is_our_buffer
;
/* Whether this is an "interactive" input source; if so, and
* if we're using stdio for input, then we want to use getc()
* instead of fread(), to make sure we stop fetching input after
* each newline.
*/
int
yy_is_interactive
;
/* Whether we're considered to be at the beginning of a line.
* If so, '^' rules will be active on the next match, otherwise
* not.
*/
int
yy_at_bol
;
int
yy_bs_lineno
;
/**< The line count. */
int
yy_bs_column
;
/**< The column count. */
/* Whether to try to fill the input buffer when we reach the
* end of it.
*/
int
yy_fill_buffer
;
int
yy_buffer_status
;
};
#endif
/* !YY_STRUCT_YY_BUFFER_STATE */
void
CodesIOKernel_restart
(
FILE
*
input_file
,
yyscan_t
yyscanner
);
void
CodesIOKernel__switch_to_buffer
(
YY_BUFFER_STATE
new_buffer
,
yyscan_t
yyscanner
);
YY_BUFFER_STATE
CodesIOKernel__create_buffer
(
FILE
*
file
,
int
size
,
yyscan_t
yyscanner
);
void
CodesIOKernel__delete_buffer
(
YY_BUFFER_STATE
b
,
yyscan_t
yyscanner
);
void
CodesIOKernel__flush_buffer
(
YY_BUFFER_STATE
b
,
yyscan_t
yyscanner
);
void
CodesIOKernel_push_buffer_state
(
YY_BUFFER_STATE
new_buffer
,
yyscan_t
yyscanner
);
void
CodesIOKernel_pop_buffer_state
(
yyscan_t
yyscanner
);
YY_BUFFER_STATE
CodesIOKernel__scan_buffer
(
char
*
base
,
yy_size_t
size
,
yyscan_t
yyscanner
);
YY_BUFFER_STATE
CodesIOKernel__scan_string
(
yyconst
char
*
yy_str
,
yyscan_t
yyscanner
);
YY_BUFFER_STATE
CodesIOKernel__scan_bytes
(
yyconst
char
*
bytes
,
int
len
,
yyscan_t
yyscanner
);
void
*
CodesIOKernel_alloc
(
yy_size_t
,
yyscan_t
yyscanner
);
void
*
CodesIOKernel_realloc
(
void
*
,
yy_size_t
,
yyscan_t
yyscanner
);
void
CodesIOKernel_free
(
void
*
,
yyscan_t
yyscanner
);
/* Begin user sect3 */
#define CodesIOKernel_wrap(n) 1
#define YY_SKIP_YYWRAP
#define yytext_ptr yytext_r
#ifdef YY_HEADER_EXPORT_START_CONDITIONS
#define INITIAL 0
#endif
#ifndef YY_NO_UNISTD_H
/* Special case for "unistd.h", since it is non-ANSI. We include it way
* down here because we want the user's section 1 to have been scanned first.
* The user has a chance to override it with an option.
*/
#include <unistd.h>
#endif
#ifndef YY_EXTRA_TYPE
#define YY_EXTRA_TYPE void *
#endif
int
CodesIOKernel_lex_init
(
yyscan_t
*
scanner
);
int
CodesIOKernel_lex_init_extra
(
YY_EXTRA_TYPE
user_defined
,
yyscan_t
*
scanner
);
/* Accessor methods to globals.
These are made visible to non-reentrant scanners for convenience. */
int
CodesIOKernel_lex_destroy
(
yyscan_t
yyscanner
);
int
CodesIOKernel_get_debug
(
yyscan_t
yyscanner
);
void
CodesIOKernel_set_debug
(
int
debug_flag
,
yyscan_t
yyscanner
);
YY_EXTRA_TYPE
CodesIOKernel_get_extra
(
yyscan_t
yyscanner
);
void
CodesIOKernel_set_extra
(
YY_EXTRA_TYPE
user_defined
,
yyscan_t
yyscanner
);
FILE
*
CodesIOKernel_get_in
(
yyscan_t
yyscanner
);
void
CodesIOKernel_set_in
(
FILE
*
in_str
,
yyscan_t
yyscanner
);
FILE
*
CodesIOKernel_get_out
(
yyscan_t
yyscanner
);
void
CodesIOKernel_set_out
(
FILE
*
out_str
,
yyscan_t
yyscanner
);
int
CodesIOKernel_get_leng
(
yyscan_t
yyscanner
);
char
*
CodesIOKernel_get_text
(
yyscan_t
yyscanner
);
int
CodesIOKernel_get_lineno
(
yyscan_t
yyscanner
);
void
CodesIOKernel_set_lineno
(
int
line_number
,
yyscan_t
yyscanner
);
YYSTYPE
*
CodesIOKernel_get_lval
(
yyscan_t
yyscanner
);
void
CodesIOKernel_set_lval
(
YYSTYPE
*
yylval_param
,
yyscan_t
yyscanner
);
YYLTYPE
*
CodesIOKernel_get_lloc
(
yyscan_t
yyscanner
);
void
CodesIOKernel_set_lloc
(
YYLTYPE
*
yylloc_param
,
yyscan_t
yyscanner
);
/* Macros after this point can all be overridden by user definitions in
* section 1.
*/
#ifndef YY_SKIP_YYWRAP
#ifdef __cplusplus
extern
"C"
int
CodesIOKernel_wrap
(
yyscan_t
yyscanner
);
#else
extern
int
CodesIOKernel_wrap
(
yyscan_t
yyscanner
);
#endif
#endif
#ifndef yytext_ptr
static
void
yy_flex_strncpy
(
char
*
,
yyconst
char
*
,
int
,
yyscan_t
yyscanner
);
#endif
#ifdef YY_NEED_STRLEN
static
int
yy_flex_strlen
(
yyconst
char
*
,
yyscan_t
yyscanner
);
#endif
#ifndef YY_NO_INPUT
#endif
/* Amount of stuff to slurp up with each read. */
#ifndef YY_READ_BUF_SIZE
#ifdef __ia64__
/* On IA-64, the buffer size is 16k, not 8k */
#define YY_READ_BUF_SIZE 16384
#else
#define YY_READ_BUF_SIZE 8192
#endif
/* __ia64__ */
#endif
/* Number of entries by which start-condition stack grows. */
#ifndef YY_START_STACK_INCR
#define YY_START_STACK_INCR 25
#endif
/* Default declaration of generated scanner - a define so the user can
* easily add parameters.
*/
#ifndef YY_DECL
#define YY_DECL_IS_OURS 1
extern
int
CodesIOKernel_lex
\
(
YYSTYPE
*
yylval_param
,
YYLTYPE
*
yylloc_param
,
yyscan_t
yyscanner
);
#define YY_DECL int CodesIOKernel_lex \
(YYSTYPE * yylval_param, YYLTYPE * yylloc_param , yyscan_t yyscanner)
#endif
/* !YY_DECL */
/* yy_get_previous_state - get the state just before the EOB char was reached */
#undef YY_NEW_FILE
#undef YY_FLUSH_BUFFER
#undef yy_set_bol
#undef yy_new_buffer
#undef yy_set_interactive
#undef YY_DO_BEFORE_ACTION
#ifdef YY_DECL_IS_OURS
#undef YY_DECL_IS_OURS
#undef YY_DECL
#endif
#line 111 "../src/iokernellang/codeslexer.l"
#line 358 "src/iokernellang/codeslexer.h"
#undef CodesIOKernel_IN_HEADER
#endif
/* CodesIOKernel_HEADER_H */
codes/codesparser.h
0 → 100644
View file @
6bfad35b
/* A Bison parser, made by GNU Bison 2.5. */
/* Bison interface for Yacc-like parsers in C
Copyright (C) 1984, 1989-1990, 2000-2011 Free Software Foundation, Inc.
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>. */
/* As a special exception, you may create a larger work that contains
part or all of the Bison parser skeleton and distribute that work
under terms of your choice, so long as that work isn't itself a
parser generator using the skeleton or a modified version thereof
as a parser skeleton. Alternatively, if you modify or redistribute
the parser skeleton itself, you may (at your option) remove this
special exception, which will cause the skeleton and the resulting
Bison output files to be licensed under the GNU General Public
License without this special exception.
This special exception was added by the Free Software Foundation in
version 2.2 of Bison. */
/* Tokens. */
#ifndef YYTOKENTYPE
# define YYTOKENTYPE
/* Put the tokens into the symbol table, so that GDB and other debuggers
know about them. */
enum
yytokentype
{
INTEGER
=
258
,
VARIABLE
=
259
,
WHILE
=
260
,
IF
=
261
,
PRINT
=
262
,
WRITE
=
263
,
WRITEAT
=
264
,
WRITE_ALL
=
265
,
WRITEAT_ALL
=
266
,
READ
=
267
,
READAT
=
268
,
READ_ALL
=
269
,
READAT_ALL
=
270
,
SYNC
=
271
,
SLEEP
=
272
,
OPEN
=
273
,
CLOSE
=
274
,
DELETE
=
275
,
FLUSH
=
276
,
SEEK
=
277
,
EXIT
=
278
,
IFX
=
279
,
ELSE
=
280
,
NE
=
281
,
EQ
=
282
,
LE
=
283
,
GE
=
284
,
GETNUMGROUPS
=
285
,
GETGROUPID
=
286
,
GETCURTIME
=
287
,
GETGROUPSIZE
=
288
,
GETGROUPRANK
=
289
,
UMINUS
=
290
};
#endif
/* Tokens. */
#define INTEGER 258
#define VARIABLE 259
#define WHILE 260
#define IF 261
#define PRINT 262
#define WRITE 263
#define WRITEAT 264
#define WRITE_ALL 265
#define WRITEAT_ALL 266
#define READ 267
#define READAT 268
#define READ_ALL 269
#define READAT_ALL 270
#define SYNC 271
#define SLEEP 272
#define OPEN 273
#define CLOSE 274
#define DELETE 275
#define FLUSH 276
#define SEEK 277
#define EXIT 278
#define IFX 279
#define ELSE 280
#define NE 281
#define EQ 282
#define LE 283
#define GE 284
#define GETNUMGROUPS 285
#define GETGROUPID 286
#define GETCURTIME 287
#define GETGROUPSIZE 288
#define GETGROUPRANK 289
#define UMINUS 290
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
typedef
union
YYSTYPE
{
/* Line 2068 of yacc.c */
#line 37 "src/iokernellang/codesparser.y"
int64_t
iValue
;
/* integer value */
int64_t
sIndex
;
/* symbol table index */
nodeType
*
nPtr
;
/* node pointer */
/* Line 2068 of yacc.c */
#line 128 "codes/codesparser.h"
}
YYSTYPE
;
# define YYSTYPE_IS_TRIVIAL 1
# define yystype YYSTYPE
/* obsolescent; will be withdrawn */
# define YYSTYPE_IS_DECLARED 1
#endif
#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
typedef
struct
YYLTYPE
{
int
first_line
;
int
first_column
;
int
last_line
;
int
last_column
;
}
YYLTYPE
;
# define yyltype YYLTYPE
/* obsolescent; will be withdrawn */
# define YYLTYPE_IS_DECLARED 1
# define YYLTYPE_IS_TRIVIAL 1
#endif
#ifndef YYPUSH_DECLS
# define YYPUSH_DECLS
struct
CodesIOKernel_pstate
;
typedef
struct
CodesIOKernel_pstate
CodesIOKernel_pstate
;
enum
{
YYPUSH_MORE
=
4
};
#if defined __STDC__ || defined __cplusplus
int
CodesIOKernel_push_parse
(
CodesIOKernel_pstate
*
yyps
,
int
yypushed_char
,
YYSTYPE
const
*
yypushed_val
,
YYLTYPE
const
*
yypushed_loc
,
CodesIOKernelContext
*
context
);
#else
int
CodesIOKernel_push_parse
();
#endif
#if defined __STDC__ || defined __cplusplus
CodesIOKernel_pstate
*
CodesIOKernel_pstate_new
(
void
);
#else
CodesIOKernel_pstate
*
CodesIOKernel_pstate_new
();
#endif
#if defined __STDC__ || defined __cplusplus
void
CodesIOKernel_pstate_delete
(
CodesIOKernel_pstate
*
yyps
);
#else
void
CodesIOKernel_pstate_delete
();
#endif
#endif
configure.ac
View file @
6bfad35b
...
...
@@ -103,7 +103,7 @@ AS_IF([test "x$enable_valgrind_clean" = "xyes"], [
])
AC_CONFIG_FILES([src/iokernellang/codesparser.y])
dnl
AC_CONFIG_FILES([src/iokernellang/codesparser.y])
AC_CONFIG_FILES([Makefile])
...
...
src/Makefile.subdir
View file @
6bfad35b
...
...
@@ -10,29 +10,23 @@ EXTRA_DIST += src/iokernellang/codesparser.y.in \
PHONY
:
maintainer-clean-local
maintainer-clean-local
::
-
rm
-f
src/iokernellang/codesparser.c
-
rm
-f
src/iokernellang/codesparser.h
-
rm
-f
src/iokernellang/codesparser.y
-
rm
-f
src/iokernellang/codeslexer.c
-
rm
-f
src/iokernellang/codeslexer.h
-
rm
-f
codes/codeslexer.h
-
rm
-f
src/modelconfig/configlex.h
-
rm
-f
src/modelconfig/configlex.c