之前的内存崩溃可能是wsl 1.的问题,更新2版本之后,解决

This commit is contained in:
zzh 2023-08-28 00:10:45 +08:00
parent f81871eff5
commit 395b2e598d
3 changed files with 17 additions and 16 deletions

View File

@ -389,6 +389,7 @@ int ksw_extend_avx2_aligned(thread_mem_t *tmem,
hA2[end + 1] = fA2[end + 1]; hA2[end + 1] = fA2[end + 1];
mA2[end + 1] = 0; mA2[end + 1] = 0;
} }
SIMD_FIND_MAX; SIMD_FIND_MAX;
// 注意最后跳出循环j的值 // 注意最后跳出循环j的值

View File

@ -25,10 +25,10 @@ int ksw_extend_normal(thread_mem_t *tmem, int qlen, const uint8_t *query, int tl
int8_t *qp; // query profile int8_t *qp; // query profile
int i, j, k, oe_del = o_del + e_del, oe_ins = o_ins + e_ins, beg, end, max, max_i, max_j, max_ins, max_del, max_ie, gscore, max_off; int i, j, k, oe_del = o_del + e_del, oe_ins = o_ins + e_ins, beg, end, max, max_i, max_j, max_ins, max_del, max_ie, gscore, max_off;
assert(h0 > 0); assert(h0 > 0);
qp = malloc(qlen * m); // qp = malloc(qlen * m);
eh = calloc(qlen + 1, 8); // eh = calloc(qlen + 1, 8);
// qp = thread_mem_request(tmem, qlen * m); qp = thread_mem_request(tmem, qlen * m);
// eh = thread_mem_request_and_clean(tmem, (qlen + 1) * 9); eh = thread_mem_request_and_clean(tmem, (qlen + 1) * 8);
// generate the query profile // generate the query profile
for (k = i = 0; k < m; ++k) for (k = i = 0; k < m; ++k)
{ {
@ -173,9 +173,9 @@ int ksw_extend_normal(thread_mem_t *tmem, int qlen, const uint8_t *query, int tl
// fprintf(stderr, "\n"); // fprintf(stderr, "\n");
// fprintf(stderr, "%d\n", end); // fprintf(stderr, "%d\n", end);
} }
free(eh); // free(eh);
free(qp); // free(qp);
// thread_mem_release(tmem, qlen * m + (qlen + 1) * 9); thread_mem_release(tmem, qlen * m + (qlen + 1) * 8);
if (_qle) if (_qle)
*_qle = max_j + 1; *_qle = max_j + 1;
if (_tle) if (_tle)

16
main.c
View File

@ -141,7 +141,7 @@ int main(int argc, char *argv[])
} }
// 记录计算出的分数 // 记录计算出的分数
int score[KERNEL_NUM] = {0}; int score[KERNEL_NUM] = {0};
int score_total[KERNEL_NUM] = {0}; int64_t score_total[KERNEL_NUM] = {0};
// 读取测试数据 // 读取测试数据
char *query_arr = (char *)malloc(SEQ_BUF_SIZE); char *query_arr = (char *)malloc(SEQ_BUF_SIZE);
@ -242,18 +242,18 @@ int main(int argc, char *argv[])
PERFORMANCE_TEST_NORMAL(0, ksw_extend_normal); PERFORMANCE_TEST_NORMAL(0, ksw_extend_normal);
// avx2 // avx2
// PERFORMANCE_TEST_AVX2(1, ksw_extend_avx2); PERFORMANCE_TEST_AVX2(1, ksw_extend_avx2);
// avx2 heuristics // avx2 heuristics
// PERFORMANCE_TEST_AVX2(2, ksw_extend_avx2_heuristics); PERFORMANCE_TEST_AVX2(2, ksw_extend_avx2_heuristics);
// avx2 mem aligned // avx2 mem aligned
// PERFORMANCE_TEST_AVX2(3, ksw_extend_avx2_aligned); PERFORMANCE_TEST_AVX2(3, ksw_extend_avx2_aligned);
// avx2 u8 // avx2 u8
// PERFORMANCE_TEST_AVX2(4, ksw_extend_avx2_u8); PERFORMANCE_TEST_AVX2(4, ksw_extend_avx2_u8);
// avx2 u8 heuristics // avx2 u8 heuristics
// PERFORMANCE_TEST_AVX2(5, ksw_extend_avx2_u8_heuristics); PERFORMANCE_TEST_AVX2(5, ksw_extend_avx2_u8_heuristics);
// avx2 u8 mem aligned // avx2 u8 mem aligned
// PERFORMANCE_TEST_AVX2(6, ksw_extend_avx2_u8_aligned); PERFORMANCE_TEST_AVX2(6, ksw_extend_avx2_u8_aligned);
} }
#ifdef SHOW_PERF #ifdef SHOW_PERF
@ -268,7 +268,7 @@ int main(int argc, char *argv[])
for (i = 0; i < KERNEL_NUM; ++i) for (i = 0; i < KERNEL_NUM; ++i)
{ {
fprintf(stderr, "[%18s] time: %9.6f s; score: %d\n", kernel_names[i], time_sw[i] / DIVIDE_BY, score_total[i]); fprintf(stderr, "[%18s] time: %9.6f s; score: %ld\n", kernel_names[i], time_sw[i] / DIVIDE_BY, score_total[i]);
} }
#endif #endif