Apple Accelerate Framework vForce 라이브러리를 사용하여 성능 향상

불꽃

기본 벡터 및 행렬 연산의 성능을 향상시키기 위해 Apple의 Accelerate Framework에서 BLAS 라이브러리를 성공적으로 구현했습니다.

이것에 만족하면서 저는 기본 수학 함수를 벡터화하기 위해 vForce에 관심을 돌 렸습니다. 여기에서는 순진한 구현 (자동 컴파일러 최적화 -Os 사용)에 비해 성능이 상당히 저하되어 약간 놀랐습니다.

간단한 벤치 마크로 다음 테스트를 실행했습니다. Matrix는 이중 포인터를 사용하는 기본 Matrix 유형이고 AccelerateMatrix는 vForce의 지수 함수를 사용하는 Matrix의 하위 클래스입니다.

Matrix A(vec_size);
AccelerateMatrix B(vec_size);
for (int i=0; i<vec_size;i++ ) {
    A[i] = i;
    B[i] = i;
}

double elapsed_time;

clock_t start = clock();
for(int i=0;i<reps;i++){
    A.exp();
    A.log();
}
clock_t stop = clock();

elapsed_time = (double)(stop-start)/CLOCKS_PER_SEC/reps;

cerr << "Basic matrix exponentiation/log time = " << elapsed_time << endl;


start = clock();
for(int i=0;i<reps;i++){
    B.exp();
    B.log();
}
stop = clock();

elapsed_time = (double)(stop-start)/CLOCKS_PER_SEC/reps;

cerr << "Accelerate matrix exponentiation/log time = " << elapsed_time << endl;

지수 / 로그 멤버 함수는 다음과 같이 구현됩니다.

void AccelerateMatrix::exp(){
   int size =(int)this->getSize();
   this->goToStart();
   vvexp(this->ptr, this->ptr, &size);}

void Matrix::exp(){
    double *ptr = data;
    while (!atEnd()) {
        *ptr = std::exp(*ptr);
        ptr++;
    }
}

data는 double 배열의 첫 번째 요소에 대한 포인터입니다.

다음은 성능 결과입니다.

행렬 요소 수 = 1000000

기본 행렬 지수 / 로그 시간 (초) = 0.0089806

행렬 지수화 / 로그 시간 (초) 가속화 = 0.0149955

릴리스 모드의 XCode에서 실행 중입니다. 내 프로세서는 2.3GHz Intel Core i7입니다. 메모리는 8GB 1600MHz DDR3입니다.

불꽃

문제는 vForce가 메모리를 조작하는 방법과 관련이있는 것으로 보입니다. 본질적으로 큰 행렬을 한 번에 처리하는 것은 좋지 않습니다. 들면 vec_size = 1000;vForce는 지수를 계산 / 최적화 컴파일러 순 버전 배 빠른 기록. 나는 더 큰 예제 vec_size = 1000000를 각각 1000 개의 배치로 나누었고, vForce 구현은 순진한 것보다 두 배나 빠릅니다. 좋은!

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Lua 및 Roblox Studio를 사용하여 성능 향상

분류에서Dev

SQL Server 인덱스를 사용하여 성능 향상

분류에서Dev

DPC ++ oneAPI를 사용하여 성능 향상

분류에서Dev

Simulink에서 모델 참조를 사용하여 성능 향상

분류에서Dev

find 및 exec를 사용하여 스크립트 성능 향상

분류에서Dev

jq를 사용하여 대용량 파일을 처리 할 때 성능 향상

분류에서Dev

스레드를 사용하여 그리드 검색 성능 향상

분류에서Dev

Aggregate (Union) 대신 +를 사용하여 성능 향상이 있습니까?

분류에서Dev

성능 향상을 위해 클리핑을 사용하여 QPixmap 그리기

분류에서Dev

중첩 된 for 루프를 사용하여 코드 조각의 성능 향상

분류에서Dev

하위 쿼리의 성능 향상

분류에서Dev

람다 표현식을 사용하여 성능 향상이 있습니까?

