#c #visual-studio-2008 #sql-server-2008 #memory #lapack
#c #visual-studio-2008 #sql-server-2008 #память #lapack
Вопрос:
Я пытаюсь отправить таблицу чисел в SQL Server 2008
виде:
1att 2att 3att 4att 5att 6att 7att ... attn
--------------------------------------------
565 526 472 527 483 529 476 470 502
497 491 483 488 488 483 496 515 491
467 516 480 477 494 497 478 519 471
488 466 547 498 477 466 475 480 516
543 491 449 485 495 468 452 479 516
473 475 431 474 460 342 471 386 549
489 477 462 428 489 491 481 483 475
485 474 472 452 525 508 459 561 529
473 457 476 498 485 465 540 475 525
455 477 415 434 475 499 476 482 551
463 476 476 471 488 526 394 439 475
479 473 491 519 483 474 476 474 478
455 518 465 445 496 500 518 470 536
557 498 492 449 478 491 492 476 460
484 509 538 473 548 497 551 477 498
471 430 482 437 516 483 487 453 456
505 476 489 495 472 476 487 516 466
466 495 488 475 550 565 510 473 515
470 490 480 475 479 544 468 486 496
484 495 524 435 469 612 493 467 477
....
.... (several more rows)
....
511 471 529 553 539 501 477 474 494
через Visual studio 2008 (в проекте c ) в математическую библиотеку LAPACK
.
Возможно ли pass the table in SQL Server to LAPACK
(через c в Visual Studio 2008) использовать указатель на память или сохранить всю таблицу в оперативной памяти, а LAPACK считывать память или указатель на память, но без записи в файл и его чтения
Не могли бы вы, пожалуйста, подсказать, как передать подобную таблицу (возможно, местоположение таблицы в памяти или что-то подобное) в LAPACK?
(таким образом, я могу выполнить некоторые вычисления с помощью LAPACK таблицы, хранящейся на SQL Server, с помощью Visual studio 2008 c project)
—-РЕДАКТИРОВАТЬ—
@MarkD, как вы сказали в своем ответе, не могли бы вы, пожалуйста, привести пример вычисления SVD с идеей в примере, используя std::vector class ?
Ответ №1:
LAPACK требует, чтобы отправляемые ему данные были в массиве в стиле FORTRAN (в порядке столбцов). Вы не сможете передавать данные непосредственно из SQL в LAPACK, но вам нужно будет прочитать данные в упорядоченный по столбцам непрерывный массив памяти и передать указатель на первый элемент массива в интересующую процедуру LAPACK.
Существует множество оболочек LAPACK для C / C , которые делают это намного проще.
Редактировать: только что увидел, что вы специально ищете, как передать такой массив. Как я упоминал, для этого существует множество оболочек (просто выполните поиск C / C LAPACK). Простой способ создать свой массив — использовать класс std::vector. Затем вы бы прочитали данные по столбцам, добавив элементы в свой вектор — так что, если бы вы хотели упорядочить массив по столбцам, который вы показываете в своем exmaple, ваш вектор в конечном итоге выглядел бы примерно так:
//Column 1 Column 2 Column 3 ... last element
[565 497 467 488 ... 526 491 516 466 ... 472 483 480 547 ... ... 494]
Затем вы должны передать интересующей вас процедуре LAPACK ячейку памяти первого элемента, например:
amp;myVector[0]
Это возможно с использованием std::vector, поскольку стандарт гарантирует, что вектор использует непрерывное хранилище памяти. Для всех подпрограмм LAPACK также требуется размер матрицы / векторов, которые вы ей передаете (поэтому вам нужно будет вычислить / указать эти значения для вызова функции).
Если вы можете опубликовать конкретную процедуру LAPACK, которую хотите использовать, я могу привести более подробный пример.
Комментарии:
1. Хорошо, я ищу, использовали ли вы что-нибудь конкретное… Интересен ваш отличный ответ…
2. @darkcminor: Я фанат библиотеки FLENS, которая имеет несколько довольно приятных матричных / векторных классов и напрямую взаимодействует с LAPACK, хотя, в зависимости от проблемы, я иногда просто создаю свою собственную и использую интерфейс clapack.
3. Для этого взаимодействия с SQL Server через Visual studio в проекте c вы бы использовали FLENS, добавили библиотеку в visual studio 2008?, Я хотел бы использовать процедуру SVD в таблице…
4. @darkcminor: FLENS — это просто библиотека матриц / контейнеров / решателей и не имеет ничего общего с SQL. Вам понадобится какая-нибудь другая библиотека для связи с SQL Server и чтения значений (к сожалению, у меня нет опыта взаимодействия с SQL servers на C , и у меня нет предложений относительно каких-либо библиотек SQL).
5. не могли бы вы привести пример вычисления SVD, как вы сказали в вашем примере?