В настоящее время я работаю над кодом Python, и для увеличения скорости я использовал f2py для переноса некоторого существующего кода Fortran. Все работает хорошо и скорость просто потрясающая. Однако я обнаружил, что код теперь работает в нескольких потоках (согласно htop), что я нигде не указывал (может быть, это делается внутри f2py?).
Вот команда, которую я использую для создания модуля:
f2py --f90exec="gfortran" --f90flags="" --noopt \
$(ACMLLIB) $(FFTLIB) $(ACMLINC) $(FFTINC) -c -m fmod myCode.f90
где переменные $(ACMLLIB) $(FFTLIB) $(ACMLINC)
и $(FFTINC)
— это пути к библиотекам.
Похоже, когда я запускаю скрипт, он использует все ядра, которые может найти. У меня нет проблем с этим, но я хочу, по крайней мере, иметь возможность контролировать это - как я могу это сделать, например. установка количества потоков?
Я подозреваю, что это как-то связано с опцией -pthread здесь:
....
компиляция исходников C
Компилятор C: x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -Wdate-time -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=формат-безопасность -fPIC
....
Это часть массивного вывода после того, как я скомпилировал модуль Fortran. Я понятия не имею, как с этим справиться.