2014年4月12日土曜日

Boost.pythonでOpenMP

Boost.pythonを使えばC++でコンパイルしたものをPythonから呼び出せる。
OpenMPでコンパイルしたものでも読み出せるのか?ということなのでちょっとやってみた。
実行するとちゃんと速く動いていた。

以下忘れないようにメモ。

#include <iostream>
#include <omp.h>
#include <time.h>
#include <boost/python.hpp>

using namespace std;

double hoge(int N)
{
    long x = 0;
    double time;
    cout << "function start" << endl;
#ifdef _OPENMP
    double start = omp_get_wtime();
    #pragma omp parallel for
    for(int i = 0; i < N; i++) {
        x += i;
    }   
    time = omp_get_wtime() - start; 
#else
    clock_t start, end;
    start = clock();
    for(int i = 0; i < N; i++) {
        x += i;
    }   
    end = clock();
    time = (double(end-start)/CLOCKS_PER_SEC)
#endif
    cout << "function done" << endl;    
    return time;
}


BOOST_PYTHON_MODULE(basic)
{
    using namespace boost::python;
    def("hoge", &hoge);
}


0 件のコメント:

コメントを投稿