Community
cancel
Showing results for 
Search instead for 
Did you mean: 
inthecrossfire
Beginner
122 Views

ivdep-parallel and help-pragma not working on ICC v11.1

As far as I can tell, ICC v11.1 should support the parameter -ivdep-parallel to ignore loop dependencies for vectorisation. When I try and compile code using it I get:

$ icc -ivdep-parallel -o test test.c
icc: command line warning #10156: ignoring option '-i'; no argument required

Also, I tried to get a list of pragmas that the documentation suggests is available through help-pragma. With this I get:

$ icc -help-pragma
icc: command line error: no files specified; for help type "icc -help"

I'm building on CentOS 5 on a 64-bit machine. Have I just been reading the wrong documentation or am I missing something very obvious? Thanks.
0 Kudos
6 Replies
122 Views

Hi,
you can always use the "pragma ivdep" to mark loop as independend.
The error with -help-pragma is a know issue. The workaround is to also specify a source file.
# icc -help-pragma test.c
Alex
inthecrossfire
Beginner
122 Views

From the ICC man page, it sounds like you need to use -ivdep-parallel in conjunction with #pragma ivdep to get loop dependencies to be ignored. Here's a simple example that should be able vectorise.
[cpp]void addFour(int *array, int nx, int ny)
{
	int x,y,z;
	
#pragma ivdep
	for (z=0;z 
And it gives the following vec-report. Should the #pragma work in this case?
[bash]icc -O3 -vec-report3 -c -o ivdep.o ivdep.c
ivdep.c(7): (col. 2) remark: loop was not vectorized: not inner loop.
ivdep.c(9): (col. 3) remark: loop was not vectorized: not inner loop.
ivdep.c(11): (col. 4) remark: loop was not vectorized: existence of vector dependence.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed FLOW dependence between array line 13 and array line 13.
ivdep.c(13): (col. 5) remark: vector dependence: assumed ANTI dependence between array line 13 and array line 13.[/bash]
example-ivdep.zip
Milind_Kulkarni__Int
New Contributor II
122 Views

As for the ivdep-parallel option, its an i64 only..

Applications for the IA-64 architecture

The -ivdep-parallel (Linux) or /Qivdep-parallel (Windows) option implies there is no loop-carried dependency in the loop where an ivdep pragma is specified. (This strategy is useful for sparse matrix applications.)

Are you using IA64 system..

Also, when I use the later compilers like 12.0/12.1, I get the inner loop as vectorized..

mkulka3@dpd20:~> icc -V

Intel C Intel 64 Compiler XE for applications running on Intel 64, Version 12.1.0.233 Build 20110811

Copyright (C) 1985-2011 Intel Corporation. All rights reserved.

mkulka3@dpd20:~> icc -O3 -vec-report3 -c ivdep.c

ivdep.c(11): (col. 4) remark: LOOP WAS VECTORIZED.

ivdep.c(9): (col. 3) remark: loop was not vectorized: not inner loop.

ivdep.c(7): (col. 2) remark: loop was not vectorized: not inner loop.

Perhaps, you could use compilers that are currently supported..

ILevi1
Valued Contributor I
122 Views

help-pragma option still doesn't work in 2011 SP1 (Update 6), will this issue ever be fixed or will it stay forever as a "known issue"?
122 Views

I asked back on engineering. I will give you an update as soon as I get an answer.
Alex
122 Views

Hi,

This issue is fixed in the latest Studio XE 2016 Composer Edition product.  Please refer to this article for new product names.

Thanks,
Alex

Reply