Найти - Пользователи
Полная версия: SWIG и Python
Начало » Python для экспертов » SWIG и Python
1
DbIHbKA
у меня есть программа на C которая использует OpenMP для распараллеливания и я хочу сделать из нее модуль для Python. В документации к swig ничего не нашел google тоже ничем не помог вот решил спросить здесь.
doza_and
DbIHbKA
ничего не нашел
так а что искали?
DbIHbKA
я искал как с помощью swig сделать из моей программы на С модуль дляPython
doza_and
Это в доках swig есть
Если коротко - то говорите
swig -c++ -python ake.i

а в файле
/* File : example.i */
%module(docstring="ake imitation") ake

%include "typemaps.i"
%include "carrays.i"
%include <pybuffer.i>


%array_class(double, doubleArray);
%array_class(float, floatArray);
%array_class(int, intArray);
%array_class(short, shortArray);
%array_class(unsigned char, uArray);

%{
#define SWIG_FILE_WITH_INIT
#include "ake.h"
%}

%include "ake.h"
Это для c++ для с опция -c
doza_and
Извините отвлекся
В данном случае должен получится ake_wrap.cxx ake.py
первый включаем в dll а второе автоматом используется для импорта dll должен быть не dll а _ake.pyd (надо переименовать или сделать чтобы сборщиек его сразу собирал) (инструкция для windows)
DbIHbKA
спасибо конечно но я все это и в документации прочитал. Когда используешь библиотеку OpenMP то при компиляции приходиться прописывать опцию -fopenmp а вот при сборке с swgi я не нашел где можно прописать эту опцию вот
DbIHbKA
попробовал собрал вот так:
gcc -fopenmp -o2 -fPIC -c first.c
gcc -fopenmp -O2 -fPIC -c first_wrap.c -I /usr/include/python2.7
gcc –shared first.o first_wrap.o -o _first.so
то есть тупо добавил опцию -fopenmp и при импортировании получил следующее

import first
Traceback (most recent call last):
File “<stdin>”, line 1, in <module>
File “first.py”, line 26, in <module>
_first = swig_import_helper()
File “first.py”, line 22, in swig_import_helper
_mod = imp.load_module('_first', fp, pathname, description)
ImportError: ./_first.so: undefined symbol: GOMP_parallel_end
doza_and
swig ведь не собирается, собирается только ake_wrap.cxx
надо поискать динамическую библиотеку которая грузится - скорее всего ее не находит
те где GOMP_parallel_end находится
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB