我有一個C擴展,我想使用OpenMP。當我輸入我的模塊,但是,我得到一個導入錯誤:Python和OpenMP C擴展
ImportError: /home/.../_entropysplit.so: undefined symbol: GOMP_parallel_end
我編譯-fopenmp和-lgomp模塊。這是因爲我的Python安裝不是用-fopenmp標誌編譯的嗎?我需要從源代碼構建Python嗎?或者還有其他一些可能性嗎?這是我其實我的模塊中使用OpenMP的唯一時間:
unsigned int feature_index;
#pragma omp parallel for
for (feature_index = 0; feature_index < num_features; feature_index++) {
我想堅持使用OpenMP,如果有可能,只是因爲它是如此簡單,在這種情況下,並行適合很好。
編輯:我咬緊牙關,用OpenMP支持重新編譯Python。我的模塊現在完美工作,但這不是一個很好的解決方案。如果需要Python的完整重新編譯,我無法真正分配它。那麼是否有人知道一些解決辦法? ctypes可以工作嗎?
已解決!這是一個簡單的鏈接問題。 (我爲此重建了Python!)在編譯模塊期間,OpenMP沒有正確連接。因此可以加載使用OpenMP的C Python擴展。
您可能會考慮將您的解決方案複製到根據此問題發佈的「真實」答案中,以便更容易看到(並且可以提高)。 – 2010-08-30 02:18:54
謝謝,我會這樣做的。 – ajduff574 2010-08-30 02:55:35