通过安装 intel parallel X studio 使用 Cilk 库
using Cilk libarry by installing intel parallel X studio
我安装了 Intel studio 并且我有 Visual studio 2013,我想写一个使用线程的程序。我想通过 Intel 编译它,我做了这些步骤:
- 我创建了一个空项目
- 我右键单击 cpp 源并选择使用英特尔编译器,然后我 select 使用英特尔 c++ 为 selected 文件,在选择所有配置后,我单击确定按钮。
- 然后我右键单击该项目,然后从英特尔编译器项目中选择使用英特尔 C++。
- 为了确保我去 属性 管理器并检查配置管理器,平台必须是 X64。更进一步,我在 c/c++ ,优化 [Intel c++] 或通用 [Intel c++] 中看到。
所以我认为所有设置都已完成 correctly.but 当我使用 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但是问题并没有解决。
有人能告诉我这是什么问题吗?
对于 __imp_timeGetTime
函数,引用自 ...cilk_for
... 您需要 link winmm.lib
(参见 https://www.gamedev.net/topic/109957-unresolved-external-symbol-__imp__timegettime0/ or https://groups.google.com/forum/#!topic/v8-users/WsJYEcp_siY)
我安装了 Intel studio 并且我有 Visual studio 2013,我想写一个使用线程的程序。我想通过 Intel 编译它,我做了这些步骤:
- 我创建了一个空项目
- 我右键单击 cpp 源并选择使用英特尔编译器,然后我 select 使用英特尔 c++ 为 selected 文件,在选择所有配置后,我单击确定按钮。
- 然后我右键单击该项目,然后从英特尔编译器项目中选择使用英特尔 C++。
- 为了确保我去 属性 管理器并检查配置管理器,平台必须是 X64。更进一步,我在 c/c++ ,优化 [Intel c++] 或通用 [Intel c++] 中看到。
所以我认为所有设置都已完成 correctly.but 当我使用 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但是问题并没有解决。
有人能告诉我这是什么问题吗?
对于 __imp_timeGetTime
函数,引用自 ...cilk_for
... 您需要 link winmm.lib
(参见 https://www.gamedev.net/topic/109957-unresolved-external-symbol-__imp__timegettime0/ or https://groups.google.com/forum/#!topic/v8-users/WsJYEcp_siY)