<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Development advised that with in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/Declaring-an-array-as-Cilk-shared/m-p/981183#M26151</link>
    <description>&lt;P&gt;Development&amp;nbsp;advised that&amp;nbsp;with your&amp;nbsp;original declaration "&lt;EM&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; was a shared pointer to non-shared data&lt;/EM&gt;"&amp;nbsp;and that you may need to declare &lt;STRONG&gt;data&lt;/STRONG&gt; as I indicated earlier or possibly as:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;_Cilk_shared double * _Cilk_shared data;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;/STRONG&gt;(i.e. make both the pointer and what it is pointing to as shared)&lt;/P&gt;
&lt;P&gt;We would know better about the warning having the complete reproducer.&lt;/P&gt;</description>
    <pubDate>Tue, 12 Nov 2013 17:40:00 GMT</pubDate>
    <dc:creator>Kevin_D_Intel</dc:creator>
    <dc:date>2013-11-12T17:40:00Z</dc:date>
    <item>
      <title>Declaring an array as _Cilk_shared</title>
      <link>https://community.intel.com/t5/Software-Archive/Declaring-an-array-as-Cilk-shared/m-p/981181#M26149</link>
      <description>&lt;P&gt;Hi, when I try to compile the below code I get a warning that data is not a pointer to shared data how do I declare data such that it is shared and these warnings do not appear during compilation.&lt;/P&gt;
&lt;P&gt;Here is the code:&lt;/P&gt;
&lt;P&gt;[cpp]&lt;/P&gt;
&lt;P&gt;#include "myFunc.h"&lt;BR /&gt;#include "myGauss.h"&lt;BR /&gt;#include "myExp.h"&lt;BR /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;BR /&gt;#include &amp;lt;math.h&amp;gt;&lt;BR /&gt;#include &amp;lt;omp.h&amp;gt;&lt;BR /&gt;#include &amp;lt;time.h&amp;gt;&lt;BR /&gt;#include &amp;lt;limits.h&amp;gt;&lt;BR /&gt;#include &amp;lt;float.h&amp;gt;&lt;BR /&gt;#include &amp;lt;cilk/cilk.h&amp;gt;&lt;BR /&gt;#include &amp;lt;offload.h&amp;gt;&lt;BR /&gt;&lt;BR /&gt;_Cilk_shared myGauss gauss;&lt;BR /&gt;_Cilk_shared int length = 1000000;&lt;BR /&gt;double * _Cilk_shared data;&lt;BR /&gt;_Cilk_shared int threads;&lt;BR /&gt;&lt;BR /&gt;int main(){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; double sigma = 0.783;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int scanNumber = 1000;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data = (double * _Cilk_shared) _Offload_shared_malloc(sizeof(double)*length);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // funcp = (_Cilk_shared myFunc *) new myGauss(sigma);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gauss = myGauss(sigma);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // funcp-&amp;gt;generateData(length,data);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _Cilk_offload gauss.generateData(length,data);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Finished generating data\n");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; double * NLLS = (double *&amp;nbsp; ) malloc(sizeof(double)*scanNumber);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FILE * output = fopen("offloaded.dat","w");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(threads=244; threads&amp;lt;250; threads+=10){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double time = omp_get_wtime();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0 ; i&amp;lt;scanNumber; i++){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double sigmaGuess = i*0.001+0.001;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // funcp-&amp;gt;setParameter(sigmaGuess);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gauss.setParameter(sigmaGuess);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Calculating the negative loglikeliHood&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NLLS&lt;I&gt; = _Cilk_offload gauss.evaluate(data,length,threads);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //NLLS&lt;I&gt;=&amp;nbsp; funcp-&amp;gt;evaluate(data,length);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // printf("%d %% done \n",i);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Finding the minimum on the host&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int minIndex = INT_MAX;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double minValue = DBL_MAX;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0; i&amp;lt;scanNumber; i++){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(NLLS&lt;I&gt;&amp;lt;minValue){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minValue = NLLS&lt;I&gt;;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; minIndex = i;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double minSig = minIndex*0.001+0.001;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; time = omp_get_wtime()-time;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("Sigma val %f\n",minSig);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fprintf(output,"%d %f\n",threads,time);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; fclose(output);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return 0;&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;[/cpp]&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Here are the warnings I get on compilation:&lt;/P&gt;
&lt;P&gt;[plain]&lt;/P&gt;
&lt;P&gt;main.cpp(26): warning #2707: pointer argument in _Cilk_offload function call is not pointer-to-shared&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _Cilk_offload gauss.generateData(length,data);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;main.cpp(37): warning #2707: pointer argument in _Cilk_offload function call is not pointer-to-shared&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NLLS&lt;I&gt; = _Cilk_offload gauss.evaluate(data,length,threads);&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;[/plain]&lt;/P&gt;</description>
      <pubDate>Tue, 12 Nov 2013 13:25:02 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Declaring-an-array-as-Cilk-shared/m-p/981181#M26149</guid>
      <dc:creator>Mark_S_7</dc:creator>
      <dc:date>2013-11-12T13:25:02Z</dc:date>
    </item>
    <item>
      <title>There have been a couple of</title>
      <link>https://community.intel.com/t5/Software-Archive/Declaring-an-array-as-Cilk-shared/m-p/981182#M26150</link>
      <description>&lt;P&gt;There have been a couple of erroneous cases of this warning in the past. I need to check about your case.&lt;/P&gt;
