일반 매트릭스의 구현이 있으며 병렬 처리 및 직렬 처리에서 '*'및 '+'연산자를 사용하려면 옵션을 만듭니다.병렬 처리 대 직렬 처리
병렬 계산 예 : 우리는 m1과 m2 행렬을 가지고 있고 m3 = m1 * m2이라고 가정합니다. 다른 스레드로 m3 행 i '을 계산합니다. 플러스 :
가직렬 계산 단지 m3 [0,0] 계산 m3 [0,1] 등등
I는 크고 작은 매트릭스 에 사용하는 각 동작 시간을 측정하고, I는 주목보다작은 행렬에서는 직렬 처리가 병렬 처리보다 빠르지 만 다른 한편으로는 병렬 처리가 큰 행렬에서 더 우수한 성능을 보였습니다.
The results:
+----------------------------+--------------------------------+------------+
| Big | Small | |
+----------------------------+--------------------------------+------------+
| * | + | * | + | |
+-------------+--------------+---------------+----------------+------------+
| 0.697798sec | 0.0407585sec | 8.7408e-05sec | 0.000109052sec | Parallel |
+-------------+--------------+---------------+----------------+------------+
| 11.9984sec | 0.0235058sec | 6.68e-07sec | 7.76e-07sec | Serial |
+-------------+--------------+---------------+----------------+------------+
누군가가 이유를 설명해 주시겠습니까?
고마워요!
CPU 캐시는 선형 메모리 액세스에 최적화되어 있습니다. L1, L2 및 L3 캐시 성능을 보여줄 도구를 얻으십시오. –
스레드를 돌리는 데는 시간이 걸립니다. – NathanOliver
또한 크고 작은 의미없는 용어는 우리가 10과 100을 복용하고 있습니까? 그리고 각각의 크기에 대해 얼마나 많은 쓰레드를 가지고 있고 쓰레드 풀을 사용하고 있거나 각 쓰레드를위한 새로운 쓰레드를 시작 했습니까? –