Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <omp.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <Windows.h>
- #include <atomic>
- void gpu() {
- Sleep(100);
- }
- void cpu() {
- Sleep(1000);
- }
- int main(int argc, char* argv[]) {
- int i, n, id, chunk_size_cpu, chunk_size_gpu;
- n = 20;
- chunk_size_cpu = 1;
- chunk_size_gpu = 5;
- int counter = 0;
- #pragma omp parallel default(none) private(i, id) shared(n, chunk_size_cpu, chunk_size_gpu, counter)
- {
- #pragma omp single
- {
- printf("Program jest wykonywany na %d watkach.\n", omp_get_num_threads());
- }
- #pragma omp for schedule(dynamic, chunk_size_cpu)
- for (i = 0; i < n; i++) {
- if (i < counter) {
- continue;
- }
- else {
- id = omp_get_thread_num();
- if (id == 0) {
- counter += chunk_size_gpu;
- gpu();
- printf("Iteracja %d - %d wykonana przez watek nr. %d.\n", i, i + chunk_size_gpu, id);
- }
- else {
- counter += chunk_size_cpu;
- cpu();
- printf("Iteracja %d wykonana przez watek nr. %d.\n", i, id);
- }
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement