Community
cancel
Showing results for 
Search instead for 
Did you mean: 
aazue
New Contributor I
147 Views

OpenMP with Icc wrong default parameters or an bug ?

HI

OpenMP with Icc wrong default parameters or an bug ?

Test:

// FOR ICC COMPILER DEPEND #
LANG=C; export LANG
KMP_BLOCKTIME=0;export KMP_BLOCKTIME
LD_LIBRARY_PATH=/opt/intel/Compiler/11.1/059/lib/intel64;export LD_LIBRARY_PATH
./icpc -ansi -fast -static -O2 -axSSSE3 -lpthread -openmp -openmp-lib=compat -march=core2 -mtune=core2 ficat7.cc -o ficat7
// OR FOR BINARY AS SHARED ICC
./icpc -fPIC -ansi -shared-intel -axSSSE3 -Os -fast -openmp -openmp-lib=compat -openmp-report -march=core2 -mtune=core2 -fomit-frame-pointer ficat7.cc -o ficat7

// FOR GNU COMPILER DEPEND #
g++ -ansi -O1 -Wno-write-strings -m64 -lpthread -fopenmp -mtune=core2 -march=core2 -fomit-frame-pointer ficat7.cc -o ficat7
or
g++ -ansi -O3 -Wno-write-strings -ftree-vect-loop-version -m64 -lpthread -fthread-jumps -fopenmp -mtune=core2 -march=core2 -fomit-frame-pointer ficat7.cc -o ficat7
or
g++ -ansi -O3 -mssse3 -Wno-write-strings -m64 -lpthread -fopenmp -mtune=core2 -march=core2 -fomit-frame-pointer ficat7.cc -o ficat7

COMMAND SHELL EXECUTE LINUX GNU COMPILER USED WITH ENABLE #pragma omp parallel for private(v) // FOR ARRAY ALEATORY
time ./ficat7 200 8 > gnutest.txt

real 0m0.888s
user 0m0.696s
sys 0m0.192s

COMMAND SHELL EXECUTE LINUX ICC COMPILER USED WITH ENABLE #pragma omp parallel for private(v) // FOR ARRAY ALEATORY
time ./ficat7 200 8 > icctest.txt

real 0m1.710s
user 0m1.444s
sys 0m0.276s

COMMAND SHELL EXECUTE LINUX GNU COMPILER USED WITH DISABLE //#pragma omp parallel for private(v) // FOR ARRAY ALEATORY
time ./ficat7 200 8 > gnutest
real 0m1.572s
user 0m1.368s
sys 0m0.196s


COMMAND SHELL EXECUTE LINUX ICC COMPILER USED WITH DISABLE //#pragma omp parallel for private(v) // FOR ARRAY ALEATORY
time ./ficat7 200 8 > icctest

real 0m3.511s
user 0m3.212s
sys 0m0.296s


g++ -v
Using built-in specs.
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --with-local-prefix=/usr/local --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,java,ada --enable-checking=release --with-gxx-include-dir=/usr/include/c++/4.3 --enable-ssp --disable-libssp --with-bugurl=http://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --disable-libgcj --with-slibdir=/lib64 --with-system-zlib --enable-__cxa_atexit --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --program-suffix=-4.3 --enable-version-specific-runtime-libs --enable-linux-futex --without-system-libunwind --with-cpu=generic --build=x86_64-suse-linux
Thread model: posix
gcc version 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036] (SUSE Linux)


./icc -V
Intel C Intel 64 Compiler Professional for applications running on Intel 64, Version 11.1 Build 20091012 Package ID: l_cproc_p_11.1.059
Copyright (C) 1985-2009 Intel Corporation. All rights reserved.

Small standard machine used:
cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel Pentium Dual CPU E2160 @ 1.80GHz
stepping : 13
cpu MHz : 1203.000
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 3603.12
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:

processor : 1
vendor_id : GenuineIntel
cpu family : 6
model : 15
model name : Intel Pentium Dual CPU E2160 @ 1.80GHz
stepping : 13
cpu MHz : 1203.000
cache size : 1024 KB
physical id : 0
siblings : 2
core id : 1
cpu cores : 2
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall lm constant_tsc arch_perfmon pebs bts rep_good pni monitor ds_cpl est tm2 ssse3 cx16 xtpr lahf_lm
bogomips : 3599.99
clflush size : 64
cache_alignment : 64
address sizes : 36 bits physical, 48 bits virtual
power management:


Please, it's possible to receive an answer about how to align parameter for resulting same time ICC & GNU.
you can show in file result icc loop level 3 incorrectly thread 0 and showed affinity quantity 2; is wrong parameter default initialized or is an bug ?
with great machine 965 or 8300 quad or other greater # number, more catastrophic difference result ICC.

Remarks:
without pragma (for (aleatory)) improve decreased divide 2
with false thread control improve decreased divide 2
With correctly working improve can be x4 for this function asynchronous programing
files ficat7.cc.txt ,gnutest.txt, icctest.txt added in bottom


Sample:
////////////////////////////////
//FOR BUFFALO COMPILER DEPEND #
///////////////////////////////
//g++ -ansi -O1 -Wno-write-strings -m64 -lpthread -fopenmp -mtune=core2 -march=core2 -fomit-frame-pointer ficat7.cc -o ficat7
//g++ -ansi -O3 -Wno-write-strings -ftree-vect-loop-version -m64 -lpthread -fthread-jumps -fopenmp -mtune=core2 -march=core2 -fomit-frame-pointer ficat7.cc -o ficat7
//g++ -ansi -O3 -mssse3 -Wno-write-strings -m64 -lpthread -fopenmp -mtune=core2 -march=core2 -fomit-frame-pointer ficat7.cc -o ficat7

//////////////////////////////
// FOR INTEL COMPILER DEPEND #
//////////////////////////////
//LANG=C; export LANG
//KMP_BLOCKTIME=0;export KMP_BLOCKTIME
//LD_LIBRARY_PATH=/opt/intel/Compiler/11.1/059/lib/intel64;export LD_LIBRARY_PATH

//./icpc -ansi -fast -static -O2 -axSSSE3 -lpthread -openmp -openmp-lib=compat -march=core2 -mtune=core2 ficat7.cc -o ficat7
//FOR BINARY AS SHARED ICC
//./icpc -fPIC -ansi -shared-intel -axSSSE3 -Os -fast -openmp -openmp-lib=compat -openmp-report -march=core2 -mtune=core2 -fomit-frame-pointer ficat7.cc -o ficat7

// RUN BEFORE SYNC COMMAND SHELL BEFORE START ONE OFF TWO BUILD TYPE TIME COMPARE
// echo 0 > /proc/sys/kernel/sched_compat_yield (IS DEFAULT)
// echo 1 > /proc/sys/kernel/sched_compat_yield (FOR BOOST #)

