-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Updaded README.md ~ more comprhensive and descriptive
- Loading branch information
Joseph Paulmer
authored and
Joseph Paulmer
committed
May 26, 2024
1 parent
17b6ab5
commit a1f72b3
Showing
1 changed file
with
55 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,56 @@ | ||
# M1Parallel | ||
|
||
M1Parallel is a high-performance, parallel computing library designed specifically for Apple Silicon (M1) devices. It provides a set of APIs and tools to leverage the power of parallel computing paradigms, including shared memory parallelism, distributed memory parallelism, and task parallelism. | ||
|
||
## Features | ||
|
||
- Shared Memory Parallelism: Utilize multiple cores on a single device using pthreads for efficient parallel execution. | ||
- Distributed Memory Parallelism: Harness the power of multiple devices using Message Passing Interface (MPI) for distributed computing. | ||
- Task Parallelism: Easily express and execute parallel tasks using a simple and intuitive task-based programming model. | ||
- Compatibility: Seamlessly integrate with existing parallel programming standards such as OpenMP and MPI. | ||
- Optimized for Apple Silicon: Leveraging the unique capabilities of M1 devices to achieve optimal performance. | ||
|
||
### File Structure | ||
|
||
``` | ||
. | ||
├── README.md | ||
├── examples | ||
│ ├── distributed_memory_example.c | ||
│ ├── shared_memory_example.c | ||
│ └── task_parallelism_example.c | ||
├── include | ||
│ └── parallel_lib | ||
│ ├── distributed_memory | ||
│ │ └── mpi_wrapper.h | ||
│ ├── parallel_lib.h | ||
│ ├── shared_memory | ||
│ │ └── parallel_for.h | ||
│ └── task_parallelism | ||
│ └── task.h | ||
└── src | ||
├── distributed_memory | ||
│ └── mpi_wrapper.c | ||
├── shared_memory | ||
│ └── parallel_for.c | ||
└── task_parallelism | ||
└── task.c | ||
``` | ||
|
||
## Usage | ||
|
||
Here's a simple example that demonstrates how to use M1Parallel for shared memory parallelism (more examples are provided in the examples folder): | ||
|
||
```c | ||
#include <stdio.h> | ||
#include "parallel_lib/shared_memory/parallel_for.h" | ||
|
||
void print_number(int num) { | ||
printf("Number: %d\n", num); | ||
} | ||
|
||
int main() { | ||
parallel_for(0, 10, print_number); | ||
return 0; | ||
} | ||
``` |