|
2 | 2 | @def rss = """ An introduction to ParallelAccelerator.jl | The High Performance Scripting team at Intel Labs recently released... """
|
3 | 3 | @def published = "1 March 2016"
|
4 | 4 | @def title = "An introduction to ParallelAccelerator.jl"
|
5 |
| -@def authors = """<a href="https://www.cs.indiana.edu/~lkuper/">Lindsey Kuper</a>""" |
| 5 | +@def authors = """<a href="https://users.soe.ucsc.edu/~lkuper/">Lindsey Kuper</a>""" |
6 | 6 | @def hascode = true
|
7 | 7 |
|
8 | 8 | The High Performance Scripting team at Intel Labs recently released
|
@@ -289,12 +289,12 @@ data-parallel reduce operations when they are called on arrays.
|
289 | 289 | ### Array comprehension
|
290 | 290 |
|
291 | 291 | Julia supports
|
292 |
| -[array comprehensions](https://docs.julialang.org/en/release-0.4/manual/arrays/#comprehensions), |
| 292 | +[array comprehensions](https://docs.julialang.org/en/v0.4/manual/arrays/#comprehensions), |
293 | 293 | a convenient and concise way to construct arrays. For example, the
|
294 | 294 | expressions that initialize the five input arrays in the Black-Scholes
|
295 | 295 | example above are all array comprehensions. As a more sophisticated
|
296 | 296 | example, the following `avg` function, taken from
|
297 |
| -[the Julia manual](https://docs.julialang.org/en/release-0.4/manual/arrays/#comprehensions), |
| 297 | +[the Julia manual](https://docs.julialang.org/en/v0.4/manual/arrays/#comprehensions), |
298 | 298 | takes a one-dimensional input array `x` of length *n* and uses an
|
299 | 299 | array comprehension to construct an output array of length *n*-2, in
|
300 | 300 | which each element is a weighted average of the corresponding element
|
@@ -347,7 +347,7 @@ on a 2D array of `Float32`s: the pixels of the source image. It's
|
347 | 347 | easy to obtain such an array using, for instance, the `load` function
|
348 | 348 | from the [Images.jl](https://github.com/timholy/Images.jl) library,
|
349 | 349 | followed by a call to
|
350 |
| -[`convert`](https://docs.julialang.org/en/release-0.4/manual/conversion-and-promotion/#conversion) |
| 350 | +[`convert`](https://docs.julialang.org/en/v0.4/manual/conversion-and-promotion/#conversion) |
351 | 351 | to get an array of type `Array{Float32,2}`. (For simplicity, we're
|
352 | 352 | assuming that the input image is a grayscale image, so each pixel has
|
353 | 353 | just one value instead of red, green, and blue values. However, it
|
@@ -422,7 +422,7 @@ runStencil(kernel :: Function, buffer1, buffer2, ..., iteration :: Int, boundary
|
422 | 422 | ```
|
423 | 423 |
|
424 | 424 | In `blur`, the call to `runStencil` uses Julia's
|
425 |
| -[`do`-block syntax for function arguments](https://docs.julialang.org/en/release-0.4/manual/functions/#do-block-syntax-for-function-arguments), |
| 425 | +[`do`-block syntax for function arguments](https://docs.julialang.org/en/v0.4/manual/functions/#do-block-syntax-for-function-arguments), |
426 | 426 | so the `do b, a ... end` block is actually the first argument to the
|
427 | 427 | `runStencil` call. The `do` block creates an anonymous function that
|
428 | 428 | binds the variables `b` and `a`. The arguments `buffer1, buffer2,
|
@@ -510,7 +510,7 @@ process:
|
510 | 510 | 
|
511 | 511 |
|
512 | 512 | As many readers of this blog will know, Julia has good support for
|
513 |
| -[inspecting and manipulating its own ASTs](https://docs.julialang.org/en/release-0.4/devdocs/reflection/). |
| 513 | +[inspecting and manipulating its own ASTs](https://docs.julialang.org/en/v0.4/devdocs/reflection/). |
514 | 514 | Its built-in `code_typed` function will return the AST of any function
|
515 | 515 | after Julia's type inference has taken place. This is very convenient
|
516 | 516 | for ParallelAccelerator, which is able to use the output from
|
|
0 commit comments