2011-07-11 30 views
1

我有一个核心i7笔记本电脑有8个处理器。并行计算在C和mathematica

我想用同一段代码同时运行所有这8个处理器,例如(类似于内核在GPU编程): -

// GPU programming code (kernel) 
__kernel void set(__global int* list) 
    int i = get_global_id(); 
    list[i] = i; 
} 

我想要做这样的事情在数学,但与C代码不是OpenCL,或者用纯C代码做。

清楚,我想使用Mathematica或C.

遗憾的是没有说清楚来运行所有内核特定的代码.. :)

+0

你可以使用并行线程库在C中在不同的线程中运行一个函数(每个线程使用一个可用的处理器)。一旦完成,您可以使用MathLink从Mathematica调用您的并行C函数。是否有您希望看到的功能的特定示例? – jmlopez

回答

5

你可能想了解OpenMP

+0

甚至[Cilk](http://en.wikipedia.org/wiki/Cilk);) – bacchus

4

如果您正在寻找利用数学中的所有核心方面,不应该有任何需要涉及数学C.具有fairly good parallelization functionality,使用Parallelize例如:

In[1] := Parallelize[Select[Range[9000, 10000], PrimeQ[2^# - 1] &], 
        Method -> "FinestGrained"] 
Out[1] = {9689, 9941}