MKL示例代码可以使用cmake正常编译,但是在运行时崩溃

乔希·瓦萨尔(Joshi Vatsal)

我正在尝试从MKL网站运行以下示例。

#include <stdio.h>
#include "mkl_vsl.h"
 
int main()
{
   double r[1000]; /* buffer for random numbers */
   double s; /* average */
   VSLStreamStatePtr stream;
   int i, j;
    
   /* Initializing */        
   s = 0.0;
   vslNewStream( &stream, VSL_BRNG_MT19937, 777 );
    
   /* Generating */        
   for ( i=0; i<10; i++ ) {
      vdRngGaussian( VSL_RNG_METHOD_GAUSSIAN_ICDF, stream, 1000, r, 5.0, 2.0 );
      for ( j=0; j<1000; j++ ) {
         s += r[j];
      }
   }
   s /= 10000.0;
    
   /* Deleting the stream */        
   vslDeleteStream( &stream );
    
   /* Printing results */        
   printf( "Sample mean of normal distribution = %f\n", s );
    
   return 0;
}

我正在使用以下CMakeLists.txt文件来编译代码。

cmake_minimum_required(VERSION 3.0.0)
project(rndGen VERSION 0.1.0)

add_executable(rndGen rndGenTest.cpp)

set(CMAKE_VERBOSE_MAKEFILE ON)
set(MKLROOT "C:/Program\ Files\ (x86)/Intel/oneAPI/mkl/latest")
set(MKLLIB "${MKLROOT}/lib/intel64")

target_include_directories(rndGen
PUBLIC ${MKLROOT}/include
)

target_link_libraries(rndGen
PUBLIC ${MKLLIB}/mkl_intel_ilp64.lib
PUBLIC ${MKLLIB}/mkl_intel_thread.lib
PUBLIC ${MKLLIB}/mkl_core.lib
PUBLIC "C:/Program\ Files\ (x86)/Intel/oneAPI/compiler/latest/windows/compiler/lib/intel64_win/libiomp5md.lib"
)

set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
include(CPack)

如标题中所述,代码崩溃。VSCode的调试器输出如下:

-------------------------------------------------------------------
You may only use the C/C++ Extension for Visual Studio Code
with Visual Studio Code, Visual Studio or Visual Studio for Mac
software to help you develop and test your applications.
-------------------------------------------------------------------
Loaded 'C:\mklTest\build\Debug\rndGen.exe'. Symbols loaded.
Loaded 'C:\Windows\System32\ntdll.dll'. 
Loaded 'C:\Windows\System32\kernel32.dll'. 
Loaded 'C:\Windows\System32\KernelBase.dll'. 
Loaded 'C:\Windows\System32\vcruntime140d.dll'. 
Loaded 'C:\Windows\System32\ucrtbased.dll'. 
The program '[16972] rndGen.exe' has exited with code -1073741515 (0xc0000135).

但是,使用以下命令在cmd中手动编译时,代码运行良好。

cl /EHsc rndGenTest.cpp -I "C:\Program Files (x86)\Intel\oneAPI\mkl\latest\include" "C:\Program Files (x86)\Intel\oneAPI\mkl\2021.1.1\lib\intel64\mkl_intel_ilp64.lib" "C:\Program Files (x86)\Intel\oneAPI\mkl\2021.1.1\lib\intel64\mkl_intel_thread.lib" "C:\Program Files (x86)\Intel\oneAPI\mkl\2021.1.1\lib\intel64\mkl_core.lib" "C:\Program Files (x86)\Intel\oneAPI\compiler\latest\windows\compiler\lib\intel64_win\libiomp5md.lib"

代码的输出是

Sample mean of normal distribution = 4.985218

我很确定我在CMakeLists.txt文件中丢失了某些内容。有人可以指出我正确的方向吗?提前致谢。

编辑

感谢您的评论和回答。我尝试了所有这些,但没有一个起作用。我试图更深入地挖掘以找出问题的确切原因。显然,代码可以通过两种方式很好地进行编译。但是,如果直接执行exe文件(直接在cmd中执行),则不起作用。如果我先打开oneAPI命令提示符,然后运行exe,它就可以正常工作。我的猜测是,有一些环境变量或运行时库对exe不可用。如果是这样,我应该更改些什么,以便该exe可以独立运行(而不需要运行oneAPI命令提示符)?

根纳季

在这种情况下,您可以尝试将测试与顺序mkl的库(mkl_sequential.lib而不是mkl_intel_thread.lib)重新链接,并尝试直接在cmd中执行。或者只是将libiomp5md.dll放入exe文件目录。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++代码编译没有错误,但是在运行时给出了“分段错误”

来自分类Dev

MySQL查询可以在命令行中正常运行,但是在php中运行时却报错

来自分类Dev

在运行时获取InputMismatchException,但可以正常编译

