GCC를 사용하여 내 리눅스 컴퓨터에서 FFTW (3.3)을 컴파일하려고합니다. 멀티 스레드를 사용하지 않고 모든 것이 훌륭하게 작동했습니다. 이제 OpenMP 및 멀티 스레딩 사용으로 전환하고 싶습니다. 그래서, 나는이 지침에 따라, 스레드를 사용하기 위해 FFTW3을 다시 컴파일 :다중 스레드, 리눅스, gcc에 대한 FFTW3 컴파일
find/-name fftw3_*
.... nothing
이 없다 : 나는 다음 fftw3_threads.h 라이브러리를 검색 할 경우
http://www.fftw.org/doc/Installation-on-Unix.html#Installation-on-Unix
sudo ./configure CFLAGS=-enable-threads
sudo make
sudo make install
, 나는 아무도 찾을 수 컴파일하고 openmp를 활성화하려고하면 동일합니다.
sudo ./configure CFLAGS=-enable-openmp
sudo make
sudo make install
컴파일러는 실패하지 않습니다. 모든 것이 효과가있는 것처럼 보입니다. 그러나 라이브러리 중 하나를 포함 시키려고하면 코드가 컴파일되지 않습니다.
#include <fftw3_threads.h>
#include <fftw3_omp.h>
나는 내려면 그래서
, 몇 가지 질문 "그런 파일이나 디렉토리를 오류가 없다"
1) 왜 하나가 필요합니까 '-'기호를 CFLAGS를 나열 할 때? 왜 FFTW 매뉴얼은 '-'로 시작하는 모든 플래그를 나열합니다. (나는 이것이 FFTW 관련 질문이 아닐 수도 있음을 깨닫는다.)
2.) 내가 뭘 잘못하고 있니?
3.) 설명서에서 "기본적으로 스레드 루틴은 컴파일되지 않습니다." 나는 내 코드에서 "포함"생략하면, 컴파일이 방법은 오류를 생성하지 않는 :
int dummy = fftw_init_threads();
fftw_plan_with_nthreads(omp_get_max_threads()); // setup for multithreading
을 그들이 잘, 잘못을 생산한다하더라도?
좋습니다. 아직 라이브러리가 없습니다. 찾기/이름이 libchtw3_omp. * 인 – tir38
*? –
아 맞습니다. 나는 그것을 어떻게 보지 못했는지 모른다 : sudo find/-name libfftw3_omp. * /home/jaso/Downloads/fftw-3.3.3/threads./libs/libfftw3_omp.a /home/jaso/다운로드/fftw-3.3.3/threads/.libs/libfftw3_omp.lai /home/jaso/Downloads/fftw-3.3.3/threads/.libs/libfftw3_omp.la /home/jaso/Downloads/fftw- 3.3.3/threads/libfftw3_omp.la /usr/local/lib/libfftw3_omp.a /usr/local/lib/libfftw3_omp.la' . . 그래서 지금해야 할 일 : '#include libfftw3_omp' – tir38