분류에서Dev

iOS-Accelerate.framework를 사용하여 벡터에서 비트 단위 XOR

분류에서Dev

사전을 사용하여 알고리즘 효율성 향상

분류에서Dev

지리적 위치를 사용하여 거리별로 정렬하는 성능 향상

분류에서Dev

자동 증가 필드를 기본 키로 사용하여 쿼리 성능을 향상시키는 방법

분류에서Dev

라이브러리 .docx를 사용하여 docx 속성 설정

분류에서Dev

mysql에서 여러 조인을 적용 할 때 성능 향상

분류에서Dev

Robot Framework에서 SUDS 라이브러리 및 MessagePlugin을 사용하여 objectTypes로 Soap 메시지 생성

분류에서Dev

Postgresql 및 Flask-SQLAlchemy를 사용하여 COUNT (*) WHERE의 데이터베이스 성능 향상

분류에서Dev

고유 한 numpy 개수를 사용할 때주기 동안 파이썬을 피하여 성능 향상

분류에서Dev

Flutter에서 많은 이미지 (썸네일)를 사용하여 스크롤 성능 향상

분류에서Dev

쿼리 성능 향상

분류에서Dev

성능 향상 mySQL 쿼리

분류에서Dev

LINQ 쿼리 성능 향상

분류에서Dev

MySQL 쿼리 성능 향상?

분류에서Dev

쿼리 성능 향상

분류에서Dev

쿼리 성능 향상

분류에서Dev

MySQL 쿼리 성능 향상?

Related 관련 기사

  1. 1

    Lua 및 Roblox Studio를 사용하여 성능 향상

  2. 2

    SQL Server 인덱스를 사용하여 성능 향상

  3. 3

    DPC ++ oneAPI를 사용하여 성능 향상

  4. 4

    Simulink에서 모델 참조를 사용하여 성능 향상

  5. 5

    find 및 exec를 사용하여 스크립트 성능 향상

  6. 6

    jq를 사용하여 대용량 파일을 처리 할 때 성능 향상

  7. 7

    스레드를 사용하여 그리드 검색 성능 향상

  8. 8

    Aggregate (Union) 대신 +를 사용하여 성능 향상이 있습니까?

  9. 9

    성능 향상을 위해 클리핑을 사용하여 QPixmap 그리기

  10. 10

    중첩 된 for 루프를 사용하여 코드 조각의 성능 향상

  11. 11

    하위 쿼리의 성능 향상

  12. 12

    람다 표현식을 사용하여 성능 향상이 있습니까?

  13. 13

    iOS-Accelerate.framework를 사용하여 벡터에서 비트 단위 XOR

  14. 14

    사전을 사용하여 알고리즘 효율성 향상

  15. 15

    지리적 위치를 사용하여 거리별로 정렬하는 성능 향상

  16. 16

    자동 증가 필드를 기본 키로 사용하여 쿼리 성능을 향상시키는 방법

  17. 17

    라이브러리 .docx를 사용하여 docx 속성 설정

  18. 18

    mysql에서 여러 조인을 적용 할 때 성능 향상

  19. 19

    Robot Framework에서 SUDS 라이브러리 및 MessagePlugin을 사용하여 objectTypes로 Soap 메시지 생성

  20. 20

    Postgresql 및 Flask-SQLAlchemy를 사용하여 COUNT (*) WHERE의 데이터베이스 성능 향상

  21. 21

    고유 한 numpy 개수를 사용할 때주기 동안 파이썬을 피하여 성능 향상

  22. 22

    Flutter에서 많은 이미지 (썸네일)를 사용하여 스크롤 성능 향상

  23. 23

    쿼리 성능 향상

  24. 24

    성능 향상 mySQL 쿼리

  25. 25

    LINQ 쿼리 성능 향상

  26. 26

    MySQL 쿼리 성능 향상?

  27. 27

    쿼리 성능 향상

  28. 28

    쿼리 성능 향상

  29. 29

    MySQL 쿼리 성능 향상?

뜨겁다태그

보관