#include
#include
#include
#include
#include
#include
#include
int
aleat (int u)
{
int r = rand ();
if (r < 0)
r = -r;
return 1 + r % u;
}
int rdtsc()
{
__asm__ __volatile__("rdtsc");
return(NULL);
}
////////////////////////////////////////////////////////////////////////////////
//VOID COUNT_ARRAY_OCCURS FOR COUNT ARRAY OCCURRENCES ASYNCHRONY IN AN STRING//
////////////////////////////////////////////////////////////////////////////////
int
count_array_occurs (char *a, char **b, int c, int d, int e)
{
// A IS GLOBAL STRING WHERE MUST COUNTED OCCURRENCE
// B IS ARRAY OF WORDS OCCURRENCES AS MUST COUNTED IN A
// C IS SIZE CALLED OF ARRAY
// D IS NUMBER PROBABILITY OCCURENCES RELATION REQUIRED TO AN DEDUCTION
// E IS NUMBER THREADS

int la = strlen (a); //SIZE STRING RECEIVED
int lc; //ARRAY SIZED TO C
int noc; //ARRAY SIZED TO C
int pos[la]; //ARRAY SIZED TO 2 CHUNKS: SIZE STRING & NUMBER ELEMENT REQUIRED FINDING
int j;
int x;
int k;
int p = 0;
int af = 0;
int gtn=0;
int v=0;
int i=0;
char * ve; //NEW ARRAY FOR RECEIVE ALEATORY (OLD IS STATIC ELEMENT MEMORY POINTED)
// cpu_set_t mask; // WITH OR WITHOUT AFFINITY 2 FUNCTIONS SAME (PROBLEM ???) ICC
omp_set_nested (0); //
omp_set_dynamic (0);
omp_set_num_threads (0);
omp_set_num_threads (e); // 2 AS DEFAULT
//NUM THREAD DEPEND FOR FREE THAT YOU NOT HAVE USE (IMPROVE FOR ALL SYSTEM)
//kmp_set_blocktime (0); //FOR LEADED //UNKOWN FOR BUFFALO
#pragma omp parallel for private(v) // FOR ARRAY ALEATORY //DISABLE = IMPROVE /2
for (v = 0; v <= c-1 ; v++) //LOOP TO INITIALIZE ARRAY IN SALAD
{
ve= b;
lc = strlen (ve);
noc = 0;
i++;
}
#pragma omp parallel shared(a,p) private(j,k,x)
{
for (int i = 0; i <= c-1 ; i++) //LOOP FIRST LEVEL
{
gtn = omp_get_thread_num (); // HERE RECEIVED BY ICC CORRECT THREAD
//std::cout << "[FL " << gtn << " ]";
if ((i % 2) == 0) //ALTERNATE CONDITION PAIR IMPAIR TO AFFINITY # 0 & 1 (SEE VOID ALEAT ADDED TO BIG MACHINE)
{
af = 0;
}
else
{
af = 1;
}
cpu_set_t mask;
CPU_ZERO (&mask);
CPU_SET (af, &mask);
if (sched_setaffinity (af, sizeof (cpu_set_t), &mask) < 0)
{
perror ("sched_setaffinity");
}
//std::cout << "[AF " << af << " ]\n"; //HERE BUFFALO GIVE AFFINITY ALTERNATE WORKING, ICC ALSO
if (p >= d ) //FLAG HALT POINT if (p > d || gtn ==0 ) TO VERIFY ICC ALWAY REAL THREAD 0
{
i = c - 1;
}
//ALTERNATE CONDITION PAIR IMPAIR TO AFFINITY # 0 & 1 (SEE VOID ALEAT ADDED TO BIG MACHINE ########)
//USE ONLY NOWAIT WITH THIS SPECIFIC SOURCE
#pragma omp sections nowait //
{
#pragma omp section
for (j = 0; j <= la ; j++) //SECONDARY LEVEL
{
gtn = omp_get_thread_num (); //HERE THIS LEVEL INTEL ICC && BUFFALO SHOW THREAD
//std::cout << " " << gtn; // UNCOMENT TO SHOW ALL THREADS OK OR 0
x = 0;
if (a == ve[0])
{
for (k = j; k <= j + lc-1 ; k++) //THIRD LEVEL LOOP,HERE STRANGE WITH ICC [ 0 ] [ # 2 ]
{
if (a == ve && x <= lc-1 ) // && FOR HALT BEFORE MORE OCCURENCES EXISTING
{
x++;
}
if (x == lc && noc<=d-1 && p<=d-1) // && FOR HALT BEFORE MORE OCCURENCES EXISTING
{
noc++;
pos[noc] = k - x;
p++;

gtn = omp_get_thread_num (); //HERE INTEL SHOW 0 NEAL, BUFFALO SHOW NICE ALL THREAD ...
std::cout << " [ " << gtn << " ]"; //IS OTHER ENVIRONMENT EXIST LEADED DEFAULT ??
std::cout << " [ # " << omp_get_num_procs () << "," <<<" ]";
//HERE BUFFALO GIVE QUANTITY 1 # AS CORRECT, BUT ICC GIVE 2 # FALSE , ALSO GHOST THREAD AS 0 ??
//AS GIVEN 1 # IS THREAD USING EACH PROCESSOR (CORE) ALTERNATE WITH BUFFALO.
}
}
}
}
}
}
}
// std::cout <<"\n" << std::endl;
for (int i = 0; i <= c-1 ; i++)
{
if (noc!=0)
{
std::cout << noc << " <-OCC-> " << ve << std::endl;
int m = 1;
while (pos != 0)
{
//ENABLE TO SHOW POSITION
// std::cout << pos << " <-POS-> " << ve << " <-TO-> " << pos + strlen (ve) << std::endl;
m++;
}
}
}
return (0);
}
int
main (int argc, char *argv[])
{
if (argv[1]==0 || argv[2]==0 )
{
std::cout << " Parameter required \n Name program (number occurences ) (number threads)"<< std::endl;
exit(0);
}
char testocc[68096] ; // USE THIS SIZE ICC OR GREATER TO INCREASE RESERVED SPACE (no Segmentation fault with trace)
char * strtab [40] = {"another","Non-Commercial ","display","copy","Site","1.","2.","3.","4.","5.","6.","7.","8.","9.","Unless","as","and","personal","any","forum", "Non", "system", "otherwise", "vulgar", "not", "state", "computer", "on", "the", "server", "to","e","Intel", "faults", "pre", "ch", "na", "is", ",", "." };
int nps = atoi(argv[1]);
int nt = atoi(argv[2]);
memset(testocc,0,68096);
strcpy (testocc,"Personal Non-Commercial Use: This Web Site is for personal and non-commercial use. Unless otherwise specified or as provided in these Terms, you may not modify, copy, distribute, transmit, display, perform, reproduce, publish, license, create derivative works from, transfer, or sell any information, software, products or services obtained from the Materials\nNo Unlawful or Prohibited Use: You agree that you will not use the Web Sites or Material for any purpose that is unlawful or prohibited by these Terms of Use. You may not:\n 1. upload, post, email, transmit or otherwise make available any content that is unlawful, harmful, threatening, abusive, harassing, tortuous, defamatory, vulgar, obscene, libelous, invasive of another's privacy, hateful, or racially, ethnically or otherwise objectionable;\n 2. use the Web Sites, Materials, Services or activities to "stalk" or otherwise harass or harm another;\n 3. impersonate any person or entity, including, but not limited to, an Intel official, forum leader, guide or host, or falsely state or otherwise misrepresent your affiliation with a person or entity or collect or store personal data about other users in connection with the prohibited conduct and activities;\n 4. forge headers or otherwise manipulate identifiers in order to disguise the origin of any content transmitted through the Web Site or Materials;\n 5. upload, post, email, transmit or otherwise make available any content that you do not have a right to make available under any law or under contractual or fiduciary relationships (such as inside information, proprietary and confidential information learned or disclosed as part of employment relationships or under nondisclosure agreements);\n 6. upload, post, email, transmit or otherwise make available any content that infringes any patent, trademark, trade secret, copyright or other proprietary rights ("Rights") of any party;\n 7. upload, post, email, transmit or otherwise make available any unsolicited or unauthorized advertising, promotional materials, "junk mail," "spam," "chain letters," "pyramid schemes," or any other form of solicitation;\n 8. upload, post, email, transmit or otherwise make available any material that contains software viruses or any other computer code, files or programs designed to interrupt, destroy or limit the functionality of any computer software or hardware or telecommunications equipment;\n 9. you may not use the Web Site or Materials in any manner that could damage, disable, overburden, or impair any Intel server, or network(s) connections, disobey any requirements, procedures, policies or regulations of networks connected to the Web Site or Materials or interfere with any other party's use and enjoyment of the Web Sites or Materials;\n 10. you may not attempt to gain unauthorized access to any Web Site or Material, other accounts, computer systems or networks connected to any Intel server or Materials, through hacking, password mining or any other means or obtain or attempt to obtain any materials or information through any means not intentionally made available through the Web Sites or Materials;\n 11. intentionally or unintentionally violate any applicable local, state, national or international law, including, but not limited to, regulations promulgated by the U.S. Securities and Exchange Commission, any rules of any national or other securities exchange, including, without limitation, the New York Stock Exchange, the American Stock Exchange or the NASDAQ, and any regulations having the force of law; and/or\n 12. provide material support or resources (or to conceal or disguise the nature, location, source, or ownership of material support or resources) to any organization(s) designated by the United States government as a foreign terrorist organization pursuant to section 219 of the Immigration and Nationality Act.\nUS Government Restricted Rights: The Materials including Intel Software are provided with "RESTRICTED RIGHTS." Use, duplication, or disclosure by the Government is subject to restrictions as set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or its successor. Use of the Materials by the Government constitutes acknowledgment of Intel 's proprietary rights in them\n");
int v;
for ( v=0 ;v<=1000; v++) // FICTIVE SMALL NUMBER RECORD TUPLES ENGINE DATABASE SIMULATE (USE OPTION NOWAIT)
{
count_array_occurs (testocc, &strtab[NULL], 40, nps,nt);
}
// count_array_occurs (testocc, &strtab[NULL], 40, nps,nt);
std::cout << "\nIn sound coffe....: onSmokerOver isToFogLower()\n 2,4,8 or ++ cores, you have probably an using exact for your money, No ?.. " << std::endl;
std::cout << "\nOpenMp is very very nice product.. , No ?.." << std::endl;
}


0 Kudos
3 Replies
JD_Patel
Employee
147 Views

Hello,

I'm trying to understand your question, but failed to digest the details you provided.
Could you please help me understand the real issue, the isolated test-case, the runtime numbers, etc.?
This would help me understand the problem and then work on it.

Thanks!
- J.D. Patel

aazue
New Contributor I
147 Views

Hello,

I'm trying to understand your question, but failed to digest the details you provided.
Could you please help me understand the real issue, the isolated test-case, the runtime numbers, etc.?
This would help me understand the problem and then work on it.

Thanks!
- J.D. Patel


Hello ,thank for your answer


The sens translated about your remark about (Could you please help me understand the real issue, the isolated test-case, the runtime numbers, etc.?) give an ambiguity with my bad control with your language.
you want understand really interest for the repeat call in loop to simulate tuples database in the main() ?
If this ,I have improved result with big table record same * 2 or * 3 this function is driven with backend C/C++ engine database

Is runtime numbers version Icc you wait ?
Is wrote.

./icc -V
Intel C Intel 64 Compiler Professional for applications running on Intel 64, Version 11.1 Build 20091012 Package ID: l_cproc_p_11.1.059
Copyright (C) 1985-2009 Intel Corporation. All rights reserved.

Problem also same with last l_cproc_p_11.1.064
Problem also same 11.1.059 Microsoft version

