Сегодня я обнаружил, что это в файле примера, предоставленного мне компанией:
void mySgemm( int m, int n, int k, float alpha, float beta, float a[m][n], float b[n][k], float c[m][k], int accelerate )
Вызывается с:
a_cpu = malloc(..);
b_cpu = malloc(..);
c_cpu = malloc(..);
mySgemm(m, n, k, a, b, a_cpu, b_cpu, c_cpu, true);
Я не могу скомпилировать свой собственный подобный пример, честно говоря, я никогда даже не видел, чтобы кто-то брал динамический массив и формировал его таковым, используя параметры самой функции.
Это законный звонок?
Что меня поражает, так это то, что в mySgemm
функция они получают доступ a
,b
,c
как двойные массивы, так что массив по существу изменяется !?
нет, это не действительно c ++.
я предполагаю, что формальные объявления аргументов будут передаваться в c99 как вариативные массивы, но я не настолько уверен, что фактические аргументы для них будут приняты
Других решений пока нет …