pub struct DirectiveBuilder { /* private fields */ }
Expand description
Builder for constructing DirectiveIR with a fluent API
Implementations§
Source§impl<'a> DirectiveBuilder
impl<'a> DirectiveBuilder
Sourcepub fn parallel() -> Self
pub fn parallel() -> Self
Create a new builder for a parallel directive
§Example
use roup::ir::{DirectiveBuilder, Language, SourceLocation};
let directive = DirectiveBuilder::parallel()
.default_shared()
.build(SourceLocation::start(), Language::C);
assert!(directive.kind().is_parallel());
Sourcepub fn parallel_for() -> Self
pub fn parallel_for() -> Self
Create a new builder for a parallel for directive
Sourcepub fn new(kind: DirectiveKind) -> Self
pub fn new(kind: DirectiveKind) -> Self
Create a new builder for any directive kind
Add a default(shared) clause
Sourcepub fn default_none(self) -> Self
pub fn default_none(self) -> Self
Add a default(none) clause
Sourcepub fn default(self, kind: DefaultKind) -> Self
pub fn default(self, kind: DefaultKind) -> Self
Add a default clause with specified kind
Sourcepub fn private(self, vars: &[&'a str]) -> Self
pub fn private(self, vars: &[&'a str]) -> Self
Add a private clause
§Example
use roup::ir::{DirectiveBuilder, Language, SourceLocation};
let directive = DirectiveBuilder::parallel()
.private(&["x", "y", "z"])
.build(SourceLocation::start(), Language::C);
Sourcepub fn firstprivate(self, vars: &[&'a str]) -> Self
pub fn firstprivate(self, vars: &[&'a str]) -> Self
Add a firstprivate clause
Add a shared clause
Sourcepub fn reduction(self, operator: ReductionOperator, vars: &[&'a str]) -> Self
pub fn reduction(self, operator: ReductionOperator, vars: &[&'a str]) -> Self
Add a reduction clause
§Example
use roup::ir::{DirectiveBuilder, ReductionOperator, Language, SourceLocation};
let directive = DirectiveBuilder::parallel()
.reduction(ReductionOperator::Add, &["sum"])
.build(SourceLocation::start(), Language::C);
Sourcepub fn num_threads(self, num: i32) -> Self
pub fn num_threads(self, num: i32) -> Self
Add a num_threads clause
Note: This creates an unparsed expression. For better control,
use num_threads_expr()
with a static string.
Sourcepub fn num_threads_expr(self, expr: &'a str) -> Self
pub fn num_threads_expr(self, expr: &'a str) -> Self
Add a num_threads clause with expression
Sourcepub fn schedule_simple(self, kind: ScheduleKind) -> Self
pub fn schedule_simple(self, kind: ScheduleKind) -> Self
Add a schedule clause
§Example
use roup::ir::{DirectiveBuilder, ScheduleKind, Language, SourceLocation};
let directive = DirectiveBuilder::for_loop()
.schedule_simple(ScheduleKind::Static)
.build(SourceLocation::start(), Language::C);
Sourcepub fn schedule(self, kind: ScheduleKind, chunk_size: Option<&'a str>) -> Self
pub fn schedule(self, kind: ScheduleKind, chunk_size: Option<&'a str>) -> Self
Add a schedule clause with chunk size expression
Sourcepub fn schedule_with_modifiers(
self,
kind: ScheduleKind,
modifiers: Vec<ScheduleModifier>,
chunk_size: Option<&'a str>,
) -> Self
pub fn schedule_with_modifiers( self, kind: ScheduleKind, modifiers: Vec<ScheduleModifier>, chunk_size: Option<&'a str>, ) -> Self
Add a schedule clause with modifiers
Sourcepub fn depend(self, depend_type: DependType, vars: &[&'a str]) -> Self
pub fn depend(self, depend_type: DependType, vars: &[&'a str]) -> Self
Add a depend clause
Sourcepub fn build(self, location: SourceLocation, language: Language) -> DirectiveIR
pub fn build(self, location: SourceLocation, language: Language) -> DirectiveIR
Build the DirectiveIR
§Example
use roup::ir::{DirectiveBuilder, Language, SourceLocation};
let directive = DirectiveBuilder::parallel()
.default_shared()
.private(&["x"])
.build(SourceLocation::start(), Language::C);
assert_eq!(directive.clauses().len(), 2);
Auto Trait Implementations§
impl Freeze for DirectiveBuilder
impl RefUnwindSafe for DirectiveBuilder
impl Send for DirectiveBuilder
impl Sync for DirectiveBuilder
impl Unpin for DirectiveBuilder
impl UnwindSafe for DirectiveBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more