2011-05-20 22 views
1

我嘗試發送號碼錶SQL Server 2008這樣的:通過Visual Studio 2008的SQL Server 2008中,數字圖書館,C++,LAPACK,內存問題

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 

(在C++項目)的數學庫LAPACK

是否有可能pass the table in SQL Server to LAPACK(通過C++ 2008年的Visual Studio)像內存指針,或存儲中的所有表RAM,以及LAPACK讀取內存或內存指針,但沒有寫入文件並閱讀它

你能否建議如何傳遞這樣的表(也許內存中的表的位置,或類似的東西)到LAPACK?
(所以我能夠做一些計算通過Visual Studio 2008的C++項目存儲在SQL Server表的LAPACK)

----編輯---

@MarkD,正如你在你的awer中說,你可以舉個例子,用例子中的想法來計算SVD,使用std :: vector類 ?

回答

2

LAPACK要求發送給它的數據是FORTRAN樣式(列順序)數組。您將無法將數據直接從SQL傳遞到LAPACK,但需要將數據讀取到按列排序的連續內存數組中,並將數組的第一個元素的指針傳遞給感興趣的LAPACK例程。

有許多C/C++的LAPACK包裝,這使得這更容易。

編輯:剛纔看到你正在尋找如何傳遞這樣一個數組。正如我所提到的,這裏有很多包裝器(只需要搜索C/C++ LAPACK)。創建數組的簡單方法是使用std :: vector類。然後,您將逐列讀取數據,並將這些元素添加到您的矢量中 - 所以,如果您想要列出您在示例中顯示的數組,那麼您的矢量最終會看起來像這樣:

//Column 1   Column 2   Column 3   ... last element 
[565 497 467 488 ... 526 491 516 466 ... 472 483 480 547 ... ... 494] 

你會然後傳遞感興趣的LAPACK例程的第一個元素的存儲位置,例如:

&myVector[0] 

這是可能的使用std ::矢量,作爲標準確保了矢量使用連續的存儲器存儲。 LAPACK例程都需要傳遞給它的矩陣/向量的大小/尺寸(所以你需要爲函數調用計算/指定這些值)。

如果您可以發佈您想要使用的特定LAPACK例程,我可以舉一個更徹底的例子。

+0

好吧,我正在尋找,你有沒有特別的使用...這是有趣的你的偉大的答案... – cMinor 2011-05-20 02:51:42

+0

@darkcminor:我是FLENS庫的粉絲,它有一些非常不錯的矩陣/矢量類,並直接與LAPACK接口,雖然取決於問題,但我有時只是推出我自己的並使用clapack接口。 – MarkD 2011-05-20 03:11:45

+0

對於通過C++項目中的Visual Studio與SQL Server的通信,你會使用FLENS,將庫添加到Visual Studio 2008中嗎?我想在表中使用SVD例程... – cMinor 2011-05-20 03:29:53