SQL Server 2008,数字库,c ++,LAPACK,内存问题
SQL Server 2008, numeric library, c++, LAPACK, memory question
我正在尝试发送一个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
(通过 Visual Studio 2008 中的 c++),或者将所有表存储在 RAM 中,LAPACK 读取内存或指向内存的指针,但不写入文件并读取它
您能否建议如何将这样的表(可能是表在内存中的位置或类似的东西)传递给 LAPACK?
(所以我能够通过Visual Studio 2008 c ++项目使用存储在SQL Server中的表的LAPACK进行一些计算)
----编辑---
@MarkD,正如您在 anwer 中所说,您能否举一个使用 std::vector 类计算 SVD 的示例,其中包含示例中的想法?
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::vector,因为该标准确保向量使用连续的内存存储。 LAPACK 例程还需要您传递给它的矩阵/向量的大小/维度(因此您需要为函数调用计算/指定这些值)。
如果您可以发布要使用的特定 LAPACK 例程,我可以给出一个更全面的例子。
- 将字符串存储在c++中的稳定内存中
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- Win32编译器选项和内存分配
- 当vector是tje全局变量时,c++中vector的内存管理
- 带内存和隔离功能的SQLite
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 迭代时从向量和内存中删除对象
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 为什么示例代码访问IUnknown中已删除的内存
- 如何在C++类内存结构中创建"spacer"?
- 从构造函数抛出异常时如何克服内存泄漏
- malloc() 可能出现内存泄漏
- 如何理解将半精度指针转换为无符号长指针和相关的内存对齐
- 在调用FreeLibrary后,释放动态链接到具有相同版本的CRT堆的DLL的内存
- 如何针对特定情况调试和修复此双自由内存损坏问题
- 类型总是使用其大小存储在内存中吗
- 有没有一种方法可以测量c++程序的运行时内存使用情况
- SQL Server 2008,数字库,c ++,LAPACK,内存问题