Also i made test Visual C++ 10 beta2 Pro (in O/S Vita Pro) and all threads allowed correctly also in level loop 3, not only zeros
same with Icc.
You want exactly source appropriated for Visual C++ 10 beta2 Pro and for mingw ?
If you have linux just compile file added you see the fault easy.

About: This would help me understand the problem and then work on it.
If have an interest for you , I am happy , I just resolve the problem with an wrote differently.
(OpenMp not bottom level) Icc also more speed with specific machines...
I add all the codes when i have time.

Thank very much for your answer, and Merry Christmas for you, all users forum and all the group Intel for after tomorrow++ .

Kind regards

aazue
New Contributor I
147 Views

Quoting - bustaf
Hello,

I'm trying to understand your question, but failed to digest the details you provided.
Could you please help me understand the real issue, the isolated test-case, the runtime numbers, etc.?
This would help me understand the problem and then work on it.

Thanks!
- J.D. Patel


Hello ,thank for your answer


The sens translated about your remark about (Could you please help me understand the real issue, the isolated test-case, the runtime numbers, etc.?) give an ambiguity with my bad control with your language.
you want understand really interest for the repeat call in loop to simulate tuples database in the main() ?
If this ,I have improved result with big table record same * 2 or * 3 this function is driven with backend C/C++ engine database

Is runtime numbers version Icc you wait ?
Is wrote.

./icc -V
Intel C Intel 64 Compiler Professional for applications running on Intel 64, Version 11.1 Build 20091012 Package ID: l_cproc_p_11.1.059
Copyright (C) 1985-2009 Intel Corporation. All rights reserved.

Problem also same with last l_cproc_p_11.1.064
Problem also same 11.1.059 Microsoft version

Also i made test Visual C++ 10 beta2 Pro (in O/S Vita Pro) and all threads allowed correctly also in level loop 3, not only zeros
same with Icc.
You want exactly source appropriated for Visual C++ 10 beta2 Pro and for mingw ?
If you have linux just compile file added you see the fault easy.

About: This would help me understand the problem and then work on it.
If have an interest for you , I am happy , I just resolve the problem with an wrote differently.
(OpenMp not bottom level) Icc also more speed with specific machines...
I add all the codes when i have time.

Thank very much for your answer, and Merry Christmas for you, all users forum and all the group Intel for after tomorrow++ .

Kind regards






Hi (I add all the codes when i have time.)

Take joined file gnu_ficat9.cc as sample to understand more easy
This sample is to Linux , I wait machine freed for made an sample appropriated to Microsoft O/S 64

Remark:
Example 1* Icc show thread correctly,
Example 2* Icc show all thread as zero
Also with some machine Icc is more slow * 2 or greater that Gnu g++. ???
You have several optional parameters for observing different comportments

