プロが教えるわが家の防犯対策術!

C++で並列で処理できるメソッドがあるライブラリはありますか。
そのメソッドの引数に何かのメソッドを渡すと並列処理ができる奴がいいですね。
もしも作ったらソースコードの添付お願いします

質問者からの補足コメント

  • 前者の処理を分担して処理するやつです。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/04/03 11:17

A 回答 (5件)

    • good
    • 0

GPUを使った並列処理であれば


・CUDA ( ただしNVDIA製のGPU )
・OpenCL ( 共通ライブラリ )
などがあります。しかしメソッドの引数にメソッドを渡すという方法では不可能です。

また、IntelのSIMDを使った並列処理であれば、最近のコンパイラであれば自動で最適化をしてくれます。

OpenCLを使うことをお勧めします。ただし既存のコードを多少変更する必要があります。そこまで大きな変更はないのでこれが一番手っ取り早いかと思います。

並列化するにはマシン語単位での最適化が必要なためです。
    • good
    • 0

手軽にやるならOpenMPがいいでしょう。

最近は主要なコンパイラが対応しています。
https://ja.wikipedia.org/wiki/OpenMP
    • good
    • 0

並列処理で有名なのは


・Threading Building Blocks (Intel)
・CUDA (nVidia)
とかだと思うけど, 実際使ったことはないのでどのくらい希望に沿うものかは知らん.

あと C++1z では一部のライブラリ関数が並列処理対応になるはず.
    • good
    • 1
この回答へのお礼

Threading Building Blocks (Intel)が気になったので調べてみます。
ありがとうございました。

お礼日時:2017/04/03 21:10

その場合の「並列」とはどういうものでしょう。


100万件あるデータ処理を1万件づつ100個にわかて並列処理したい、、、といったことなのか?
それとも、1本のサーバー・プログラムで100個のクライアントを同時に相手にしたい、、、といったことなのか。

ご存じとは思いますがスレッド(thread)というものがあります。
前述の前者なら1つのスレッドを生成する際に「あなたはここからここまでのデータを」と情報を渡し100個のスレッドを生成すればよいし、後者はクライアントが接続に来るたびに1つのスレッドを生成して以降の通信処理をそこにまかせればよい、、、という形になります。

教材や解説を探す際のキーワードは「スレッド」とか「マルチスレッド」とか「スレッドセーフ」といったところでしょう。

参考まで。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!