&lt;P&gt;Is it possible to get complete compile-able test case?&amp;nbsp; We need insight into mygauss.h and perhaps myFunc.h, myExp.h also.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;You may need to declare data as:&amp;nbsp;&amp;nbsp;&lt;STRONG&gt;_Cilk_shared double * data;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;For pointer to shared double if that is the interest and adjust the _Offload_shared_malloc() call too.&lt;/P&gt;
&lt;P&gt;I'll post again soon.&lt;/P&gt;</description>
      <pubDate>Tue, 12 Nov 2013 17:20:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Declaring-an-array-as-Cilk-shared/m-p/981182#M26150</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2013-11-12T17:20:20Z</dc:date>
    </item>
    <item>
      <title>Development advised that with</title>
      <link>https://community.intel.com/t5/Software-Archive/Declaring-an-array-as-Cilk-shared/m-p/981183#M26151</link>
      <description>&lt;P&gt;Development&amp;nbsp;advised that&amp;nbsp;with your&amp;nbsp;original declaration "&lt;EM&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; was a shared pointer to non-shared data&lt;/EM&gt;"&amp;nbsp;and that you may need to declare &lt;STRONG&gt;data&lt;/STRONG&gt; as I indicated earlier or possibly as:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;_Cilk_shared double * _Cilk_shared data;&amp;nbsp;&amp;nbsp;&amp;nbsp; // &lt;/STRONG&gt;(i.e. make both the pointer and what it is pointing to as shared)&lt;/P&gt;
&lt;P&gt;We would know better about the warning having the complete reproducer.&lt;/P&gt;</description>
      <pubDate>Tue, 12 Nov 2013 17:40:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Declaring-an-array-as-Cilk-shared/m-p/981183#M26151</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2013-11-12T17:40:00Z</dc:date>
    </item>
    <item>
      <title>Here are the rest of the</title>
      <link>https://community.intel.com/t5/Software-Archive/Declaring-an-array-as-Cilk-shared/m-p/981184#M26152</link>
      <description>&lt;P&gt;Here are the rest of the source files&lt;/P&gt;
