Мне нужна помощь в создании кода cuda для продукта kronecker. Кто-нибудь может помочь?
может ли кто-нибудь преобразовать этот код c в cuda??
// C code to find the Kronecker Product of two // matrices and stores it as matrix C #include <stdio.h> // rowa and cola are no of rows and columns // of matrix A // rowb and colb are no of rows and columns // of matrix B const int cola = 2, rowa = 3, colb = 3, rowb = 2; // Function to computes the Kronecker Product // of two matrices void Kroneckerproduct(int A[][cola], int B[][colb]) { int C[rowa * rowb][cola * colb]; // i loops till rowa for (int i = 0; i < rowa; i++) { // k loops till rowb for (int k = 0; k < rowb; k++) { // j loops till cola for (int j = 0; j < cola; j++) { // l loops till colb for (int l = 0; l < colb; l++) { // Each element of matrix A is // multiplied by whole Matrix B // resp and stored as Matrix C C[i + l + 1][j + k + 1] = A[i][j] * B[k][l]; printf("%d\t", C[i + l + 1][j + k + 1]); } } printf("\n"); } } } // Driver Code int main() { int A[3][2] = { { 1, 2 }, { 3, 4 }, { 1, 0 } }, B[2][3] = { { 0, 5, 2 }, { 6, 7, 3 } }; Kroneckerproduct(A, B); return 0; }
Что я уже пробовал:
Я пытался в течение нескольких дней, но всегда есть некоторые ошибки и предупреждения. какая-то ошибка MSB3721 всегда есть
Richard MacCutchan
Пока вы не покажете нам предупреждения, мы не сможем догадаться, в чем проблема.
Stefan_Lang
Шаг 1: Избавьтесь от операторов printf!
Шаг 2: посмотрите документацию на наличие ошибок, которые вы получаете, и проверьте код в указанной позиции
Шаг 3: покажите код, который вызывает ошибку. Никто не сможет объяснить вам, что вы сделали не так, если вы не покажете нам, что вы сделали в первую очередь.
Вот и все:
Я не вижу смысла преобразовывать это в CUDA или любой другой вид параллельного кода: усилия по синхронизации съедят тривиальное количество времени обработки, которое вы сэкономите для вычислений. Распараллеливание имеет смысл только тогда, когда у вас есть значительный объем обработки между событиями синхронизации.
Rick York
Попробуйте поискать в интернете. Есть большая вероятность, что кто-то уже сделал это. Я сделал быстрый поиск, и несколько вещей выскочили.
Kornfeld Eliyahu Peter
Все MSB3721 означает, что ваш компилятор nvcc потерпел неудачу, но фактические детали скрыты в вашем окне вывода... Однако очень возможно, что без увеличения многословия ВС его вообще не покажут... Так что сделайте это и перекомпилируйте...
Ошибка непосредственно перед MSB3721 даст вам подсказку - погуглите ее...