通过安装 intel parallel X studio 使用 Cilk 库

Posted

技术标签:

【中文标题】通过安装 intel parallel X studio 使用 Cilk 库【英文标题】:using Cilk libarry by installing intel parallel X studio 【发布时间】:2015-05-22 08:30:28 【问题描述】:

我安装了 Intel Studio 和 Visual Studio 2013,我想编写一个使用线程的程序。我想通过 Intel 编译它,我做了这些步骤:

    我创建了一个空项目 我右键单击 cpp 源并选择 using Intel compiler 然后选择 using intel c++ for selected file 并在选择 All configuration 后单击 On Ok 按钮。 然后我右键单击项目并从英特尔编译器项中选择使用英特尔 c++。 为了确保我去属性管理器并检查配置管理器,平台必须是 X64。更多,我在 c/c++ ,优化[Intel c++] 或通用[Intel c++] 中看到。

所以我认为所有设置都正确完成。但是当我使用 Cilk/cilk.h 编写代码时出现这些错误

这是代码

#include <stdio.h>
#include <windows.h>
#include <mmsystem.h>
#include <math.h>
#include <cilk/cilk.h>

using namespace std;

const long int VERYBIG = 100000;
// ***********************************************************************
int main(void)

    int i;
    long int j, k, sum;
    double sumx, sumy, total;
    DWORD starttime, elapsedtime;
    // -----------------------------------------------------------------------
    // Output a start message
    printf("****************None Parallel Timings for %d iterations\n\n", VERYBIG);
    // repeat experiment several times
    //  int i = 0;
    cilk_for(int i = 0; i < 6; i++)
    
        // get
        starttime = timeGetTime();
        // reset check sum & running total
        sum = 0;
        total = 0.0;
        // Work Loop, do some work by looping VERYBIG times
        cilk_for(int j = 0; j<VERYBIG; j++)
        
            // increment check sum
            sum += 1;
            // Calculate first arithmetic series
            sumx = 0.0;
            for (k = 0; k<j; k++)
                sumx = sumx + (double)k;
            // Calculate second arithmetic series
            sumy = 0.0;
            for (k = j; k>0; k--)
                sumy = sumy + (double)k;
            if (sumx > 0.0)total = total + 1.0 / sqrt(sumx);
            if (sumy > 0.0)total = total + 1.0 / sqrt(sumy);
        
        // get ending time and use it to determine elapsed time
        elapsedtime = timeGetTime() - starttime;
        // report elapsed time
        printf("Time Elapsed % 10d mSecs Total = %lf Check Sum = %ld\n",
            (int)elapsedtime, total, sum);
    
    // return integer as required by function header
    return 0;

// **********************************************************************

我应该说我尝试使用 _Cilk_for 而不是 cilk_for 但问题没有解决。

谁能告诉我这是什么问题?

【问题讨论】:

【参考方案1】:

对于从 ...cilk_for... 引用的 __imp_timeGetTime 函数,您需要链接 winmm.lib(参见例如 https://www.gamedev.net/topic/109957-unresolved-external-symbol-__imp__timegettime0/ 或 https://groups.google.com/forum/#!topic/v8-users/WsJYEcp_siY)

【讨论】:

是的,我必须添加那个库,它是我忘记添加的新项目,但问题与 winmm 无关,lib 它的使用时间 您显示的问题(链接器错误)有关 winmm.lib。而且我没有看到您的问题中描述的任何其他问题...? so is not " cilk_for is undefined "错误? 没有; ...cilk_for... 只是引用__imp_timeGetTime 函数的地方。

以上是关于通过安装 intel parallel X studio 使用 Cilk 库的主要内容,如果未能解决你的问题,请参考以下文章

win10的intel parallel studio命令行在哪里找?

使用 Cygwin 和 Intel Parallel Studio 编译 IPOPT

Intel parallel studio 2017 集成在visual studio 2013 中,现在如何集成到visual studio 2015

如何让 Visual Studio 中的 Intel Parallel 运行 .f77、.f9​​5 等?

Tools/ICCIntel编译器下载安装(亲测有效)

如何针对 Intel Python 3.6.x(64 位)正确安装 PyQt5 模块?