#include "mate_sw.h" // 初始化mate sw计算相关的数据 void init_msw_data(msw_data_t* msw, int n_threads, int msw_batch_size) { #define _alloc_msw(data, data_type) ((data) = calloc(n_threads, sizeof(data_type))) _alloc_msw(msw->t_msw_tasks_u8, msw_task_v); _alloc_msw(msw->t_msw_tasks_i16, msw_task_v); _alloc_msw(msw->t_msw_buf, msw_buf_t); _alloc_msw(msw->t_msw_stats, msw_stats_t); _alloc_msw(msw->t_msw_ref_buf, byte_vv); _alloc_msw(msw->t_msw_seq_buf, byte_vv); _alloc_msw(msw->t_msw_1_refs, msw_ref_v); _alloc_msw(msw->t_msw_1_seqs, msw_seq_v); _alloc_msw(msw->t_msw_1_xtras, int_v); _alloc_msw(msw->t_msw_1_kswrs, msw_kswr_v); _alloc_msw(msw->t_msw_2_refs, msw_ref_v); _alloc_msw(msw->t_msw_2_seqs, msw_seq_v); _alloc_msw(msw->t_msw_2_xtras, int_v); _alloc_msw(msw->t_msw_2_kswrs, msw_kswr_v); // 初始化缓存空间 int i = 0, j = 0; msw_ref_t init_ref = {0}; msw_seq_t init_seq = {0}; kswr_avx_t init_kswr = {0}; byte_v init_byte_v = {0}; for (i = 0; i < n_threads; ++i) { for (j = 0; j < msw_batch_size; ++j) { // for ref seq buf kv_push(byte_v, msw->t_msw_ref_buf[i], init_byte_v); kv_push(byte_v, msw->t_msw_seq_buf[i], init_byte_v); // for msw第一阶段 kv_push(msw_ref_t, msw->t_msw_1_refs[i], init_ref); kv_push(msw_seq_t, msw->t_msw_1_seqs[i], init_seq); kv_push(int, msw->t_msw_1_xtras[i], 0); kv_push(kswr_avx_t, msw->t_msw_1_kswrs[i], init_kswr); // for msw第二阶段 kv_push(msw_ref_t, msw->t_msw_2_refs[i], init_ref); kv_push(msw_seq_t, msw->t_msw_2_seqs[i], init_seq); kv_push(int, msw->t_msw_2_xtras[i], 0); kv_push(kswr_avx_t, msw->t_msw_2_kswrs[i], init_kswr); } } }