From 4bf3623e394bd5631042f85269a66a28beb500ec Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Fri, 17 Dec 2021 13:22:33 +0100 Subject: [PATCH 1/3] Fixed openacc async clauses --- src/codegen/codegen_acc_visitor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/codegen/codegen_acc_visitor.cpp b/src/codegen/codegen_acc_visitor.cpp index a12843bc0c..2c514ba5c4 100644 --- a/src/codegen/codegen_acc_visitor.cpp +++ b/src/codegen/codegen_acc_visitor.cpp @@ -51,7 +51,7 @@ void CodegenAccVisitor::print_channel_iteration_block_parallel_hint(BlockType ty } present_clause << ')'; printer->add_line( - "nrn_pragma_acc(parallel loop {} async(nt->stream_id) if(nt->compute_gpu))"_format( + "nrn_pragma_acc(parallel loop {} async(nt->streams[nt->stream_id]) if(nt->compute_gpu))"_format( present_clause.str())); printer->add_line( "nrn_pragma_omp(target teams distribute parallel for is_device_ptr(inst) " @@ -319,7 +319,7 @@ void CodegenAccVisitor::print_device_atomic_capture_annotation() const { void CodegenAccVisitor::print_device_stream_wait() const { printer->start_block("if(nt->compute_gpu)"); - printer->add_line("nrn_pragma_acc(wait(nt->stream_id))"); + printer->add_line("nrn_pragma_acc(wait(nt->streams[nt->stream_id]))"); printer->add_line("nrn_pragma_omp(taskwait)"); printer->end_block(1); } From 8b8f7adc70547c1a68adcd8655f6bd4e929ed0b5 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 20 Dec 2021 15:35:34 +0100 Subject: [PATCH 2/3] Fixed for openacc async --- src/codegen/codegen_acc_visitor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codegen/codegen_acc_visitor.cpp b/src/codegen/codegen_acc_visitor.cpp index 2c514ba5c4..29b55f367e 100644 --- a/src/codegen/codegen_acc_visitor.cpp +++ b/src/codegen/codegen_acc_visitor.cpp @@ -319,7 +319,7 @@ void CodegenAccVisitor::print_device_atomic_capture_annotation() const { void CodegenAccVisitor::print_device_stream_wait() const { printer->start_block("if(nt->compute_gpu)"); - printer->add_line("nrn_pragma_acc(wait(nt->streams[nt->stream_id]))"); + printer->add_line("nrn_pragma_acc(wait async(nt->streams[nt->stream_id]))"); printer->add_line("nrn_pragma_omp(taskwait)"); printer->end_block(1); } From afd70c5bb258835661963efa091c8a55718ee2c0 Mon Sep 17 00:00:00 2001 From: Ioannis Magkanaris Date: Mon, 20 Dec 2021 16:44:25 +0100 Subject: [PATCH 3/3] Added nowait clause in openmp --- src/codegen/codegen_acc_visitor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/codegen/codegen_acc_visitor.cpp b/src/codegen/codegen_acc_visitor.cpp index 29b55f367e..942ee0319b 100644 --- a/src/codegen/codegen_acc_visitor.cpp +++ b/src/codegen/codegen_acc_visitor.cpp @@ -55,7 +55,7 @@ void CodegenAccVisitor::print_channel_iteration_block_parallel_hint(BlockType ty present_clause.str())); printer->add_line( "nrn_pragma_omp(target teams distribute parallel for is_device_ptr(inst) " - "if(nt->compute_gpu))"); + "if(nt->compute_gpu) depend(inout: nt->streams[nt->stream_id]) nowait)"); }