&lt;P&gt;myFunc.h&lt;/P&gt;
&lt;P&gt;[cpp]&lt;/P&gt;
&lt;P&gt;#include &amp;lt;cilk/cilk.h&amp;gt;&lt;BR /&gt;#ifndef MYFUNC_H&lt;BR /&gt;#define MYFUNC_H&lt;BR /&gt;#pragma offload_attribute(push,_Cilk_shared)&lt;BR /&gt;class&amp;nbsp;&amp;nbsp; myFunc{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected: &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double paramValue;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myFunc() {paramValue = 1; };&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myFunc(double param){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; paramValue = param;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~myFunc(){};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual void&amp;nbsp; generateData(int outputLength,double * p)=0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual double&amp;nbsp; evaluate(double *&amp;nbsp; dataSet, int dataLength, int threads)=0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual void setParameter(double para){paramValue = para;};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual double getParameter(){return paramValue;};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual double normValue()=0;&lt;BR /&gt;};&lt;BR /&gt;#pragma offload_attribute(pop)&lt;BR /&gt;#endif&lt;/P&gt;
&lt;P&gt;[/cpp]&lt;/P&gt;
&lt;P&gt;myGauss.h&lt;/P&gt;
&lt;P&gt;#include &amp;lt;cilk/cilk.h&amp;gt;&lt;BR /&gt;#ifndef MYFUNC_H&lt;BR /&gt;#define MYFUNC_H&lt;BR /&gt;#pragma offload_attribute(push,_Cilk_shared)&lt;BR /&gt;class&amp;nbsp;&amp;nbsp; myFunc{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; protected: &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double paramValue;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myFunc() {paramValue = 1; };&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myFunc(double param){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; paramValue = param;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~myFunc(){};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual void&amp;nbsp; generateData(int outputLength,double * p)=0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual double&amp;nbsp; evaluate(double *&amp;nbsp; dataSet, int dataLength, int threads)=0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual void setParameter(double para){paramValue = para;};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual double getParameter(){return paramValue;};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtual double normValue()=0;&lt;BR /&gt;};&lt;BR /&gt;#pragma offload_attribute(pop)&lt;BR /&gt;#endif&lt;BR /&gt;[cpp]&lt;BR /&gt;#include "myFunc.h"&lt;BR /&gt;#include &amp;lt;cilk/cilk.h&amp;gt;&lt;BR /&gt;#ifndef MYGAUSS_H&lt;BR /&gt;#define MYGAUSS_H&lt;BR /&gt;#pragma offload_attribute(push,_Cilk_shared)&lt;BR /&gt;class myGauss: public myFunc {&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double oneOverTwoSigSq;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double sqrtTwoPi;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myGauss(double sigma);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; myGauss();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ~myGauss();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double getParameter();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void&amp;nbsp; setParameter(double newSigma);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; void generateData(int outputLength , double * p);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double evaluate(double xValue);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double evaluate(double * dataSet, int dataLength, int threads);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double normValue();&lt;BR /&gt;&lt;BR /&gt;};&lt;BR /&gt;#pragma offload_attribute(pop)&lt;BR /&gt;#endif&lt;/P&gt;
&lt;P&gt;[/cpp]&lt;/P&gt;
&lt;P&gt;myGauss.cpp&lt;/P&gt;
&lt;P&gt;[cpp]&lt;/P&gt;
&lt;P&gt;#include "myGauss.h"&lt;BR /&gt;#include &amp;lt;math.h&amp;gt;&lt;BR /&gt;#include &amp;lt;omp.h&amp;gt;&lt;BR /&gt;#include &amp;lt;time.h&amp;gt;&lt;BR /&gt;#include &amp;lt;stdio.h&amp;gt;&lt;BR /&gt;&lt;BR /&gt;#define PI 3.141592653589793238462&lt;BR /&gt;myGauss::myGauss(double paramValueVal){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; paramValue = paramValueVal;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oneOverTwoSigSq = 1.0/(2*paramValue*paramValue);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sqrtTwoPi = sqrt(2*PI);&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;myGauss::myGauss(){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; paramValue = 1.0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oneOverTwoSigSq = 1.0/(2*paramValue*paramValue);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sqrtTwoPi = sqrt(2*PI);&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;myGauss::~myGauss(){&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;double myGauss::getParameter(){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return paramValue;&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;void myGauss::setParameter(double newSigma){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; paramValue = newSigma;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; oneOverTwoSigSq = 1.0/(2*paramValue*paramValue);&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;double myGauss::evaluate(double value){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return exp(-value*value*oneOverTwoSigSq);&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;double myGauss::evaluate(double * dataSet, int dataLength, int threads ){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; double NLL = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; double norm = 1.0/normValue();&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; omp_set_num_threads(threads);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #pragma omp parallel for default(none) shared(dataSet,dataLength,norm) reduction(+:NLL)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0; i&amp;lt;dataLength; i++){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double evaluated = exp(-dataSet&lt;I&gt;*dataSet&lt;I&gt;*oneOverTwoSigSq);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; evaluated*=norm;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NLL+=log(evaluated);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return&amp;nbsp; -NLL;&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;double myGauss::normValue(){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return paramValue*sqrtTwoPi;&lt;BR /&gt;};&lt;BR /&gt;&lt;BR /&gt;void myGauss::generateData(int length, double *&amp;nbsp; p){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; srand(time(NULL));&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for(int i=0; i&amp;lt;length; i++){&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double rand1 = ((double)rand())/RAND_MAX;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; double rand2 = ((double)rand())/RAND_MAX;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //Now doing the box muller method&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p&lt;I&gt; = sqrt(-2.0*log(rand1))*cos(2*PI*rand2)*paramValue;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;};&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/P&gt;
&lt;P&gt;[/cpp]&lt;/P&gt;
&lt;P&gt;MyExp is a class similar to myGauss, but I'm currently not using it in the main method, so if you remove the include "myExp.h" from the main file then the code should compile fine. When I compile I use.&lt;/P&gt;
&lt;P&gt;[plain]&lt;/P&gt;
&lt;P&gt;icpc -vec-report2 -openmp-report2 -o prog -openmp *.cpp&lt;/P&gt;
&lt;P&gt;[/plain]&lt;/P&gt;</description>
      <pubDate>Tue, 12 Nov 2013 17:54:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Declaring-an-array-as-Cilk-shared/m-p/981184#M26152</guid>
      <dc:creator>Mark_S_7</dc:creator>
      <dc:date>2013-11-12T17:54:07Z</dc:date>
    </item>
  </channel>
</rss>