[1](number occurences )
[2](number threads)
[3](Type aleatory (0 or 1))
[4](Number element loop)
[5](Show trace (optional) 0 or 1)
[6](Affinity (optional)# 0=2 # or 1=1 # )
[7](Numbers element array words (optional))

I hope that can help you for align two compiler (or tool Openmp) same result.
Can be interesting I write this sample with Tbb or Mpi to verify is same time result ? maybe ,if i have the time ....

Observation: This sample can be better significant with all new Intel processors if you have.
Use if you can to show customer that renew machine several cores is 100 % benefit hardware and programming,
and all people have song that not piloted or more slow is totally unjustified..
unfortunately at this times you must use GNU,Mingw or Vc but not Icc..

Tests with evidence real produced , you have the source code, not supposed with the literature

(Gnu g++ used for reason two function working correctly)
*******************************
time ./ficat9 175 0 0 10000 1 0 50
real 0m8.749s
user 0m8.577s
sys 0m0.164s
Result : 500050 Occurrences generated with loop 10000 over 0 threads with 175 elements called
Type aleatory used is : 0, Affinity option is : 0, Number array word used is : 50
*******************************
time ./ficat9 175 4 0 10000 1 0 50
real 0m5.372s
user 0m4.900s
sys 0m0.464s
Result : 500050 Occurrences generated with loop 10000 over 4 threads with 175 elements called
Type aleatory used is : 0, Affinity option is : 0, Number array word used is : 50
*******************************
time ./ficat9 175 6 1 10000 1 1 50
real 0m4.202s
user 0m7.588s
sys 0m0.532s
Result : 490201 Occurrences generated with loop 10000 over 6 threads with 175 elements called
Type aleatory used is : 1, Affinity option is : 1, Number array word used is : 50
*******************************

Remark: 0m4.202s is half time 0m8.749s


Important:
Observe the comportment of two functions described after is very interesting for understand easily threading.

*EXAMPLE 1: function (count_array_occurs_1) used
time ./ficat9 75 5 1 1000 0 1 30 > test

Parameter 3 is 1 , read the file for observing result, 75 element is
called parameter 1 ,repartition word find over shared possible thread.
if you trace one string over multiple steep you see probably not
same numbered element only 75 sum is value.
Result each word is based priority thread.

(see for example after number occurrence words "any", "otherwise" two step)

[Thread: 0 ] [ # 2,1 ]
10 <-OCC-> otherwise
1 <-OCC-> vulgar
2 <-OCC-> another
11 <-OCC-> not
2 <-OCC-> state
1 <-OCC-> Non-Commercial
6 <-OCC-> are
1 <-OCC-> display
2 <-OCC-> copy
1 <-OCC-> Unless
9 <-OCC-> as
9 <-OCC-> and
2 <-OCC-> personal
18 <-OCC-> any
Sum : 75

[Thread: 3 ] [ # 2,1 ]
1 <-OCC-> Unless
9 <-OCC-> as
9 <-OCC-> and
2 <-OCC-> personal
29 <-OCC-> any
1 <-OCC-> forum
1 <-OCC-> Non
1 <-OCC-> system
2 <-OCC-> another
1 <-OCC-> Non-Commercial
6 <-OCC-> are
1 <-OCC-> display
2 <-OCC-> copy
9 <-OCC-> otherwise
1 <-OCC-> vulgar
Sum : 75



*EXAMPLE 2:function (count_array_occurs_0) used (Better you use parameter 6 as 0 (MP 2 #))
time ./ficat9 75 5 0 1000 0 0 30 > test1
Parameter 3 is 0 , read the file for observing result, 75 element is
called parameter 1
Now only aleatory order try is used and number element are always counted same number in
all the steps.



[Thread: 0 ] [ # 2,1 ]
10 <-OCC-> otherwise
9 <-OCC-> as
9 <-OCC-> Site
2 <-OCC-> 1.
10 <-OCC-> 2
2 <-OCC-> another
1 <-OCC-> Non-Commercial
6 <-OCC-> are
1 <-OCC-> display
2 <-OCC-> copy
2 <-OCC-> disclosure
1 <-OCC-> harassing
1 <-OCC-> 4.
1 <-OCC-> 5.
1 <-OCC-> 6
1 <-OCC-> 7.
1 <-OCC-> Unless
1 <-OCC-> 9.
9 <-OCC-> as
4 <-OCC-> and
1 <-OCC-> personal
Sum : 75

[Thread: 2 ] [ # 2,1 ]
10 <-OCC-> otherwise
9 <-OCC-> as
9 <-OCC-> Site
2 <-OCC-> 1.
10 <-OCC-> 2
2 <-OCC-> another
1 <-OCC-> Non-Commercial
6 <-OCC-> are
1 <-OCC-> display
2 <-OCC-> copy
2 <-OCC-> disclosure
1 <-OCC-> harassing
1 <-OCC-> 4.
1 <-OCC-> 5.
1 <-OCC-> 6
1 <-OCC-> 7.
16 <-OCC-> .
Sum : 75



*******************************************************************************************
Joined also an source for same code functionality for VC2010 PRO Beta2 (very good product !!)
I can not work Icc to same machine for time compared with VC2010
as i have only old machine in my hand and (last icc install rejected)
Is crazy that with an Intel PIII processor install refused
last VC2010 installed without problem and last Icc rejected....
Strange ? for correct image product marqued owner Intel , all other compiler
have respect compatibility with old Intel processors.
I not have an use obligatory your option processor imposed (not relation with 99% of the C/C++ programing current),
must be normally only an choice if appropriated ..


vc_ficat9.cc work tested icc (Atom N270),vc20010 (PIII only),Mingw (Atom N270 & PIII).
********************************************************************************************

**********************************
Compiler ICC ATOM N270 U100 O/S XP
***********************************

icl -v
Intel C++ Compiler Professional for applications running on IA-32, Version 11
.1 Build 20091130 Package ID: w_cproc_p_11.1.054
Copyright (C) 1985-2009 Intel Corporation. All rights reserved.
icl: command line warning #10006: ignoring unknown option '/v'
30 DAY EVALUATION LICENSE

icl: NOTE: The evaluation period for this product ends on 17-jan-2010 UTC.
icl: command line error: no files specified; for help type "icl /help"

COMMAND COMPILER USED:
icl /QxSSE3_ATOM /Qopenmp vc_ficat9.cc


vc_ficat9 75 0 1 10000 1 0 50
7 parameters (3 optional) required
Name program +
[1](number occurences )
[2](number threads)
[3](Type aleatory (0 or 1))
[4](Number element loop)
[5](Show trace (optional) 0 or 1)
[6](Affinity (optional)# 0=2 # or 1=1 # )
[7](Numbers element array words (optional))
Ok task is working..
OMP: Warning #2: Cannot open message catalog "1036libiomp5ui.dll":
OMP: System error #126: Le module spcifi est introuvable.
OMP: Info #3: Default messages will be used.

In sound coffe....: onSmokerOver isToFogLower()
2,4,8 or ++ Intel cores, you have probably an using exact for your money, No ?..

OpenMp is very very nice product.. , No ?..


Result : 500050 Occurrences generated with loop 10000 over 0 threads with 75 ele
ments called
Type aleatory used is : 1, Affinity option is : 0, Number array word used is : 50

Time : 57.6746

vc_ficat9 75 8 1 10000 1 0 50
7 parameters (3 optional) required
Name program +
[1](number occurences )
[2](number threads)
[3](Type aleatory (0 or 1))
[4](Number element loop)
[5](Show trace (optional) 0 or 1)
[6](Affinity (optional)# 0=2 # or 1=1 # )
[7](Numbers element array words (optional))
Ok task is working..
OMP: Warning #2: Cannot open message catalog "1036libiomp5ui.dll":
OMP: System error #126: Le module spcifi est introuvable.
OMP: Info #3: Default messages will be used.

In sound coffe....: onSmokerOver isToFogLower()
2,4,8 or ++ Intel cores, you have probably an using exact for your money, No ?..

OpenMp is very very nice product.. , No ?..

Result : 429718 Occurrences generated with loop 10000 over 8 threads with 75 ele
ments called
Type aleatory used is : 1, Affinity option is : 0, Number array word used is : 50

Time : 29.652

*********************************************
Compiler: BUFFALO BILL ATOM N270 U100 O/S XP
*********************************************

C:MinGWbin>g++ -v
Using built-in specs.
Target: mingw32
Configured with: ../../gcc-4.4.1/configure --prefix=/mingw --build=mingw32 --ena
ble-languages=c,ada,c++,fortran,objc,obj-c++ --disable-nls --disable-win32-regis
try --enable-libgomp --enable-cxx-flags='-fno-function-sections -fno-data-sectio
ns' --disable-werror --enable-threads --disable-symvers --enable-version-specifi
c-runtime-libs --enable-fully-dynamic-string --with-pkgversion='TDM-2 mingw32' -
-enable-sjlj-exceptions --with-bugurl=http://www.tdragon.net/recentgcc/bugs.php
Thread model: win32
gcc version 4.4.1 (TDM-2 mingw32)

COMMAND COMPILER USED:
C:MinGWbin>g++ -static -Os -lpthread -L lgomp -fopenmp vc_ficat9.cc -o vc_ficat9

C:MinGWbin>vc_ficat9 75 0 1 10000 1 0 50
7 parameters (3 optional) required
Name program +
[1](number occurences )
[2](number threads)
[3](Type aleatory (0 or 1))
[4](Number element loop)
[5](Show trace (optional) 0 or 1)
[6](Affinity (optional)# 0=2 # or 1=1 # )
[7](Numbers element array words (optional))
Ok task is working..

In sound coffe....: onSmokerOver isToFogLower()
2,4,8 or ++ Intel cores, you have probably an using exact for your money, No ?.
.

OpenMp is very very nice product.. , No ?..


Result : 500050 Occurrences generated with loop 10000 over 0 threads with 75 ele
ments called
Type aleatory used is : 1, Affinity option is : 0, Number array word used is : 50

Time : 12.922

C:MinGWbin>vc_ficat9 75 5 1 10000 1 0 50
7 parameters (3 optional) required
Name program +
[1](number occurences )
[2](number threads)
[3](Type aleatory (0 or 1))
[4](Number element loop)
[5](Show trace (optional) 0 or 1)
[6](Affinity (optional)# 0=2 # or 1=1 # )
[7](Numbers element array words (optional))
Ok task is working..

In sound coffe....: onSmokerOver isToFogLower()
2,4,8 or ++ Intel cores, you have probably an using exact for your money, No ?.
.

OpenMp is very very nice product.. , No ?..


Result : 500050 Occurrences generated with loop 10000 over 5 threads with 75 ele
ments called
Type aleatory used is : 1, Affinity option is : 0, Number array word used is : 50

Time : 7.359

*************************************************
GNU COMPILER TIME ATOM N270 O/S LINUX (OPENSUSE)
*************************************************

linux-x9zv:/ # time ./gnu_ficat9 75 0 1 10000 1 0 50
7 parameters (3 optional) required
Name program +
[1](number occurences )
[2](number threads)
[3](Type aleatory (0 or 1))
[4](Number element loop)
[5](Show trace (optional) 0 or 1)
[6](Affinity (optional)# 0=2 # or 1=1 # )
[7](Numbers element array words (optional))
Example 1 : time ./gnu_ficat9 175 5 1 1000 1 0 40 > test
Example 2 : time ./gnu_ficat9 75 8 1 10000 1 0 50
Example 3 : time ./gnu_ficat9 75 5 0 1000 0 1 40
Example 4 : time ./gnu_ficat9 75 5 1 1000 0 1 40
Ok task is working..

In sound coffe....: onSmokerOver isToFogLower()
2,4,8 or ++ Intel cores, you have probably an using exact for your money, No ?..

OpenMp is very very nice product.. , No ?..


Result : 500050 Occurrences generated with loop 10000 over 0 threads with 75 elements called
Type aleatory used is : 1, Affinity option is : 0, Number array word used is : 50

real 0m11.646s
user 0m11.401s
sys 0m0.244s

linux-x9zv:/ # time ./gnu_ficat9 75 5 1 10000 1 0 50
7 parameters (3 optional) required
Name program +
[1](number occurences )
[2](number threads)
[3](Type aleatory (0 or 1))
[4](Number element loop)
[5](Show trace (optional) 0 or 1)
[6](Affinity (optional)# 0=2 # or 1=1 # )
[7](Numbers element array words (optional))
Example 1 : time ./gnu_ficat9 175 5 1 1000 1 0 40 > test
Example 2 : time ./gnu_ficat9 75 8 1 10000 1 0 50
Example 3 : time ./gnu_ficat9 75 5 0 1000 0 1 40
Example 4 : time ./gnu_ficat9 75 5 1 1000 0 1 40
Ok task is working..

In sound coffe....: onSmokerOver isToFogLower()
2,4,8 or ++ Intel cores, you have probably an using exact for your money, No ?..

OpenMp is very very nice product.. , No ?..


Result : 500050 Occurrences generated with loop 10000 over 5 threads with 75 elements called
Type aleatory used is : 1, Affinity option is : 0, Number array word used is : 50

real 0m6.521s
user 0m9.561s
sys 0m2.332s


Remark: I am surprise about difference time result (Compiler GNU) with Linux (OpenSUse) and Microsoft(Xp)
and (Atom n270 machine) very small, I hope can be same O/S 64 ..
Can be very well that Icc can be used with as complement MinGw to work Microsoft O/S for resulting
an product autonomous specially tuned improved for Intel processors.


Remark: ICC is very very good compiler for improvement results , only here descriptive
specific problem or wrong initialize in relation threading with tool OpenMP.


Several programmers have no time accorded to use choice bottom level, this tool must work correctly same with
all other compilers.

As given very very strange is this problem (or suspecting an parameter value leaded forced initialize default)
is reproduced exactly same with Unix and Microsoft operating system.
With programming driven directly signal bottom level not the problem.


Maybe require an KMP_BLOCKTIME= -20000000000000000000000000000 ???, or the problem must be submitted
really to concerned engineering, better that extended discuss with some of your black belt users,
playing the literature or playing the sheriff vulgar,that must probably work reality operational asynchronous
programing before try to give me councils about form in this side.

Intel group have submit council that asynchronous must be used by programmer, but i think priority council is for
the compiler as named label Intel, can running accorded all sources side correctly before (hardware included).

I give easy comprehensible sample how to improve asynchronous by two or greater, you have compiler (? wrong default parameters ?)
for resulting as divide performance by two.....
Also if I use reality backend with table database 1000000..or greater records Icc is more slow * 10 that Gnu.

Strange.. actually I can use only Gnu compiler for submit eventual renew justified Intel machine with the control
engineering quality or for simple customer ??

If you give customer this function compiled Icc for showing improve you receive probably the shoes not the command ..

Damage, as regrettable side, we have the same struggle objective we two,for work to sale or renew machines
Intel processors.(for me often ,only if can be renew hardware with my friends partner, programming renewed also),
fortunately there are GNU compiler... One thing is for sure all new Intel processor is 100% benefice for programming

I wait from Intel group an help clear for proving my customer,processors specific Intel accorded with an compiler
resulting advantage improvement programming,also several cores is better, only this...

Is clear, result Icc with OpenMP default is catastrophic with machine typed 2,4 cores, Atom , and other..., O/S 32 & 64 Microsoft or Linux.

For ended I repeat my question OpenMP with Icc wrong default parameters or an bug ?

Kind regards

Two files source vc_ficat9.cc.txt (Microsoft & Unix) and gnu_ficat9.cc.txt (Unix only)
(cut in browser frame for your editor if (CR) absent ( & rename *.cc before compile)

I discover that files attachment can be opened with IE8 browser, is crazy, you receive
message alert same as publicity locked ???? but is working with using Firefox
I add two samples in textaera better.

//////////////////////
SAMPLE GNU_FICAT9.CC
/////////////////////
//////////////////////////////////
FOR BUFFALO COMPILER DEPEND #
///////////////////////////////
//g++ -ansi -O1 -Wno-write-strings -m64 -lpthread -fopenmp -mtune=core2 -march=core2 -fomit-frame-pointer gnu_ficat9.cc -o gnu_ficat9
//g++ -ansi -O3 -Wno-write-strings -ftree-vect-loop-version -m64 -lpthread -fthread-jumps -fopenmp -mtune=core2 -march=core2 -fomit-frame-pointer gnu_ficat9.cc -o gnu_ficat9
//g++ -Wall -ansi -O3 -mssse3 -Wno-write-strings -m64 -lpthread -fopenmp -mtune=core2 -march=core2 -fomit-frame-pointer gnu_ficat9.cc -o gnu_ficat9

//////////////////////////////
// FOR INTEL COMPILER DEPEND #
//////////////////////////////
//LANG=C; export LANG;KMP_BLOCKTIME=0;export KMP_BLOCKTIME;LD_LIBRARY_PATH=/opt/intel/Compiler/11.1/064/lib/intel64;export LD_LIBRARY_PATH

//FOR BINARY AS STATIC ICC
//LD_LIBRARY_PATH=/opt/intel/Compiler/11.1/064/lib/intel64;export LD_LIBRARY_PATH
//FOR BINARY AS STATIC ICC
//./icpc -ansi -fast -static -O2 -axSSSE3 -lpthread -openmp -openmp-lib=compat -march=core2 -mtune=core2 gnu_ficat9.cc -o gnu_ficat9
//FOR BINARY AS SHARED ICC
//./icpc -fPIC -ansi -shared-intel -axSSSE3 -m64 -Os -fast -openmp -openmp-task omp -openmp-lib=compat -openmp-report -march=core2 -mtune=core2 -fomit-frame-pointer gnu_ficat9.cc -o gnu_ficat9

// DO NOT MAKE BETTER IF YOU NOT HAVE PRACTICE KERNEL
// RUN BEFORE SYNC COMMAND SHELL BEFORE START ONE OFF TWO BUILD TYPE TIME COMPARE
// echo 0 > /proc/sys/kernel/sched_compat_yield (IS DEFAULT)
// echo 1 > /proc/sys/kernel/sched_compat_yield (FOR BOOST #)


#include
#include
#include
#include
#include
#include
#include
////////////////////////////////////////////////////////////////////////////////
//VOID COUNT_ARRAY_OCCURS_0 FOR COUNT ARRAY OCCURRENCES ASYNCHRONY IN AN STRING//
////////////////////////////////////////////////////////////////////////////////
int
count_array_occurs_0 (char *a, char **b, int c, int d, int e,int f,int g)
{
// A IS GLOBAL STRING WHERE MUST COUNTED OCCURRENCE
// B IS ARRAY OF WORDS OCCURRENCES AS MUST COUNTED IN A
// C IS SIZE CALLED OF ARRAY
// D IS NUMBER PROBABILITY OCCURENCES RELATION REQUIRED TO AN DEDUCTION
// E IS NUMBER THREADS
// F IS FLAG TO SHOW
// G is NUMBER ELEMENT ARRAY STRING YOU WANT
int la = strlen (a); //SIZE STRING RECEIVED
int lc; //ARRAY SIZED TO C
int noc; //ARRAY SIZED TO C
int pos[la]; //ARRAY SIZED TO 2 CHUNKS: SIZE STRING & NUMBER ELEMENT REQUIRED FINDING
int j;
int x;
int k;
int p = 0;
int af = 0;
int gtn=0;
int v=0;
int i=0;
char * ve; //NEW ARRAY FOR RECEIVE ALEATORY (OLD IS STATIC ELEMENT MEMORY POINTED)
omp_set_nested (0); //
omp_set_dynamic (0);
omp_set_num_threads (e);


#pragma omp parallel for private(v) // FOR ARRAY ALEATORY //DISABLE = IMPROVE /2
for (v = 0; v <= c-1 ; v++) //LOOP TO INITIALIZE ARRAY IN SALAD
{
ve= b;
lc = strlen (ve);
noc = 0;
i++;
}

gtn = omp_get_thread_num ();
#pragma omp parallel shared(a,p,f) private(j,k,x,v)
{
for (int i = 0; i <= c-1 ; i++) //LOOP FIRST LEVEL
{
// gtn = omp_get_thread_num (); // HERE RECEIVED BY ICC CORRECT THREAD
if ((i % 2) == 0) //ALTERNATE CONDITION PAIR IMPAIR TO AFFINITY # 0 & 1 (SEE VOID ALEAT ADDED TO BIG MACHINE)
{
af = 0;
}
else
{
af = 1;
}
if(g==0)
{
cpu_set_t mask;
CPU_ZERO (&mask);
CPU_SET (af, &mask);
if (sched_setaffinity (af, sizeof (cpu_set_t), &mask) < 0)
{
perror ("sched_setaffinity");
}
}
if (p >= d ) //FLAG HALT POINT
{
i = c - 1;
}
#pragma omp sections nowait //
{
#pragma omp section
for (j = 0; j <= la ; j++) //SECONDARY LEVEL
{
gtn = omp_get_thread_num (); // HERE CALL NUM THREAD
x = 0;
if (a == ve[0])
{
for (k = j; k <= j + lc-1 ; k++)
{
if (a == ve && x <= lc-1 ) // && FOR HALT BEFORE MORE OCCURENCES EXISTING
{
x++;
}
if (x == lc && noc<=d-1 && p<=d-1) // && FOR HALT BEFORE MORE OCCURENCES EXISTING
{
noc++;
pos[noc] = k - x;
p++;
if (p >= d ) //FLAG HALT POINT
{
gtn = omp_get_thread_num (); //HERE INTEL SHOW 0 NEAL, BUFFALO SHOW NICE ALL THREAD ...
if(f==0)
{
std::cout << " n[Thread: " << gtn << " ]"; //IS OTHER ENVIRONMENT EXIST LEADED DEFAULT ??
std::cout << " [ # " << omp_get_num_procs () << "," <<<" ]n";
}
k = j + lc-1 ;
j=la;
i = c - 1;
}
}
}
}
}
}
}
}
int sum=0;
for (int i = 0; i <= c-1 ; i++)
{
if (noc!=0)
{
sum=sum+noc;
if(f<1)
{
std::cout << noc << " <-OCC-> " << ve << std::endl;
}
int m = 1;
while (pos != 0)
{
//ENABLE TO SHOW POSITION
// std::cout << pos << " <-POS-> " << ve << " <-TO-> " << pos + strlen (ve) << std::endl;
m++;
}
}
}
if(f==0)
{
std::cout << "Sum : " << sum << std::endl;
}
sum =0;
return (i);
}
///////////////////////////////////////////////////////////////////////////////////
//VOID COUNT_ARRAY_OCCURS_1 FOR COUNT ARRAY OCCURRENCES ASYNCHRONY IN AN STRING//
////////////////////////////////////////////////////////////////////////////////////
int
count_array_occurs_1 (char *a, char **b, int c, int d, int e, int f,int g)
{
// A IS GLOBAL STRING WHERE MUST COUNTED OCCURRENCE
// B IS ARRAY OF WORDS OCCURRENCES AS MUST COUNTED IN A
// C IS SIZE CALLED OF ARRAY
// D IS NUMBER PROBABILITY OCCURENCES RELATION REQUIRED TO AN DEDUCTION
// E IS NUMBER THREADS
// F IS FLAG TO SHOW
// G is NUMBER ELEMENT ARRAY STRING YOU WANT
int la = strlen (a); //SIZE STRING RECEIVED
int lc; //ARRAY SIZED TO C
int noc; //ARRAY SIZED TO C
int pos[la]; //ARRAY SIZED TO 2 CHUNKS: SIZE STRING & NUMBER ELEMENT REQUIRED FINDING
int j;
int x;
int k;
int p = 0;
int af = 0;
int gtn=0;
int v=0;
int i=0;

char * ve; //NEW ARRAY FOR RECEIVE ALEATORY (OLD IS STATIC ELEMENT MEMORY POINTED)
// cpu_set_t mask; // WITH OR WITHOUT AFFINITY 2 FUNCTIONS SAME (PROBLEM ???) ICC
omp_set_nested (0); //
omp_set_dynamic (0);
omp_set_num_threads (e);
//NUM THREAD DEPEND ALSO FOR FREE THAT YOU NOT HAVE USE (IMPROVE FOR ALL SYSTEM)
#pragma omp parallel for // FOR ARRAY ALEATORY
for (v = 0; v <= c-1 ; v++) //LOOP TO INITIALIZE ARRAY IN MIXED SALAD
{
ve= b;
lc = strlen (ve);
noc = 0;
i++;
// for(int z=0;z<=2;z++){std::cout << " ";}
//IF AN OLD SLOW # UNABLE TICK ALLOWED ADD FICTIVE LOOP HERE FOR SLOW
//ONLY IF YOU HAVING LOOP RESULT NORMALLY INCREASED
//ALEATORY RESULT IS BETTER IF YOU HAVE WELL MODEL #++
}
omp_set_num_threads (e);
gtn = omp_get_thread_num ();
#pragma omp parallel shared(a,p) private(j,k,x,v)
{
for (int i = 0; i <= c-1 ; i++) //LOOP FIRST LEVEL
{
gtn = omp_get_thread_num (); // HERE CALL NUM THREAD
if ((gtn % 2) == 0) //ALTERNATE CONDITION THREAD PAIR IMPAIR TO AFFINITY # 0 & 1
{
af = 0;
}
else
{
af = 1;
}
if(g==0)
{
cpu_set_t mask;
CPU_ZERO (&mask);
CPU_SET (af, &mask);
if (sched_setaffinity (af, sizeof (cpu_set_t), &mask) < 0)
{
perror ("sched_setaffinity");
}
}
if (p >= d ) //FLAG HALT POINT LOOP
{
i = c - 1;
}

#pragma omp for nowait //
for (j = 0; j <= la ; j++) //SECONDARY LEVEL
{
gtn = omp_get_thread_num (); // HERE CALL NUM THREAD
x = 0;
if (a == ve[0])
{
for (k = j; k <= j + lc-1 ; k++)
{
if (a == ve && x <= lc-1 ) // && FOR HALT BEFORE MORE OCCURENCES EXISTING
{
x++;
}
if (x == lc && noc<=d-1 && (p+noc[i+1])<=d-1) // && FOR HALT BEFORE MORE OCCURENCES EXISTING
{
noc++;
pos[noc] = k - x;
p++;
//gtn = omp_get_thread_num ();
// std::cout << " [ " << gtn << " ]"; //IS OTHER ENVIRONMENT EXIST LEADED DEFAULT ??
// std::cout << " [ # " << omp_get_num_procs () << "," <<<" ]";
if (p >= d ) //FLAG HALT POINT IN LOOP LEVEL3
{
if (f==0)
{
std::cout << " n[Thread: " << gtn << " ]"; //IS OTHER ENVIRONMENT EXIST LEADED DEFAULT ??
std::cout << " [ # " << omp_get_num_procs () << "," <<<" ]n";
}
k = j + lc-1 ;
j=la;
i = c - 1;

}
}
}
}
}
}
}
int sum=0;
for (int i = 0; i <= c-1 ; i++)
{
if (noc!=0)
{
if (f==0)
{
std::cout << noc << " <-OCC-> " << ve << std::endl;
}
sum=sum+noc;
int m = 1;
while (pos != 0)
{
//ENABLE TO SHOW POSITION
// std::cout << pos << " <-POS-> " << ve << " <-TO-> " << pos + strlen (ve) << std::endl;
m++;
}
}
}
if (f==0)
{
std::cout << "Sum : " << sum << std::endl;
}
sum =0;
return (i);
}
int
main (int argc, char *argv[])
{
if (argv[1]==NULL || argv[2]==NULL || argv[3]==NULL || argv[4]==NULL )
{
std::cout << "7 parameters (3 optional) required nName program + n[1](number occurences ) n[2](number threads) n[3](Type aleatory (0 or 1)) n[4](Number element loop) n[5](Show trace (optional) 0 or 1) n[6](Affinity (optional) # 0=2 # or 1=1 #) n[7](Numbers element array words (optional))"<< std::endl;
exit(0);
}
std::cout << "7 parameters (3 optional) required nName program + n[1](number occurences ) n[2](number threads) n[3](Type aleatory (0 or 1)) n[4](Number element loop) n[5](Show trace (optional) 0 or 1) n[6](Affinity (optional)# 0=2 # or 1=1 # ) n[7](Numbers element array words (optional))"<< std::endl;
std::cout <<"Example 1 : time ./gnu_ficat9 175 5 1 1000 1 0 40 > testnExample 2 : time ./gnu_ficat9 75 8 1 10000 1 0 50 " << std::endl;
std::cout <<"Example 3 : time ./gnu_ficat9 75 5 0 1000 0 1 40 " << std::endl;
std::cout <<"Example 4 : time ./gnu_ficat9 75 5 1 1000 0 1 40 nOk task is working.. " << std::endl;

char * testocc ; // USE THIS SIZE ICC OR GREATER TO INCREASE RESERVED SPACE (no Segmentation fault with trace)
char * strtab [] = {"another","time","Non-Commercial ","increase","are","happy","display","copy","some","drive","allready","otherwise","as","Site","1.","2","disclosure","harassing","4.","5.","6","7.",".","9.","Unless","as","and","personal","any","forum", "Non", "system", "otherwise", "vulgar", "allready","reverse","not", "state", "computer", "on", "the", "server", "to","tx","each","Intel", "faults", "gate","screen","pre", "ch", "thread","na", "is", ",", "back","by" };
int nps = atoi(argv[1]);
int nt = atoi(argv[2]);
int ty = atoi(argv[3]);
int lo = atoi(argv[4]);
int sh=0;
int uaf=0;
int nema=57;
omp_set_num_threads (0);
omp_set_num_threads (201);

if (argv[5]!=NULL)
{
sh = atoi(argv[5]);
}
if (argv[6]!=NULL)
{
uaf = atoi(argv[6]);
}
if (argv[7]!=NULL && strlen(argv[7])>3) //TO SUSE (argv[>6] USED ???
{
nema=57;
}
if (argv[7]!=NULL && strlen(argv[7])<3)
{
nema = atoi(argv[7]);
if (nema >57)
{
nema=57;
}
}
testocc="Personal Non-Commercial Use: This Web Site is for personal and non-commercial use. Unless otherwise specified or as provided in these Terms, you may not modify, copy, distribute, transmit, display, perform, reproduce, publish, license, create derivative works from, transfer, or sell any information, software, products or services obtained from the MaterialsnNo Unlawful or Prohibited Use: You agree that you will not use the Web Sites or Material for any purpose that is unlawful or prohibited by these Terms of Use. You may not:n 1. upload, post, email, transmit or otherwise make available any content that is unlawful, harmful, threatening, abusive, harassing, tortuous, defamatory, vulgar, obscene, libelous, invasive of another's privacy, hateful, or racially, ethnically or otherwise objectionable;n 2. use the Web Sites, Materials, Services or activities to "stalk" or otherwise harass or harm another;n 3. impersonate any person or entity, including, but not limited to, an Intel official, forum leader, guide or host, or falsely state or otherwise misrepresent your affiliation with a person or entity or collect or store personal data about other users in connection with the prohibited conduct and activities;n 4. forge headers or otherwise manipulate identifiers in order to disguise the origin of any content transmitted through the Web Site or Materials;n 5. upload, post, email, transmit or otherwise make available any content that you do not have a right to make available under any law or under contractual or fiduciary relationships (such as inside information, proprietary and confidential information learned or disclosed as part of employment relationships or under nondisclosure agreements);n 6. upload, post, email, transmit or otherwise make available any content that infringes any patent, trademark, trade secret, copyright or other proprietary rights ("Rights") of any party;n 7. upload, post, email, transmit or otherwise make available any unsolicited or unauthorized advertising, promotional materials, "junk mail," "spam," "chain letters," "pyramid schemes," or any other form of solicitation;n 8. upload, post, email, transmit or otherwise make available any material that contains software viruses or any other computer code, files or programs designed to interrupt, destroy or limit the functionality of any computer software or hardware or telecommunications equipment;n 9. you may not use the Web Site or Materials in any manner that could damage, disable, overburden, or impair any Intel server, or network(s) connections, disobey any requirements, procedures, policies or regulations of networks connected to the Web Site or Materials or interfere with any other party's use and enjoyment of the Web Sites or Materials;n 10. you may not attempt to gain unauthorized access to any Web Site or Material, other accounts, computer systems or networks connected to any Intel server or Materials, through hacking, password mining or any other means or obtain or attempt to obtain any materials or information through any means not intentionally made available through the Web Sites or Materials;n 11. intentionally or unintentionally violate any applicable local, state, national or international law, including, but not limited to, regulations promulgated by the U.S. Securities and Exchange Commission, any rules of any national or other securities exchange, including, without limitation, the New York Stock Exchange, the American Stock Exchange or the NASDAQ, and any regulations having the force of law; and/orn 12. provide material support or resources (or to conceal or disguise the nature, location, source, or ownership of material support or resources) to any organization(s) designated by the United States government as a foreign terrorist organization pursuant to section 219 of the Immigration and Nationality Act.nUS Government Restricted Rights: The Materials including Intel Software are provided with "RESTRICTED RIGHTS." Use, duplication, or disclosure by the Government is subject to restrictions as set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or its successor. Use of the Materials by the Government constitutes acknowledgment of Intel 's proprietary rights in themn";
int v;
int res=0;
int sumres=0;
if (ty==0)
{
for ( v=0 ;v<=lo; v++) // FICTIVE SMALL NUMBER RECORD TUPLES ENGINE DATABASE SIMULATE (USE OPTION NOWAIT)
{
res=count_array_occurs_0 (testocc,&strtab[NULL],nema,nps,nt,sh,uaf);
sumres=sumres+res;
}
}
if (ty==1)
{
for ( v=0 ;v<=lo; v++) // FICTIVE SMALL NUMBER RECORD TUPLES ENGINE DATABASE SIMULATE (USE OPTION NOWAIT)
{
res=count_array_occurs_1 (testocc,&strtab[NULL],nema,nps,nt,sh,uaf);
sumres=sumres+res;
}
}
std::cout << "nIn sound coffe....: onSmokerOver isToFogLower()n 2,4,8 or ++ Intel cores, you have probably an using exact for your money, No ?.. " << std::endl;
std::cout << "nOpenMp is very very nice product.. , No ?.." << std::endl;
std::cout <<"nnResult : " << sumres << " Occurrences generated with loop " <<< " over " << nt << " threads with " << nps << " elements called" << std::endl;
std::cout <<"Type aleatory used is : " << ty << ", Affinity option is : " << uaf << ", Number array word used is : " << nema << std::endl ;

}









//////////////////////
SAMPLE VC_FICAT9.CC
/////////////////////
////////////////////////////////
// VISUAL C++ PRO 2010 Beta2 //
////////////////////////////////
//CAN WOEK ALSO COMPATIBLE Icc & Mingw
//FOR COMPILE
// SET OMP_BLOCKTIME=0
// cl /Ox /EHsc /openmp vc_ficat9.cc
//EXAMPLE (NUMBER THREAD DEPEND MACHINE)
// vc_ficat9 175 12 1 1000 1 50 (with 12 threads)
// vc_ficat9 175 1 1 1000 1 50 (with unique thread)

#include
#include
#include
#include
#include
#include
#include
#include

////////////////////////////////////////////////////////////////////////////////
//VOID COUNT_ARRAY_OCCURS_0 FOR COUNT ARRAY OCCURRENCES ASYNCHRONY IN AN STRING//
////////////////////////////////////////////////////////////////////////////////
int
count_array_occurs_0 (char *a, char **b, int c, int d, int e,int f,int g)
{
// A IS GLOBAL STRING WHERE MUST COUNTED OCCURRENCE
// B IS ARRAY OF WORDS OCCURRENCES AS MUST COUNTED IN A
// C IS SIZE CALLED OF ARRAY
// D IS NUMBER PROBABILITY OCCURENCES RELATION REQUIRED TO AN DEDUCTION
// E IS NUMBER THREADS
// F IS FLAG TO SHOW
int lc[58];
int la = strlen (a); //SIZE STRING RECEIV
int noc[58]; //ARRAY SIZED TO C
int pos[4096][58]; //ARRAY SIZED TO 2 CHUNKS: SIZE STRING & NUMBER ELEMENT REQUIRED FINDING
int j;
int x;
int k;
int p = 0;
int af = 0;
int gtn=0;
int v=0;
int i=0;
char * ve[58]; //NEW ARRAY FOR RECEIVE ALEATORY (OLD IS STATIC ELEMENT MEMORY POINTED)
omp_set_nested (0); //
omp_set_dynamic (0);
omp_set_num_threads (e);

#pragma omp parallel for private(v) // FOR ARRAY ALEATORY //DISABLE = IMPROVE /2
for (v = 0; v <= c-1 ; v++) //LOOP TO INITIALIZE ARRAY IN SALAD
{
ve= b;
lc = strlen (ve);
noc = 0;
i++;
}
gtn = omp_get_thread_num ();
#pragma omp parallel shared(a,p,f) private(j,k,x,v)
{
for (int i = 0; i <= c-1 ; i++) //LOOP FIRST LEVEL
{
// gtn = omp_get_thread_num (); // HERE RECEIVED BY ICC CORRECT THREAD
if ((i % 2) == 0) //ALTERNATE CONDITION PAIR IMPAIR TO AFFINITY # 0 & 1 (SEE VOID ALEAT ADDED TO BIG MACHINE)
{
af = 0;
}
else
{
af = 1;
}
if(g==0)
{
/*cpu_set_t mask;
CPU_ZERO (&mask);
CPU_SET (af, &mask);
if (sched_setaffinity (af, sizeof (cpu_set_t), &mask) < 0)
{
perror ("sched_setaffinity");
}*/
}
if (p >= d ) //FLAG HALT POINT
{
i = c - 1;
}
#pragma omp sections nowait //
{
#pragma omp section
for (j = 0; j <= la ; j++) //SECONDARY LEVEL
{
gtn = omp_get_thread_num (); //HERE THIS LEVEL INTEL ICC && BUFFALO SHOW THREAD

//std::cout << " " << gtn; // UNCOMENT TO SHOW ALL THREADS OK OR 0
x = 0;
if (a == ve[0])
{
for (k = j; k <= j + lc-1 ; k++) //THIRD LEVEL LOOP,HERE STRANGE WITH ICC [ 0 ] [ # 2 ]
{
if (a == ve && x <= lc-1 ) // && FOR HALT BEFORE MORE OCCURENCES EXISTING
{
x++;
}
if (x == lc && noc<=d-1 && p<=d-1) // && FOR HALT BEFORE MORE OCCURENCES EXISTING
{
noc++;
pos[noc] = k - x;
p++;

gtn = omp_get_thread_num (); //HERE INTEL SHOW 0 NEAL, BUFFALO SHOW NICE ALL THREAD ...
if (f==0)
{
std::cout << " [ " << gtn << " ]"; //IS OTHER ENVIRONMENT EXIST LEADED DEFAULT ??
std::cout << " [ # " << omp_get_num_procs () << "," <<<" ]";
}
//HERE BUFFALO GIVE QUANTITY 1 # AS CORRECT, BUT ICC GIVE 2 # FALSE , ALSO GHOST THREAD AS 0 ??
//AS GIVEN 1 # IS THREAD USING EACH PROCESSOR (CORE) ALTERNATE WITH BUFFALO.
if (p >= d ) //FLAG HALT POINT if (p > d || gtn ==0 ) TO VERIFY ICC ALWAY REAL THREAD 0
{
if (f==0)
{
std::cout << "n[Thread " << gtn << " ]"; //IS OTHER ENVIRONMENT EXIST LEADED DEFAULT ??
std::cout << " [ # " << omp_get_num_procs () << "," <<<" ]";
}
k = j + lc-1;
j=la;
i = c - 1;
}
}
}
}
}
}
}
}
// std::cout <<"n" << std::endl;
int sum=0;
for (int i = 0; i <= c-1 ; i++)
{
if (noc!=0)
{
sum=sum+noc;
if(f<1)
{
std::cout << noc << " <-OCC-> " << ve << std::endl;
}
int m = 1;
while (pos != 0)
{
//ENABLE TO SHOW POSITION
// std::cout << pos << " <-POS-> " << ve << " <-TO-> " << pos + strlen (ve) << std::endl;
m++;
}
}
}
if(f==0)
{
std::cout << "Sum : " << sum << std::endl;
}
sum =0;
return (i);
}
///////////////////////////////////////////////////////////////////////////////////
//VOID COUNT_ARRAY_OCCURS_1 FOR COUNT ARRAY OCCURRENCES ASYNCHRONY IN AN STRING//
////////////////////////////////////////////////////////////////////////////////////
int
count_array_occurs_1 (char *a, char **b, int c, int d, int e, int f,int g)
{
// A IS GLOBAL STRING WHERE MUST COUNTED OCCURRENCE
// B IS ARRAY OF WORDS OCCURRENCES AS MUST COUNTED IN A
// C IS SIZE CALLED OF ARRAY
// D IS NUMBER PROBABILITY OCCURENCES RELATION REQUIRED TO AN DEDUCTION
// E IS NUMBER THREADS
// F IS FLAG TO SHOW
// G
int la = strlen (a); //SIZE STRING RECEIVED
int lc[58]; //ARRAY SIZED TO C
int noc[58]; //ARRAY SIZED TO C
int pos[4096][58]; //ARRAY SIZED TO 2 CHUNKS: SIZE STRING & NUMBER ELEMENT REQUIRED FINDING
int j;
int x;
int k;
int p = 0;
int af = 0;
int gtn=0;
int v=0;
int i=0;
char * ve[58]; //NEW ARRAY FOR RECEIVE ALEATORY (OLD IS STATIC ELEMENT MEMORY POINTED)
// cpu_set_t mask; // WITH OR WITHOUT AFFINITY 2 FUNCTIONS SAME (PROBLEM ???) ICC
omp_set_nested (0);
omp_set_dynamic (0);
omp_set_num_threads (e);
//NUM THREAD DEPEND ALSO FOR FREE THAT YOU NOT HAVE USE (IMPROVE FOR ALL SYSTEM)
#pragma omp parallel for // FOR ARRAY ALEATORY
for (v = 0; v <= c-1 ; v++) //LOOP TO INITIALIZE ARRAY IN MIXED SALAD
{
ve= b;
lc = strlen (ve);
noc = 0;
i++;
/* for (int z= 0; z <= 5; z++) //LOOP TO WAIT IF YOUR # IS OLD.
{
std::cout << "�";
}*/
// for(int z=0;z<=2;z++){std::cout << "� ";}
//IF AN OLD SLOW # UNABLE TICK ALLOWED ADD FICTIVE LOOP HERE FOR SLOW
//ONLY IF YOU HAVING LOOP RESULT NORMALLY INCREASED
//ALEATORY RESULT IS BETTER IF YOU HAVE WELL MODEL #++
}
omp_set_num_threads (e);
gtn = omp_get_thread_num ();
#pragma omp parallel shared(a,p) private(j,k,x,v)
{
for (int i = 0; i <= c-1 ; i++) //LOOP FIRST LEVEL
{
gtn = omp_get_thread_num (); // HERE CALL NUM THREAD
if ((gtn % 2) == 0) //ALTERNATE CONDITION THREAD PAIR IMPAIR TO AFFINITY # 0 & 1
{
af = 0;
}
else
{
af = 1;
}
if(g==0)
{
/* cpu_set_t mask;
CPU_ZERO (&mask);
CPU_SET (af, &mask);
if (sched_setaffinity (af, sizeof (cpu_set_t), &mask) < 0)
{
perror ("sched_setaffinity");
}*/
}
if (p >= d ) //FLAG HALT POINT LOOP
{
i = c - 1;
}
#pragma omp for nowait //
for (j = 0; j <= la ; j++) //SECONDARY LEVEL
{
gtn = omp_get_thread_num (); // HERE CALL NUM THREAD
x = 0;
if (a == ve[0])
{
for (k = j; k <= j + lc-1 ; k++)
{
if (a == ve && x <= lc-1 ) // && FOR HALT BEFORE MORE OCCURENCES EXISTING
{
x++;
}
if (x == lc && noc<=d-1 && (p+noc[i+1])<=d-1) // && FOR HALT BEFORE MORE OCCURENCES EXISTING
{
noc++;
pos[noc] = k - x;
p++;
gtn = omp_get_thread_num ();
if (f==0)
{
std::cout << " [ " << gtn << " ]"; //IS OTHER ENVIRONMENT EXIST LEADED DEFAULT ??
std::cout << " [ # " << omp_get_num_procs () << "," <<<" ]";
}
if (p >= d ) //FLAG HALT POINT IN LOOP LEVEL3
{
if (f==0)
{
std::cout << " n[Thread: " << gtn << " ]"; //IS OTHER ENVIRONMENT EXIST LEADED DEFAULT ??
std::cout << " [ # " << omp_get_num_procs () << "," <<<" ]n";
}
k = j + lc-1 ;
//j=la;
i = c - 1;
}
}
}
}
}
}
}
int sum=0;
for (int i = 0; i <= c-1 ; i++)
{
if (noc!=0)
{
if (f==0)
{
std::cout << noc << " <-OCC-> " << ve << std::endl;
}
sum=sum+noc;
int m = 1;
while (pos != 0)
{
//ENABLE TO SHOW POSITION
// std::cout << pos << " <-POS-> " << ve << " <-TO-> " << pos + strlen (ve) << std::endl;
m++;
}
}
}
if (f==0)
{
std::cout << "Sum : " << sum << std::endl;
}
sum =0;
return (i);
}
int
main (int argc, char *argv[])
{
if (argv[1]==NULL || argv[2]==NULL || argv[3]==NULL || argv[4]==NULL )
{
std::cout << "7 parameters (3 optional) required nName program + n[1](number occurences ) n[2](number threads) n[3](Type aleatory (0 or 1)) n[4](Number element loop) n[5](Show trace (optional) 0 or 1) n[6](Affinity (optional) # 0=2 # or 1=1 #) n[7](Numbers element array words (optional))"<< std::endl;
exit(0);
}
std::cout << "7 parameters (3 optional) required nName program + n[1](number occurences ) n[2](number threads) n[3](Type aleatory (0 or 1)) n[4](Number element loop) n[5](Show trace (optional) 0 or 1) n[6](Affinity (optional)# 0=2 # or 1=1 # ) n[7](Numbers element array words (optional))nOk task is working.."<< std::endl;
char * testocc ; // USE THIS SIZE ICC OR GREATER TO INCREASE RESERVED SPACE (no Segmentation fault with trace)
char * strtab [] = {"another","time","Non-Commercial ","increase","are","happy","display","copy","some","drive","allready","otherwise","as","Site","1.","2","disclosure","harassing","4.","5.","6","7.",".","9.","Unless","as","and","personal","any","forum", "Non", "system", "otherwise", "vulgar", "allready","reverse","not", "state", "computer", "on", "the", "server", "to","tx","each","Intel", "faults", "gate","screen","pre", "ch", "thread","na", "is", ",", "back","by" };
int nps = atoi(argv[1]);
int nt = atoi(argv[2]);
int ty = atoi(argv[3]);
int lo = atoi(argv[4]);
int sh=0;
int uaf=0;
int nema=57;
double chro[3];
chro[0]=omp_get_wtime();
omp_set_num_threads (0);
omp_set_num_threads (201);

if (argv[5]!=NULL)
{
sh = atoi(argv[5]);
}
if (argv[6]!=NULL)
{
uaf = atoi(argv[6]);
}
if (argv[7]!=NULL && strlen(argv[7])>3) //TO SUSE (argv[7] USED ???
{
nema=57;
}
if (argv[7]!=NULL && strlen(argv[7])<3)
{
nema = atoi(argv[7]);
if (nema >57)
{
nema=57;
}
}
testocc="Personal Non-Commercial Use: This Web Site is for personal and non-commercial use. Unless otherwise specified or as provided in these Terms, you may not modify, copy, distribute, transmit, display, perform, reproduce, publish, license, create derivative works from, transfer, or sell any information, software, products or services obtained from the MaterialsnNo Unlawful or Prohibited Use: You agree that you will not use the Web Sites or Material for any purpose that is unlawful or prohibited by these Terms of Use. You may not:n 1. upload, post, email, transmit or otherwise make available any content that is unlawful, harmful, threatening, abusive, harassing, tortuous, defamatory, vulgar, obscene, libelous, invasive of another's privacy, hateful, or racially, ethnically or otherwise objectionable;n 2. use the Web Sites, Materials, Services or activities to "stalk" or otherwise harass or harm another;n 3. impersonate any person or entity, including, but not limited to, an Intel official, forum leader, guide or host, or falsely state or otherwise misrepresent your affiliation with a person or entity or collect or store personal data about other users in connection with the prohibited conduct and activities;n 4. forge headers or otherwise manipulate identifiers in order to disguise the origin of any content transmitted through the Web Site or Materials;n 5. upload, post, email, transmit or otherwise make available any content that you do not have a right to make available under any law or under contractual or fiduciary relationships (such as inside information, proprietary and confidential information learned or disclosed as part of employment relationships or under nondisclosure agreements);n 6. upload, post, email, transmit or otherwise make available any content that infringes any patent, trademark, trade secret, copyright or other proprietary rights ("Rights") of any party;n 7. upload, post, email, transmit or otherwise make available any unsolicited or unauthorized advertising, promotional materials, "junk mail," "spam," "chain letters," "pyramid schemes," or any other form of solicitation;n 8. upload, post, email, transmit or otherwise make available any material that contains software viruses or any other computer code, files or programs designed to interrupt, destroy or limit the functionality of any computer software or hardware or telecommunications equipment;n 9. you may not use the Web Site or Materials in any manner that could damage, disable, overburden, or impair any Intel server, or network(s) connections, disobey any requirements, procedures, policies or regulations of networks connected to the Web Site or Materials or interfere with any other party's use and enjoyment of the Web Sites or Materials;n 10. you may not attempt to gain unauthorized access to any Web Site or Material, other accounts, computer systems or networks connected to any Intel server or Materials, through hacking, password mining or any other means or obtain or attempt to obtain any materials or information through any means not intentionally made available through the Web Sites or Materials;n 11. intentionally or unintentionally violate any applicable local, state, national or international law, including, but not limited to, regulations promulgated by the U.S. Securities and Exchange Commission, any rules of any national or other securities exchange, including, without limitation, the New York Stock Exchange, the American Stock Exchange or the NASDAQ, and any regulations having the force of law; and/orn 12. provide material support or resources (or to conceal or disguise the nature, location, source, or ownership of material support or resources) to any organization(s) designated by the United States government as a foreign terrorist organization pursuant to section 219 of the Immigration and Nationality Act.nUS Government Restricted Rights: The Materials including Intel Software are provided with "RESTRICTED RIGHTS." Use, duplication, or disclosure by the Government is subject to restrictions as set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or its successor. Use of the Materials by the Government constitutes acknowledgment of Intel 's proprietary rights in themn";
int v;
int res=0;
int sumres=0;

if (ty==0)
{
for ( v=0 ;v<=lo; v++) // FICTIVE SMALL NUMBER RECORD TUPLES ENGINE DATABASE SIMULATE (USE OPTION NOWAIT)
{
res=count_array_occurs_0 (testocc,&strtab[NULL],nema,nps,nt,sh,uaf);
sumres=sumres+res;
}
}
if (ty==1)
{
for ( v=0 ;v<=lo; v++) // FICTIVE SMALL NUMBER RECORD TUPLES ENGINE DATABASE SIMULATE (USE OPTION NOWAIT)
{
res=count_array_occurs_1 (testocc,&strtab[NULL],nema,nps,nt,sh,uaf);
sumres=sumres+res;
}
}

chro[1] =omp_get_wtime();
chro[2]=chro[1] - chro[0] ;
std::cout << "nIn sound coffe....: onSmokerOver isToFogLower()n 2,4,8 or ++ Intel cores, you have probably an using exact for your money, No ?.. " << std::endl;
std::cout << "nOpenMp is very very nice product.. , No ?.." << std::endl;
std::cout <<"nnResult : " << sumres << " Occurrences generated with loop " <<< " over " << nt << " threads with " << nps << " elements called" << std::endl;
std::cout <<"Type aleatory used is : " << ty << ", Affinity option is : " << uaf << ", Number array word used is : " << nema << std::endl ;
std::cout <<"nTime : " << chro[2] << std::endl;
}




Reply