Tôi có phần mở rộng C trong đó tôi muốn sử dụng OpenMP. Tuy nhiên, khi tôi nhập mô-đun của mình, tôi gặp lỗi nhập:Tiện ích mở rộng của Python và OpenMP C
ImportError: /home/.../_entropysplit.so: undefined symbol: GOMP_parallel_end
Tôi đã biên dịch mô-đun bằng -fopenmp và -lgomp. Đây có phải là vì cài đặt Python của tôi không được biên dịch với cờ -fopenmp? Tôi có phải xây dựng Python từ nguồn không? Hay liệu có khả năng nào khác không? Đây là lần duy nhất tôi thực sự sử dụng openmp trong mô-đun của mình:
unsigned int feature_index;
#pragma omp parallel for
for (feature_index = 0; feature_index < num_features; feature_index++) {
Tôi muốn gắn bó với openmp nếu có thể, chỉ vì nó dễ dàng và song song trong trường hợp này phù hợp với nó.
EDIT: Tôi bit viên đạn và biên dịch lại Python với hỗ trợ OpenMP. Mô-đun của tôi hoạt động hoàn hảo ngay bây giờ, nhưng đây không phải là giải pháp tuyệt vời. Tôi thực sự không thể phân phối nó nếu nó đòi hỏi một biên dịch lại đầy đủ của Python. Vì vậy, không ai biết một số cách xung quanh này? Liệu ctypes có hoạt động được không?
GIẢI PHÁP! Đó là một vấn đề liên kết đơn giản. (Tôi xây dựng lại Python cho rằng ?!) OpenMP đã không được liên kết đúng trong quá trình biên dịch của các mô-đun. Vì vậy, IS có thể tải phần mở rộng C Python sử dụng OpenMP.
Bạn có thể xem xét sao chép giải pháp của mình thành câu trả lời "thực" được đăng trong câu hỏi này, để dễ xem hơn (và có thể được upvoted). –
Cảm ơn, tôi sẽ làm điều đó. – ajduff574