일반적으로 어셈블리 코드를 통한 성능 향상에 대한 질문에 대한 답변은 "컴파일 작업이 귀찮은 작업이 아닙니다." 그리고 나는 그것을 얻는다.최적화 된 어셈블리 코드 (BLAS)
그러나 최적화 된 선형 대수 라이브러리 (예 : ACML)가 표준 컴파일 된 라이브러리보다 2 배에서 5 배까지 성능이 향상 될 수 있음을 알았습니다. 예를 들어, 제 8 코어 머신에서, 최적화 된 매트릭스 곱셈을 30 배 이상 빠르게 실행하는 대신 스톡 싱글 스레드 BLAS 구현을 실행했습니다. 즉, 모든 코어를 사용하기 때문에 8 배 향상을 고려한 후에도 여전히 4 배가됩니다 최적화로부터의 개선.
그래서 나에게 최적화 된 어셈블리 코드가 정말 큰 차이를 만들 수 있다고 생각합니다. 내가 놓친 게 있니?
내가보기에 너무 어렵지 않다면이 코드를 다른 코드 세그먼트에서 사용해 볼 수도 있습니다. 복잡하지는 않지만 조립품으로 작성한 작은 내부 루프에서 2 배의 향상을 얻을 수 있다면 가치가있을 것입니다.
무엇이 질문입니까?확실히 특정 문제에 대해서는 해당 수준에서 코드를 직접 조정하면 실질적인 이득을 얻을 수 있습니다. –
@Carl 나는 이러한 BLAS 구현이 성능 향상을 위해 무엇을하는지, 그리고 그러한 기술이 얼마나 널리 적용되는지에 대한 질문을 던집니다. – mrip
이전 경험에 따르면, 코드의 10 %가 런타임의 90 %를 차지하므로, 프로파일 러를 사용하여 코드의 10 %를 매우 자세히 관찰하고 컴파일러가 생성 한 어셈블리 코드를 분석하면 거의 확실하게 찾을 수 있습니다 어셈블러에서 수동으로 다시 작성하여 많은 작업을 수행 할 수있는 부분 그러나이 기술을 코드 유지 관리에 심각한 영향을 줄 수 있으므로 속도 향상이 충분히 높은 경우에만이 기술을 조금씩 (처음에는 가장 유망한 후보로, 새로운 벤치마킹에 이어) 사용하십시오. – fvu