Skip to content

Commit 12cffb7

Browse files
authored
Merge pull request #89 from MonashDeepNeuron/dev
Dev
2 parents 568997f + 9f67413 commit 12cffb7

108 files changed

Lines changed: 379 additions & 235 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/SUMMARY.md

Lines changed: 32 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
[Welcome](home.md)
44

55
- [Installation & Set-up](./chapter1/getting-started.md)
6+
67
- [GitHub](./chapter1/github.md)
78
- [Windows](./chapter1/windows.md)
89
- [Mac](./chapter1/mac.md)
@@ -13,6 +14,7 @@
1314
- [Challenges](./chapter1/challenges.md)
1415

1516
- [Intro to C](./chapter2/intro-to-c.md)
17+
1618
- [Hello World](./chapter2/helloworld.md)
1719
- [Compilation](./chapter2/compilation.md)
1820
- [Types & Variables](./chapter2/vars.md)
@@ -25,52 +27,47 @@
2527
- [Challenges](./chapter2/challenges.md)
2628

2729
- [Operating Systems](./chapter3/chapter3.md)
30+
2831
- [Computer Architecture](./chapter3/computer-architecture.md)
29-
- [Pointers & Memory](./chapter3/memory-pointers.md)
32+
- [Pointers](./chapter3/memory-pointers.md)
33+
- [Dynamic Memory](./chapter3/dynamic-memory.md)
34+
- [Structures & Macros](./chapter3/structs-macros.md)
3035
- [Intro to Linux](./chapter3/linux-intro.md)
31-
- [Threading & Concurrency](./chapter3/threads-concurrency.md)
32-
- [Processes](./chapter3/processes.md)
33-
- [Scheduling Algorithms](./chapter3/scheduling.md)
36+
- [VMs & Containers](./chapter3/vms-containers.md)
3437
- [Challenges](./chapter3/challenges.md)
3538

36-
- [More C](./chapter4/chapter4.md)
37-
- [Dynamic Memory](./chapter4/memory.md)
38-
- [Structures](./chapter4/structs.md)
39-
- [Macros & The Preprocessor](./chapter4/macros.md)
40-
- [System Calls](./chapter4/syscalls.md)
41-
- [Spawning Processes & Threads](./chapter4/spawn-procs.md)
39+
- [M3 & SLURM](./chapter4/chapter4.md)
40+
41+
- [Batch Processing vs. Cloud Computing](./chapter4/batch-cloud.md)
42+
- [Parallel & Distributed Computing](./chapter4/parallel-distributed.md)
43+
- [M3 Login - SSH & Strudel](./chapter4/login.md)
44+
- [Intro to SLURM](./chapter4/slurm_intro.md)
45+
- [M3 Interface & Usage](./chapter4/m3-interface.md)
46+
- [Software & Tooling](./chapter4/software-tooling.md)
4247
- [Challenges](./chapter4/challenges.md)
4348

44-
- [M3 & SLURM](./chapter5/chapter5.md)
49+
- [Introduction to Parallel Computing](./chapter5/chapter5.md)
4550

46-
- [Batch Processing vs. Cloud Computing](./chapter5/batch-cloud.md)
47-
- [Parallel & Distributed Computing](./chapter5/parallel-distributed.md)
48-
- [M3 Login - SSH & Strudel](./chapter5/login.md)
49-
- [Intro to SLURM](./chapter5/slurm_intro.md)
50-
- [M3 Interface & Usage](./chapter5/m3-interface.md)
51-
- [Software & Tooling](./chapter5/software-tooling.md)
51+
- [Multithreading](./chapter5/multithreading.md)
52+
- [Synchronisation](./chapter5/synchronisation.md)
53+
- [Locks](./chapter5/locks.md)
54+
- [Message Passing](./chapter5/message-passing.md)
5255
- [Challenges](./chapter5/challenges.md)
5356

