Tag Archives: OpenMP

OpenMP

OpenMP (Open Multi-Processing)

OpenMP là một API hỗ trợ lập trình song song (ngoài ra bạn có thể tìm hiểu về CUDA của NVIDIA). OpenMP bao gồm nhiều chỉ thị chạy khác nhau. API này đã có sẵn trong Visual Studio C/C++. Vì thế khi sử dụng bạn chỉ cần import dòng này vào:

#include <omp.h>

là xong!

Bạn thử chạy dòng code này:

  
#include <stdio.h>
#include <omp.h>
#include <conio.h> # Để có thể sử dụng lệnh _getch() (dừng màn hình)

int main()
{
    #pragma omp parallel
    {
        printf("Hello world!\n");
    }

    _getch();
    return 0;
}

Sau khi chạy xong đoạn chương trình trên bạn có lẽ CHỈ THẤY 1 dòng Hello world! được xuất ra! Có lẽ bạn sẽ nói: “Như vậy mà gọi là SONG SONG ah?!? Có khác gì dòng code bình thường đâu?!?”.
Vấn đề là ở đây! Nếu bạn đã thiết lập chạy song song thì sẽ in ra 4 dòng Hello world! (Còn tùy vào máy của bạn có mấy nhân! Bạn có thể biết được số nhân của máy qua dòng lệnh sau:

printf("Số nhân: %d\n", omp_get_max_threads());

)
Tuy bạn có thể có 4 nhân nhưng lại không in ra được màn hình 4 dòng Hello world! là do bạn chưa enable cho nó!

Để Enable OpenMP bạn làm như sau:
* Phải chuột lên project của bạn, chọn properties.
* C/C++ -> Language, và thay đổi “OpenMP Support” thành ‘Yes’.
* Click OK!

Xong! Bạn có thể Ctrl+F5 lại xem!!! Nếu vẫn chỉ có 1 dòng được in ra thì máy của bạn chỉ hỗ trợ có 1 nhân thôi!

Bạn có thể tham khảo thêm tại đây

Advertisements