OpenMPは複数のCPU(複数コアを含む)を持った計算機上での並列化に威力を発揮する。 OpenMPを使う最大の利点は、OpenMPに対応したコンパイラであれば、非常に簡単に並列化できる点である。 現在、gcc、Visual C++、およびIntelコンパイラなど主要なコンパイラはOpenMPに対応している。 習得も他の並列化技法に比べて比較的容易である。 なお、速度を最優先にする場合、単一コンピュータ上で動かした場合でも、メモリのローカリティのためかOpenMPよりMPIの方が効率のよいことが多い。MPIに関してはこちらを参照。 なお、インテルがOpenMP初心者向けに非常にわかりやすい文書を公開している。 OpenMPプログラムのコンパイル OpenMPの各種関数を使わない場合、#pragma ompで始まる指示をソースコード内に書き込み、下記のコンパイルスイッチをつけてコンパイルす
Google グループでは、オンライン フォーラムやメール ベースのグループを作成したり、こうしたフォーラムやグループに参加したりすることで、大勢のユーザーと情報の共有やディスカッションを行うことができます。
今日も寝落ち… since 2011/8/22現在、研究で必要なんで C++ Concurrency in Action: Practical Multithreading を読んでる。4章まで読み終えたが、ここまで読むと"とりあえず”、std::thread, std::mutex, std::future が使えるようになる。 学部3年の時にOpenMPを扱う授業があったので研究でもOpenMPを使えばいいのだが、普段使っているclangではOpenMPが動かない。すでにexperimentalでサポートされているらしい1が、それがいつOS X上で使えるようになるのかはわからない。Apple次第である。 研究では開発をOS X上、実験をLinux(CentOS)上としているため、開発にclang、実験にgccを使っている。もちろん、開発環境にgccを入れているが、clangの詳細なエ
C++で全ての順列を作りたければ、STLにnext_permutation関数があり、以下のように簡単に作ることができる。 #include <iostream> #include <vector> #include <algorithm> int main(){ const int n = 3; std::vector<int> data; // [0, 1, 2, ....]というサイズnの配列を作成 for(int i=0; i<n; ++i){ data.push_back(i); } // 全ての順列を出力 do{ std::cout << "[ " << data[0]; for(unsigned int i=1; i<data.size(); ++i){ std::cout << ", " << data[i]; } std::cout << " ]" << std::end
こんなに使える (組合せ) 最適化手法 梅谷 俊治 大阪大学 大学院情報科学研究科 情報数理学専攻 科学技術振興機構 2011 年 9 月 7 日 第 10 回情報科学技術フォーラム (FIT2011) はじめに • 最適化手法は計算機の性能向上とアルゴリズムの進歩によっ て,現実世界の様々な問題の解決に有効な手段となりました. • 本講演では最適化分野の概要といくつかの現実問題に対する 最適化手法の取り組みを紹介します. 最短路問題 (2400 万点,5800 万枝) 巡回セールスマン問題 (24978 都市) 多角形詰込み問題 (48 製品) 本発表の概要 • 最適化分野の概要 • 計算困難な組合せ最適化問題 • 現実問題に対するアプローチ 最適化手法による問題解決アプローチ • 最適化は意思決定・問題解決のための一つの手段 • 最適化問題に定式化+最適解の計算+最適解の検証・分析
OpenMP に対応しているコンパイラなら、 omp_get_num_procs でも出来るが、CPU コアの割り当てなんかはプラットフォーム固有のものを使わないとできないので、結局 OS 依存で書いても変わらない。 というわけで、Windows と Linux 両方で使えるようなラッパー関数を作ることにした。 #include <stdio.h> #ifdef __linux #include <unistd.h> #elif __MINGW32__ #include <windows.h> #include <winbase.h> #endif int getCpuNum() { #ifdef __linux // for linux return sysconf(_SC_NPROCESSORS_CONF); #elif __MINGW32__ // for windows and w
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く