Я бы не сказал, что Mathematica автоматически выполняет вычисления на GPU или Paralell-CPU, по крайней мере, в целом. Поскольку вам нужно что-то делать с ядрами parallel, вам следует инициализировать больше ядер и/или загрузить CUDALink или OpenCLLink и использовать определенные функции Mathematica, чтобы использовать потенциал CPU и/или GPU.
Например, у меня не очень мощная видеокарта (NVIDIA GeForce 9400 GT), но мы можем проверить, как работает CUDALink. Сначала я должен загрузить CUDALink
:
Needs["CUDALink`"]
Я собираюсь проверить умножение больших матриц. Я выбираю случайную матрицу 5000 x 5000
действительных чисел в диапазоне (-1,1)
:
M = RandomReal[{-1,1}, {5000, 5000}];
Теперь мы можем проверить время вычислений без поддержки GPU.
In[4]:= AbsoluteTiming[ Dot[M,M]; ]
Out[4]= {26.3780000, Null}
и с поддержкой графического процессора
In[5]:= AbsoluteTiming[ CUDADot[M, M]; ]
Out[5]= {6.6090000, Null}
В этом случае мы получили ускорение производительности примерно в 4 раза, используя CUDADot вместо Dot.
Изменить
Чтобы добавить пример параллельного ускорения ЦП (на двухъядерной машине), я выбираю все простые числа в диапазоне [2^300, 2^300 +10^6]
. Сначала без распараллеливания:
In[139]:= AbsoluteTiming[ Select[ Range[ 2^300, 2^300 + 10^6], PrimeQ ]; ]
Out[139]= {121.0860000, Null}
при использовании Parallelize[expr]
, который оценивает expr с использованием автоматического распараллеливания
In[141]:= AbsoluteTiming[ Parallelize[ Select[ Range[ 2^300, 2^300 + 10^6], PrimeQ ] ]; ]
Out[141]= {63.8650000, Null}
Как и следовало ожидать, мы получили оценку почти в два раза быстрее.
person
Artes
schedule
26.12.2011
PerformanceGoal->"Speed"
иMaxPlotPoints
, и многие другие подобные вещи, поможет. Так что я бы предположил, что более быстрая видеокарта поможет. Что касается других аспектов. , M может использовать GPU с CUDA, я не использую эту часть. - person Nasser   schedule 27.12.2011PerformanceGoal->"Speed"
. DateListPlot работает медленно, потому что функции даты и времени в Mma очень медленные. Я хотел бы увидеть увеличение скорости в 50 раз, чтобы сделать их конкурентоспособными, например. VBA. - person Mike Honeychurch   schedule 27.12.2011