나는이 코드를 사용하여 선택 요소를 수정할 수 있습니다 알고배열의 선택 요소를 수정
int* idx = ...
float* x = ...
float* a = ...
for (int i=0; i<N; i++){
x[idx[i]] = a[i];
}
더 명확한 예는 해당 파이썬 구문입니다 :
x = zeros(8)
idx = array([1, 4, 5, 7, 2])
x[idx] = arange(5)*20
// x = [0, 20, 20, 0, 20, 20, 0, 20]
그러나 나는 사람들이 알고 이런 간단한 for-loops를 최적화하는데 많은 시간을 소비 해왔다. LAPACK, BLAS 및 vDSP에 대한 설명서를 살펴 보았지만 선택 요소를 수정하는 기능을 찾지 못했습니다.
나는 본질적으로 내가 원하는 것의 역함 인 x[i] = a[idx[i]]
을 발견했다. 어떤 함수가 다른 배열을 기반으로 배열의 select 요소를 수정합니까?
'idx []'이 룩업 테이블입니까? –
최적화가 가능한지 잘 모르겠다.'idx'와'a'의 프리 페치를 시도 할 수는 있지만,이 간단한 경우에 이미 완료되었을 것이다.'idx [i] '시퀀스는 어떤 특별한 속성은 무엇입니까? – Pradhan
@FiddlingBits 아니요, 단지 'int *'입니다. 조회 테이블도 작동 할 수 있습니까? 어떤 기능이 보입니까? – Scott