JGF 벤치 마크에서 나온 자바 버전 희소 행렬 곱셈 프로그램을 검사 중입니다. 나는 많은 종류의 CPU 주파수에서이 프로그램을 돌린다. 나는 또한이 프로그램에 대한 몇 가지 프로파일을 수행한다. 캐시 집중도가 나쁘고 메모리 사용량이 많기 때문에이를 메모리 집약적 인 프로그램으로 분류합니다. 더 느린 주파수에서 실행되는 이런 종류의 프로그램의 실행 시간은 실속 할 때 CPU 사이클을 낭비 할 수 있기 때문에 더 빠른 주파수에 비해 약간 줄여야합니다. 그러나이 프로그램의 실행 시간은 실험에서 CPU 빈도에 비례합니다. 그 이유는 무엇입니까?희소 행렬 곱셈 실행 시간
매트릭스 (어레이)의 크기는 500000이고이 프로그램은 3 층 캐시가있는 i7-920에서 실행되었습니다. 코어 당 32KB L1 데이터 2KB, L1 명령어, 코어 당 L2 256KB 및 L3 8MB 공유 캐시가 있습니다. '자바 -cp에 대한
성능 카운터 통계 :
나는 또한 반환 한에 의해 실행 통계를 얻었다. JGFSparseMatmultBenchSizeC '- 어쩌면 그것에서 어떤 역할을 할 수
83925.084119 task-clock-msecs # 1.001 CPUs
2,045 context-switches # 0.000 M/sec
28 CPU-migrations # 0.000 M/sec
29,687 page-faults # 0.000 M/sec
223,130,573,396 cycles # 2658.688 M/sec (scaled from 66.68%)
66,679,432,987 instructions # 0.299 IPC (scaled from 83.33%)
12,779,607,690 branches # 152.274 M/sec (scaled from 83.32%)
11,389,605 branch-misses # 0.089 % (scaled from 83.32%)
11,056,332,293 cache-references # 131.740 M/sec (scaled from 83.34%)
3,847,329,243 cache-misses # 45.842 M/sec (scaled from 83.35%)
83.816412311 seconds time elapsed
아마도 캐시가 메모리 액세스를 무의미하게 만들 정도로 크다. 문제점 크기와 캐시 크기에 대한 정보를 제공하지 않았습니다. –
캐시 위치가 좋지 않다고 어떻게 판단 했습니까? 좋은 패키지는 캐시 사용을 최적화해야합니다. 또한 귀하의 데이터는 어떻습니까? 구조가 매우 복잡하거나 반복적 인 경우 구현시이를 감지하여 더 적은 메모리 액세스를 위해 최적화 할 수 있습니다. – Iterator
perf로 실행 통계를 프로파일했습니다. 무거운 캐시 미스가 있으며이 프로그램의 IPC가 낮습니다. –