このコードを見てください。
シングルスレッド プログラム: http://pastebin.com/KAx4RmSJ . 以下でコンパイル:
g++ -lrt -O2 main.cpp -o nnlv2
openMP を使用したマルチスレッド: http://pastebin.com/fbe4gZSn でコンパイル:
g++ -lrt -fopenmp -O2 main_openmp.cpp -o nnlv2_openmp
デュアル コア システムでテストしました (したがって、2 つのスレッドが並行して実行されます)。ただし、マルチスレッド バージョンはシングル スレッド バージョンよりも低速です (また、不安定な時間が表示されます。数回実行してみてください)。どうしたの?どこで間違えたのですか?
いくつかのテスト:
シングルスレッド:
Layers Neurons Inputs --- Time (ns)
10 200 200 --- 1898983
10 500 500 --- 11009094
10 1000 1000 --- 48116913
マルチスレッド:
Layers Neurons Inputs --- Time (ns)
10 200 200 --- 2518262
10 500 500 --- 13861504
10 1000 1000 --- 53446849
何が悪いのかわかりません。