나는 내가 OMP는 중첩 된 루프를 최적화 if 문
void optimized(int data_len, unsigned int * input_array, unsigned int * output_array, unsigned int * filter_list, int filter_len) {
#pragma omp parallel for
for (int j = 0; j < filter_len; j++) {
for (int i = 0; i < data_len; i++) {
if (input_array[i] == filter_list[j]) {
output_array[i] = filter_list[j];
}
}
}
}
병렬
에서 실행하려고 그냥 프라 그마 문을 걸었습니다 코드 몇 줄을 다음과 같은 것은 정말 놀라운 일을했다,하지만 내가 더 줄이기 위해 노력하고 이 코드의 실행 시간 배열 패딩에서 루프를 축소하여 작업을 만드는 것에 이르기까지 많은 것을 시도했지만, 지금까지는 루프 언 롤링 만 작동하는 것으로 보입니다. 누구든지 내가이 코드를 더 빨리 할애 할 수있는 것에 대한 제안을 가지고 있습니까?
어떤 컴파일러를 사용하고 있습니까? – MattG
gcc with -O3 optimization –
Intel 프로세서를 사용하는 경우 Intel Intrinsics : http://software.intel.com/sites/landingpage/IntrinsicsGuide/ – MattG