view TaskManager/ManyCore/FileMapReduce.h @ 2051:b79a250b4f99 draft

FileMapReduce (no compile error)
author masa
date Thu, 28 Jan 2016 17:23:45 +0900
parents 26dd777ba95d
children cc1ea3933551
line wrap: on
line source

#include <sys/types.h>

#include "TaskManager.h"
#include "SchedTask.h"
#include "HTask.h"

class FileMapReduce;

typedef struct mapReduce {
    struct mapReduce *self;
    FileMapReduce *fmp;
    long fd;
    long read_filesize;
    CPU_TYPE read_cpu;

    long size;             // remaining file size
    long division_size;    // for each word count task
    long division_out_size;
    long out_size;
    long out_size_;
    long task_num;         // remaining task count
    long task_blocks;      // spawn task one at a time
    long status_num;
    long task_spawned;
    unsigned long long *o_data;
    unsigned long long *head_tail_flag;
    long out_task_num;
    long pad;
    char *file_mmap;
    long file_size;
    HTaskPtr t_print;
    HTaskPtr t_exec;
} MapReduce, *MapReducePtr;

// Read Type
enum {
    MY_MMAP,
    MY_READ,
    BLOCKED_READ,
    BLOCKED_MMAP,
};

#define DATA_NUM 16
#define ADD_NUM 26

#define DATA_ID 0

typedef struct {
    caddr_t file_mmap;
    off_t size;
} st_mmap_t;

class FileMapReduce {
public:
    /* constructor */
    FileMapReduce(TaskManager *manager,int TASK_EXEC,int TASK_EXEC_DATA_PARALLEL,int TASK_PRINT);
    ~FileMapReduce();

    /* User API */
    void run_start(TaskManager *manager, const char *filename);
    void run_tasks(SchedTask *manager, MapReduce *w, int task_count, HTaskPtr t_read, HTaskPtr t_next, int size);
    char* init(int argc, char **argv);

private:
    void my_read(const char *filename, MapReduce *w, TaskManager *manager);
    void my_mmap(const char *filename, MapReduce *w);
    void task_init(void);

    /* variable */
    int all;
    int use_task_array;
    int use_task_creater ;
    int use_compat ;
    int array_task_num ;
    int spe_num ;
    int read_type ;
    int t_exec_num ;
    CPU_TYPE spe_cpu ;
    int TASK_EXEC;
    int TASK_EXEC_DATA_PARALLEL;
    int TASK_PRINT;
    int blocks;
    int division; // in Kbyte
public:
    CPU_TYPE read_spe_cpu;
    int use_iterate;
    int task_exec_id;
    int task_print_id;
    const char *fmp_help_str;
};