54-
- [Introduction to Parallel Computing](./chapter6/chapter6.md)
55-
- [Multithreading](./chapter6/multithreading.md)
56-
- [Synchronisation](./chapter6/synchronisation.md)
57-
- [Locks](./chapter6/locks.md)
58-
- [Message Passing](./chapter6/message-passing.md)
57+
- [Parallellisation of Algorithms](./chapter6/chapter6.md)
58+
59+
- [Parallel Search](./chapter6/parallel-search.md)
60+
- [Parallel Sort](./chapter6/parallel-sort.md)
61+
- [Other Parallel Algorithms](./chapter6/other-parallel-algos.md)
62+
- [Machine Learning & HPC](./chapter6/machine-learning-and-hpc.md)
63+
- [Optimisation Algorithms](./chapter6/optim-algos.md)
5964
- [Challenges](./chapter6/challenges.md)
6065

61-
- [Parallellisation of Algorithms](./chapter7/chapter7.md)
62-
- [Parallel Search](./chapter7/parallel-search.md)
63-
- [Parallel Sort](./chapter7/parallel-sort.md)
64-
- [Other Parallel Algorithms](./chapter7/other-parallel-algos.md)
65-
- [Machine Learning & HPC](./chapter7/machine-learning-and-hpc.md)
66-
- [Optimisation Algorithms](./chapter7/optim-algos.md)
66+
- [Apache Spark](./chapter7/chapter7.md)
67+
- [Installation & Cluster Set-up](./chapter7/set-up.md)
68+
- [Internal Architecture](./chapter7/internals.md)
69+
- [Data Processing](./chapter7/data-processing.md)
70+
- [Job Batching](./chapter7/job-batching.md)
6771
- [Challenges](./chapter7/challenges.md)
6872

69-
- [Apache Spark](./chapter8/chapter8.md)
70-
- [Installation & Cluster Set-up](./chapter8/set-up.md)
71-
- [Internal Architecture](./chapter8/internals.md)
72-
- [Data Processing](./chapter8/data-processing.md)
73-
- [Job Batching](./chapter8/job-batching.md)
74-
- [Challenges](./chapter8/challenges.md)
75-
7673
[Acknowledgements](./acknowledgements.md)

src/chapter3/challenges.md

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,19 @@
11
# Challenges
22

3-
![under-const](../imgs/under-const.gif)
3+
## Challenge 1 - Sum and Product Algorithms
4+
5+
This challenge involves implementing the sum and product reductions on an array or memory block of integers. As a bonus challenge, try and make the algorithms more generic and work with any binary operator.
6+
7+
## Challenge 2 - Array Concatenation
8+
9+
In this challenge you have to implement an array concatenation function. This should join two arrays of the same type into a single array, similar to `strcat()`. You will need to allocate a new block of memory and in order to store the concatenated arrays which will requires the sizes of the two input arrays to be known by the function. This function should return a pointer to the resulting array.
10+
11+
> Note: The type of the array this function concatenates can be any type except `char`.
12+
13+
## Challenge 3 - Doing it in Docker
14+
15+
Pull an Ubuntu image from the Docker registry, install any required dependencies and execute the same C code that you wrote for challenge 2 within that running container instance. You will have to consult the Docker documentation and be resourceful in learning and completing this task.
16+
17+
## Challenge 4 - Launch a VM instance on Nectar Cloud
18+
19+
This is an extension challenge in which you will have to go through the [ARDC's cloud starter tutorial series](https://tutorials.rc.nectar.org.au/cloud-starter/01-overview) in order to launch a VM instance and connect to it.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,8 @@ int main()
4848
}
4949
```
5050

51+
> If you recall the previous subchapter, `calloc()` allocates memory in the BSS segment instead of the heap/stack.
52+
5153
## Reallocated Memory
5254

5355
We can also reallocate data to fit a larger or smaller amount. The elements from the old block will be copied to the new location until the new array is full or there are no more elements to copy. `realloc()` my not actual allocate memory in a new locating if there is free space next to the existing array. `realloc()` also works like `malloc()` where the new memory is left uninitialised. `realloc()` takes two parameters, the old pointer address and the new size.
36.3 KB
Loading
35.1 KB
Loading

src/chapter3/imgs/containers.png

30.9 KB
Loading

src/chapter3/imgs/cpu-cache.jpg

14.3 KB
Loading
40.1 KB
Loading
35.3 KB
Loading
458 KB
Loading

0 commit comments

Comments
 (0)