OpenMP + pybind11 (скомпилируется с помощью setup.py) на Mac и LinuxC++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Гость
 OpenMP + pybind11 (скомпилируется с помощью setup.py) на Mac и Linux

Сообщение Гость »


У меня есть модуль Python, который я хочу сделать доступным как в macOS, так и в Linux, который использует код C++ с OpenMP. У меня проблемы с macOS (полагаю, Apple Clang не поддерживает OpenMP). У меня есть следующий код *.cpp, использующий этот пример:

#include #include // специфично для macOS с установленной libomp – как обобщить? #include "/usr/local/opt/libomp/include/omp.h" пространство имен py = pybind11; // тест OpenMP int sum_thread_ids(){ целая сумма = 0; #pragma omp параллельная общая(сумма) { спать(3); #pragma omp критично сумма += omp_get_thread_num(); } сумма возврата; } PYBIND11_MODULE(openmp_test, м){ m.def("get_max_threads", &omp_get_max_threads, "Возвращает максимальное количество потоков"); m.def("set_num_threads", &omp_set_num_threads, "Установить количество потоков"); m.def("sum_thread_ids", &sum_thread_ids, "Добавляет идентификаторы потоков"); } И затем setup.py имеет:

импортировать ОС из glob import glob из pybind11.setup_helpers импортировать Pybind11Extension из настройки импорта setuptools, find_packages импортировать имя_модуля cxx_std = int(os.environ.get("CMAKE_CXX_STANDARD", "20")) ext_modules = [ Pybind11Extension("openmp_test", sorted(glob("src/*.cpp")), cxx_std=cxx_std) ] настраивать( ... пакеты = find_packages (), install_requires=['pybind11'], python_requires='>=3.10', ext_modules=ext_modules ) Я устанавливаю в каталог модуля, содержащий setup.py, с помощью:

pip install . Компилируется без ошибок. Однако когда я пытаюсь использовать его в Python, я получаю:

>>>импорт openmp_test Traceback (последний вызов последний): Файл «», строка 1, в ImportError: dlopen(/Users/.../.pyenv/versions/3.11.2/lib/python3.11/site-packages/openmp_test.cpython-311-darwin.so, 0x0002): символ не найден в плоском пространстве имен ' _omp_get_max_threads' Что мне не хватает? И как я могу сделать это доступным как для macOS, так и для Linux?
Ответить Пред. темаСлед. тема

Быстрый ответ, комментарий, отзыв

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • OpenMP + pybind11 (скомпилируется с помощью setup.py) на Mac и Linux
    Гость » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Гость
  • Как добавить дополнительные функции только для Python в проект pybind11, созданный с помощью scikit
    Гость » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Гость
  • Как добавить дополнительные функции только для Python в проект pybind11, созданный с помощью scikit
    Гость » » в форуме C++
    0 Ответы
    7 Просмотры
    Последнее сообщение Гость
  • Как установить пакеты Python с помощью Pip в Inno Setup
    Гость » » в форуме Python
    0 Ответы
    5 Просмотры
    Последнее сообщение Гость
  • Может ли mac-vlan использовать специальный пакет отправки MAC-адреса?
    Anonymous » » в форуме Linux
    0 Ответы
    0 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»