This commit is contained in:
Zengtudor 2024-09-20 11:50:08 +08:00
parent 7c8fa8de85
commit 55fc00a62e
2 changed files with 7 additions and 7 deletions

View File

@ -11,7 +11,7 @@ void reverseComplement(char *begin, char *end)
}; };
std::reverse(begin, end); //翻转DNA序列 std::reverse(begin, end); //翻转DNA序列
for (ptrdiff_t i = 0; i < (end - begin); ++i) { for (ptrdiff_t i = 0; i < (end - begin); ++i) {
static int _ = (zt::print(NAME_VALUE(omp_get_num_threads()),"\n"),0); // 打印线程数量 static int _ = (zt::print(NAME_VALUE(omp_get_num_threads()),"\n"),0); // 打印线程数量
auto it = complement.find(begin[i]); auto it = complement.find(begin[i]);
@ -28,7 +28,7 @@ int main()
//参数列表 <文件分块内存大小单个DNA序列最长大小>("输入文件名","输出文件名",序列处理函数); //参数列表 <文件分块内存大小单个DNA序列最长大小>("输入文件名","输出文件名",序列处理函数);
//这个函数在src/tools/dna里面 //这个函数在src/tools/dna里面
dna::open_file_and_calculate<(size_t)4 * 1024 * 1024 *1024 , (size_t)5e4+5>("filteredReads.txt", "reversedSequence.txt",reverseComplement); dna::open_file_and_calculate<(size_t)100 * 1024 *1024 , (size_t)5e4+5>("filteredReads.txt", "reversedSequence.txt",reverseComplement);
}catch(const std::exception &e){ }catch(const std::exception &e){
zt::eprint( zt::eprint(

View File

@ -127,7 +127,8 @@ namespace dna {
// 确保每个任务只操作属于它的独立数据 // 确保每个任务只操作属于它的独立数据
if (get_lines_add()) { if (get_lines_add()) {
// 为每一块数据创建一个任务 // 为每一块数据创建一个任务
#pragma omp task firstprivate(start, end) #pragma omp task
// #pragma omp task firstprivate(start, end)
{ {
reverseComplement(start, end); // 任务内处理反转互补 reverseComplement(start, end); // 任务内处理反转互补
} }
@ -135,15 +136,14 @@ namespace dna {
start_pos = end_pos + 1; start_pos = end_pos + 1;
} }
// // 等待所有任务完成
// 等待所有任务完成 // #pragma omp taskwait
#pragma omp taskwait
} }
// while((end_pos=buf_str_v.find('\n',start_pos)) != std::string_view::npos){ // while((end_pos=buf_str_v.find('\n',start_pos)) != std::string_view::npos){
// if(get_lines_add()){ // if(get_lines_add()){
// reverseComplement(buf.data()+start_pos, buf.data()+end_pos); //我想要这个函数并行优化 // reverseComplement(buf.data()+start_pos, buf.data()+end_pos); //这个函数并行优化
// } // }
// // lines=!lines; // // lines=!lines;
// start_pos=end_pos+1; // start_pos=end_pos+1;