使用并行编译器进行编译以与Ruby一起使用?

时间:2013-01-25 03:29:56

标签: c ruby parallel-processing openmp

我有一个(半)理论问题。

是否可以使用并行的特定编译器(如OpenMP,CUDA等)编译C代码,以便为Ruby语言编写C扩展,从而在分布式计算机上更好地(理论上)运行?

1 个答案:

答案 0 :(得分:0)

如果你的意思是,你可以编译并行C代码作为Ruby扩展,我认为你大多数应该能够这样做。例如,执行矩阵乘法的Ruby的数字扩展可以调用英特尔MKL的DGEMM例程,而MKL在内部与OpenMP并行化。

您应该注意不要混合使用不同OpenMP运行时的相同程序扩展。以GCC,Intel C / C ++编译器和Oracle Solaris Studio为例。它们中的每一个都有自己的OpenMP运行时实现。这些实现在很大程度上彼此不兼容,并且将它们混合在同一个可执行文件中(通过静态链接或通过在运行时动态加载模块)是对灾难的调用。

需要注意的另一件事是Ruby运行时是否是线程安全的,是否可以从多线程代码调用它。如果没有从OpenMP parallel区域内调用Ruby运行时,则该注释无关紧要。

由于只有一个CUDA供应商,因此只关注支持CUDA的扩展时的版本不匹配。

相关问题