Skip to content

Commit f22a5fb

Browse files
committed
add af_print macro
Fixes #63
1 parent e666fd6 commit f22a5fb

File tree

2 files changed

+41
-15
lines changed

2 files changed

+41
-15
lines changed

examples/helloworld.rs

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#[macro_use(af_print)]
12
extern crate arrayfire as af;
23

34
use af::*;
@@ -14,12 +15,11 @@ fn main() {
1415

1516
let dims = Dim4::new(&[num_rows, num_cols, 1, 1]);
1617

17-
println!("Create a 5-by-3 matrix of random floats on the GPU");
1818
let a = match randu::<f32>(dims) {
1919
Ok(value) => value,
2020
Err(error) => panic!("{}", error),
2121
};
22-
print(&a);
22+
af_print!("Create a 5-by-3 matrix of random floats on the GPU", a);
2323

2424
println!("Element-wise arithmetic");
2525
let b = sin(&a)
@@ -34,17 +34,17 @@ fn main() {
3434
.unwrap();
3535

3636
let b3 = ! &a;
37-
println!("sin(a) + 1.5 => "); print(&b);
38-
println!("sin(a) + cos(a) => "); print(&b2);
39-
println!("!a => "); print(&b3);
37+
af_print!("sin(a) + 1.5 => ", b);
38+
af_print!("sin(a) + cos(a) => ", b2);
39+
af_print!("!a => ", b3);
4040

4141
let test = &a + &b;
42-
println!("a + b"); print(&test);
42+
af_print!("a + b", test);
4343

4444
// Index array using sequences
4545
let seqs = &[Seq::new(1u32, 3, 1), Seq::default()];
4646
let sub = index(&a, seqs).unwrap();
47-
println!("a(seq(1,3,1), span)"); print(&sub);
47+
af_print!("a(seq(1,3,1), span)", sub);
4848

4949
//Index array using array and sequence
5050
let seq4gen = Seq::new(0u32, 2, 1);
@@ -57,7 +57,7 @@ fn main() {
5757
idxrs.set_index(&seq4gen, 1, Some(false));
5858

5959
let sub2 = index_gen(&a, idxrs).unwrap();
60-
println!("a(indices, seq(0, 2, 1))"); print(&sub2);
60+
af_print!("a(indices, seq(0, 2, 1))", sub2);
6161

6262
// printf("Negate the first three elements of second column\n");
6363
// B(seq(0, 2), 1) = B(seq(0, 2), 1) * -1;
@@ -71,17 +71,16 @@ fn main() {
7171
print(&row(&a, num_rows - 1).unwrap());
7272
print(&col(&a, num_cols - 1).unwrap());
7373

74-
println!("Set last row to 1's");
7574
let r_dims = Dim4::new(&[3, 1, 1, 1]);
7675
let r_input: [f32; 3] = [1.0, 1.0, 1.0];
7776
let r = Array::new(&r_input, r_dims).unwrap();
78-
print(&set_row(&a, &r, num_rows - 1).unwrap());
77+
let ur = set_row(&a, &r, num_rows - 1).unwrap();
78+
af_print!("Set last row to 1's", ur);
7979

80-
println!("Create 2-by-3 matrix from host data");
8180
let d_dims = Dim4::new(&[2, 3, 1, 1]);
8281
let d_input: [i32; 6] = [1, 2, 3, 4, 5, 6];
83-
let d = &Array::new(&d_input, d_dims).unwrap();
84-
print(d);
82+
let d = Array::new(&d_input, d_dims).unwrap();
83+
af_print!("Create 2-by-3 matrix from host data", d);
8584

8685
// printf("Copy last column onto first\n");
8786
// D.col(0) = D.col(end);
@@ -95,8 +94,7 @@ fn main() {
9594
print(&x.1);
9695
});
9796

98-
println!("u8 constant array");
9997
let u8_cnst = &constant(1 as u8, dims).unwrap();
100-
print(u8_cnst);
98+
af_print!("u8 constant array", u8_cnst);
10199
println!("Is u8_cnst array float precision type ? {}", u8_cnst.is_single().unwrap());
102100
}

src/macros.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,3 +103,31 @@ macro_rules! join_many {
103103
}
104104
};
105105
}
106+
107+
/// Print given message before printing out the Array to standard output
108+
///
109+
/// # Examples
110+
///
111+
/// ```
112+
/// # #[macro_use] extern crate arrayfire;
113+
///
114+
/// # fn main() {
115+
/// use arrayfire::{Dim4, print, randu};
116+
/// let dims = Dim4::new(&[3, 1, 1, 1]);
117+
/// let a = match randu::<f32>(dims) {
118+
/// Ok(value) => value,
119+
/// Err(error) => panic!("{}", error),
120+
/// };
121+
/// af_print!("Create a 5-by-3 matrix of random floats on the GPU", a);
122+
/// # }
123+
/// ```
124+
///
125+
#[macro_export]
126+
macro_rules! af_print {
127+
[$msg: expr, $x: ident] => {
128+
{
129+
println!("{}", $msg);
130+
print(&$x).unwrap();
131+
}
132+
};
133+
}

0 commit comments

Comments
 (0)