Почему DolphinDB требует больше времени для умножения матриц FLOAT, чем двойных - PullRequest
1 голос
/ 14 июня 2019

Я написал фрагмент кода DolphinDB, который умножает две матрицы с плавающим типом. И я обнаружил, что умножение dot матриц DOUBLE было немного быстрее, чем умножение матриц FLOAT. Но этого не произошло для других операторов, таких как add и mul. Я хотел бы понять, почему это так.

На моем Ubuntu я проверил время выполнения операторов mul и dot на двух матрицах. Для оператора mul матрицы FLOAT занимают примерно половину времени ДВОЙНЫХ, как и ожидалось. Но для оператора dot матрицы DOUBLE были немного быстрее, чем матрицы FLOAT.

m = float(1..1000000)$1000:1000
n = float(1..1000000)$1000:1000
timer(100) { m.mul(n) }
timer(100) { m.dot(n) }

m = double(1..1000000)$1000:1000
n = double(1..1000000)$1000:1000
timer(100) { m.mul(n) }
timer(100) { m.dot(n) }

И то, что я получил, было:

Время истекло: 43,722 мс

прошедшее время: 3430,887 мс

Истекшее время: 83,137 мс

Истекшее время: 3289,049 мс

...