我正在使用CUDA,C++,C#和Java进行一些基准测试,并使用MATLAB进行验证和矩阵生成.但是当我乘以MATLAB时,2048x2048甚至更大的矩阵几乎立即成倍增加.
1024x1024 2048x2048 4096x4096
--------- --------- ---------
CUDA C (ms) 43.11 391.05 3407.99
C++ (ms) 6137.10 64369.29 551390.93
C# (ms) 10509.00 300684.00 2527250.00
Java (ms) 9149.90 92562.28 838357.94
MATLAB (ms) 75.01 423.10 3133.90
Run Code Online (Sandbox Code Playgroud)
只有CUDA具有竞争力,但我认为至少C++会有点接近并且不会60x慢.
所以我的问题是 - MATLAB如何快速地完成它?
C++代码:
float temp = 0;
timer.start();
for(int j = 0; j < rozmer; j++)
{
for (int k = 0; k < rozmer; k++)
{
temp = 0;
for (int m = 0; m < rozmer; m++)
{
temp …Run Code Online (Sandbox Code Playgroud) 给出两组 - d维点.如何在Matlab中最有效地计算成对平方欧氏距离矩阵?
符号:
集合1由(numA,d)-matrix 给出A,集合2由(numB,d)-matrix 给出B.得到的距离矩阵应为格式(numA,numB).
示例点:
d = 4; % dimension
numA = 100; % number of set 1 points
numB = 200; % number of set 2 points
A = rand(numA,d); % set 1 given as matrix A
B = rand(numB,d); % set 2 given as matrix B
Run Code Online (Sandbox Code Playgroud) 我有一个w包含n元素的向量.我不n提前知道.
我想生成一个n三维网格g,其值范围从grid_min到grid_max,并获得了"逐个维度的"产品w和g.
我怎么能这样做n呢?
为简单起见,让我们说grid_min = 0和grid_max = 5.
案件: n=1
>> w = [0.75];
>> g = 0:5
ans =
0 1 2 3 4 5
>> w * g
ans =
0 0.7500 1.5000 2.2500 3.0000 3.7500
Run Code Online (Sandbox Code Playgroud)
案件: n=2
>> w = [0.1, 0.2];
>> [g1, g2] = meshgrid(0:5, 0:5)
g1 =
0 …Run Code Online (Sandbox Code Playgroud) 我有一个名为的数组skj.skj包含200万行数字(2000000x1 uint32).
我想计算以下内容
string_skj = num2str(skj);
Run Code Online (Sandbox Code Playgroud)
当我运行上述行时大约需要1分钟,是否有更快的方法呢?