параллельные вычисления в C и Mathematica - PullRequest
1 голос
/ 12 июля 2011

У меня ядро ​​i7 для ноутбука с 8 процессорами.

Я хочу запустить все эти 8 процессоров одновременно с одним и тем же фрагментом кода (что-то вроде ядра в программировании на GPU), например: -

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

Я хочу сделать что-то подобное в Mathematica, но с C кодом, а не OpenCL , или сделать это с чистым кодом C.

ясно, что я хочу запустить определенный кусок кода во всех ядрах, используя mathematica или C.

извините за неясность ..:)

Ответы [ 3 ]

5 голосов
/ 12 июля 2011

Возможно, вы хотите прочитать о OpenMP .

4 голосов
/ 12 июля 2011

Если вы ищете способы использования всех ядер в Mathematica, вам не нужно привлекать C. Mathematica имеет довольно хорошую функцию распараллеливания , например, с использованием Parallelize

In[1] := Parallelize[Select[Range[9000, 10000], PrimeQ[2^# - 1] &],
                     Method -> "FinestGrained"]
Out[1] = {9689, 9941}
1 голос
/ 12 июля 2011

Взгляните на Grand Central Dispatch или OpenMP , оба API на основе C.

...