我有一个拥有8个处理器的核心i7笔记本电脑。
我想用相同的代码(例如GPU编程中的内核)同时运行所有这8个处理器,例如:
// GPU programming code (kernel)
__kernel void set(__global int* list)
int i = get_global_id();
list[i] = i;
}
我想在mathematica中执行类似的操作,但要使用C代码而不是OpenCL ,或者使用纯C代码来执行此操作。
显然,我想使用mathematica或C在所有内核中运行特定的代码段。
对不起,不清楚。.:)
您可能想阅读有关OpenMP的信息 。
如果您正在寻找利用Mathematica中所有内核的方法,那么就不需要C了。Mathematica具有相当好的并行化功能 ,例如使用Parallelize
:
In[1] := Parallelize[Select[Range[9000, 10000], PrimeQ[2^# - 1] &],
Method -> "FinestGrained"]
Out[1] = {9689, 9941}
看一下基于C的API Grand Central Dispatch或OpenMP 。