2012-05-16 10 views
7

OpenMP to C kodu ile kod derlemenin bir yolu var mı (OpenMP kısmı düz C'ye çevrildi), böylece OpenMP tarafından ne tür bir kod üretildiğini bilebilirim. Gcc 4.4 derleyicisi kullanıyorum.OpenMP kodunu C koduna derleme

+2

Bu sorunun, gcc derleyicisinin OpenMP çağrılarını C'ye çevirdiğini varsayıyorum. Bunun ve diğer çoğu OpenMP ile uyumlu derleyicilerin, sistem işlevlerini çağırmak dahil olmak üzere kaynağı çeviriciye çevirdiğinden şüpheleniyorum. Derleyicinizin assembler listeleri üreteceğinden eminim; Bu, üzerinde çalışmanız gereken şey olabilir. Beklentilerimi yanlış gösteren bir cevabı ilgiyle izliyorum. –

+0

Afaik, kaynak koduna gcc derleyicinden örn. Bu pragmaların ne yaptığını görmek için omp.h ve kütüphanenin (libgomp) ilgili kaynak dosyaları. Ancak, c derleyicisini çağırmadan önce yeni bir rutin yok. bakınız [burada] (http://gcc.gnu.org/onlinedocs/libgomp/Implementing-FOR-construct.html#Implementing-FOR-construct) – Bort

cevap

3

diğer platformlar üzerinde yerleşik bir derleyici tarafından derlenebilir C veya Fortran 77 kod optimize yayarlar (hatta http://openmp.org/wp/openmp-compilers/ listelenen), en az http://www2.cs.uh.edu/~openuh/ OpenUH bulunmaktadır.

da vardır: http://www.cs.uoi.gr/~ompi/ Ompi:

Ompi derleyici OpenMP #Pragmas C kaynak kodunu alır ve çoklu C kodu transforme üretmektedir, sistemin yerel derleyici tarafından derlenmiş hazır.

ve OdinMP:

OdinMP/CCP taşınabilirlik nedenlerle Java ile yazılmış ve OpenMP direktifleri bir C-programı alır ve POSIX evreleri için bir C-programı üretmektedir.

Openmp kodunu Düz C'ye çevirmenin neredeyse imkansız olduğunu söylemeliyim; çünkü eski düz C'nin hiçbir iş parçacığı desteği yoktur ve OpenMP kaynak-kaynak çevirmenlerinin henüz C11'in farkında olmadığını düşünüyorum. OpenMP programı, POSIX iş parçacıklarıyla C'ye veya bazı çalışma zamanı kitaplığı (libgomp gibi) C'ye çevrilebilir. Örneğin, OpenUH, pthreads'in kendisini kullanan kendi kütüphanesine sahiptir. Diğer commenters gibi

6

düz C.

için OpenMP direktifleri çevirmez gcc işaret Ama ne gcc hakkında bir fikir edinmek istiyorsanız -fdump-tree-optimized seçeneğiyle derlemek edebilirsiniz direktifleri ile yapar. Bu, en azından C-benzeri olan programın ara sunumunu üretecektir.

optimize aşamada OpenMP direktifleri GOMP çalışma zamanı kitaplığı için görüşmeleri ile değiştirildi, dampingli edilebilir birkaç aşamaları (gcc için man sayfasına bakın) vardır. Bu gösterime bakmak, neler olup bittiğine dair bazı bilgiler verebilir.