ฉันกำลังทำการเปรียบเทียบการคูณเมทริกซ์ตามที่กล่าวไว้ก่อนหน้านี้ใน เหตุใด MATLAB จึงเร็วมากในการคูณเมทริกซ์
ตอนนี้ฉันมีปัญหาอื่นเมื่อคูณสองเมทริกซ์ 2048x2048 มีความแตกต่างอย่างมากระหว่าง C # และอื่น ๆ เมื่อฉันลองคูณเมทริกซ์ 2047x2047 เท่านั้นดูเหมือนจะปกติ เพิ่มคนอื่น ๆ เพื่อเปรียบเทียบด้วย
1024x1024 - 10 วินาที
1027x1027 - 10 วินาที
2047x2047 - 90 วินาที
2048x2048 - 300 วินาที
2049x2049 - 91 วินาที (update)
2500x2500 - 166 วินาที
นั่นคือความแตกต่างสามนาทีครึ่งสำหรับเคส 2k คูณ 2k
ใช้อาร์เรย์ 2dim
//Array init like this
int rozmer = 2048;
float[,] matice = new float[rozmer, rozmer];
//Main multiply code
for(int j = 0; j < rozmer; j++)
{
for (int k = 0; k < rozmer; k++)
{
float temp = 0;
for (int m = 0; m < rozmer; m++)
{
temp = temp + matice1[j,m] * matice2[m,k];
}
matice3[j, k] = temp;
}
}