Для любого рода технических вычислений вы должны всегда использовать оптимизированные библиотеки, когда они доступны. Существующие библиотеки, используемые сотнями других людей, будут лучше протестированы и лучше оптимизированы, чем все, что вы делаете сами, и время, которое вы не тратите на написание (и отладку и оптимизацию) этих функций, может быть лучше потрачено на работу настоящая проблема высокого уровня, которую вы хотите решить вместо того, чтобы заново открывать вещи, которые уже реализовали другие люди. Это просто основная специализация рабочей силы; Сосредоточьтесь на вычислительной проблеме, которую вы хотите решить, и пусть люди, которые проводят свои дни профессионально, создавая подпрограммы для матриц GPGPU, сделают это за вас.
Только когда вы уверены, что существующие библиотеки не делают то, что вам нужно - возможно, они решают слишком общую проблему или делают определенные предположения, которые не выполняются в вашем случае - если вы выберете свою собственную.
Я согласен с другими, что в данном конкретном случае операция довольно проста и выполнима для DIY; но если вы собираетесь делать что-то еще с этими матрицами, как только добавите их, лучше использовать оптимизированные подпрограммы BLAS для любой платформы, на которой вы работаете.