来自分类Dev

CUDA 5.5示例在OS X 10.9上可以正常编译,但运行时会立即出错

来自分类Dev

在运行时编译渲染脚本代码

来自分类Dev

flask_mail似乎是在pythonanywhere中导入的,但是在运行时会得到错误代码:无模块命名

来自分类Dev

是否可以使用在运行时生成的数据执行自动化测试?

来自分类Dev

如何在运行时编译和使用Kotlin代码?

来自分类Dev

如何在运行时编译的C#代码中使用“ UnityEngine”?

来自分类Dev

sql server作业失败,但是在手动运行时可以工作

来自分类Dev

使用Dart在运行时/编译时生成类

来自分类Dev

使用Java在运行时读取已编译的信息

来自分类Dev

使用Java在运行时编译jasperreport子报表

来自分类Dev

使用Dart在运行时/编译时生成类

来自分类Dev

WCF服务在iis express下运行时可以完美运行,但是在具有虚拟目录的本地IIS下运行时,相同的服务将无法正常工作

来自分类Dev

递归函数在运行时崩溃

来自分类Dev

枚举,接口和(Java 8)lambda:代码可以编译,但在运行时会失败;这是预期的吗?

来自分类Dev

Verilog代码-可以正常编译,但是模拟无法运行

来自分类Dev

为什么这段代码不能用clang编译,用gcc崩溃,但是用VC ++可以正常运行?

来自分类Dev

为什么在调试时我的代码可以运行,但是在按build&run时却崩溃?

来自分类Dev

Jar 文件不会使用 UTF-8 字符编写电子邮件,但是在 eclipse 中运行时它工作正常

来自分类Dev

在运行时使用继承的代码选择器

来自分类Dev

可以在运行时使用Javascript创建函数吗?

来自分类Dev

是否可以在运行时使用Java实现接口?

来自分类Dev

Cmake:静态链接在运行时需要库(崩溃0xC0000135)

来自分类Dev

为什么Swift中的反向范围会在运行时而不是编译时崩溃

来自分类Dev

有没有一种方法可以使用PostSharp在运行时更改属性?

来自分类Dev

是否可以使用JAVA API在运行时在Elasticsearch中更新索引的设置和映射

来自分类Dev

在运行时在JPA中检索实体表名的代码示例?

Related 相关文章

  1. 1

    C ++代码编译没有错误,但是在运行时给出了“分段错误”

  2. 2

    MySQL查询可以在命令行中正常运行,但是在php中运行时却报错

  3. 3

    在运行时获取InputMismatchException,但可以正常编译

  4. 4

    CUDA 5.5示例在OS X 10.9上可以正常编译,但运行时会立即出错

  5. 5

    在运行时编译渲染脚本代码

  6. 6

    flask_mail似乎是在pythonanywhere中导入的,但是在运行时会得到错误代码:无模块命名

  7. 7

    是否可以使用在运行时生成的数据执行自动化测试?

  8. 8

    如何在运行时编译和使用Kotlin代码?

  9. 9

    如何在运行时编译的C#代码中使用“ UnityEngine”?

  10. 10

    sql server作业失败,但是在手动运行时可以工作

  11. 11

    使用Dart在运行时/编译时生成类

  12. 12

    使用Java在运行时读取已编译的信息

  13. 13

    使用Java在运行时编译jasperreport子报表

  14. 14

    使用Dart在运行时/编译时生成类

  15. 15

    WCF服务在iis express下运行时可以完美运行,但是在具有虚拟目录的本地IIS下运行时,相同的服务将无法正常工作

  16. 16

    递归函数在运行时崩溃

  17. 17

    枚举,接口和(Java 8)lambda:代码可以编译,但在运行时会失败;这是预期的吗?

  18. 18

    Verilog代码-可以正常编译,但是模拟无法运行

  19. 19

    为什么这段代码不能用clang编译,用gcc崩溃,但是用VC ++可以正常运行?

  20. 20

    为什么在调试时我的代码可以运行,但是在按build&run时却崩溃?

  21. 21

    Jar 文件不会使用 UTF-8 字符编写电子邮件,但是在 eclipse 中运行时它工作正常

  22. 22

    在运行时使用继承的代码选择器

  23. 23

    可以在运行时使用Javascript创建函数吗?

  24. 24

    是否可以在运行时使用Java实现接口?

  25. 25

    Cmake:静态链接在运行时需要库(崩溃0xC0000135)

  26. 26

    为什么Swift中的反向范围会在运行时而不是编译时崩溃

  27. 27

    有没有一种方法可以使用PostSharp在运行时更改属性?

  28. 28

    是否可以使用JAVA API在运行时在Elasticsearch中更新索引的设置和映射

  29. 29

    在运行时在JPA中检索实体表名的代码示例?

热门标签

归档