On Apr 22, 2014, at 10:16 AM, Alexander Musman <[email protected]> 
wrote:

> Hi All,
> 
> One particularly interesting case would be to allow user specify the maximum 
> vector length - such number of iterations that user knows there is no 
> loop-carried dependence with less than that number - and then let vectorizer 
> choose any width/unroll combination based on its heuristics and target 
> information.

Yes, I agree that it is a good idea. Let’s first implement the basic pragma and 
then move on to discuss the more advanced features. 
> 
> omp simd's 'safelen' clause would specify such number, and probably it would 
> be useful to have such ability with #pragma vectorize as well. In our github 
> implementation we currently only set 'width' to the 'safelen' value.
> 
> 
> 
> 
> 2014-04-22 20:34 GMT+04:00 Nadav Rotem <[email protected]>:
> Hi Hal, 
> 
> Thanks for the review and for your support of this feature. 
> 
>> I feel strongly that we should separate the unrolling pragma from the 
>> vectorization pragma. The fact that modulo unrolling is implemented by our 
>> loop vectorizer is an implementation detail that I do not want to expose to 
>> our users directly.
> 
> I think that the name ‘unroll’ is misleading because what the vectorizer does 
> is not the usual loop unrolling. The vectorizer uses two or more SIMD 
> registers to perform the widened scalar operations. I would like to allow 
> users to control this special kind of unrolling within the vectorization 
> pragma.  Maybe we should give it a different name, like ‘widen’ ?
> 
>> Also, we have a concatenation unroller which performs unrolling separate 
>> from the vectorizer. I think we should do something like this:
>> 
>> 1. For the purpose of this patch, please split off the unrolling into a 
>> separate pragma:
>>    #pragma unroll(_value_ | enable | disable)
>> 
>> 2. In the future, this syntax will be enhanced to something like this:
>>    #pragma unroll(unroll-spec-list)
>> 
>>    unroll-spec-list:
>>     kind_prefix_opt unroll-spec
>> 
>>    unroll-spec:
>>      _value_
>>      enable
>>      disable
>> 
>>    kind_prefix:
>>      kind :
>> 
>>    kind:
>>      sequenced :
>>      unsequenced :
>>      any :
>> 
>> [this sequenced vs unsequenced terminology is what we decided we liked for 
>> the parallel algorithms library being considered in WG21, and I think it 
>> applies just as well here]
>> 
>> In our implementation, 'unsequenced' unrolling means the modulo unrolling 
>> performed by the loop vectorizer. 'sequenced' unrolling means the 
>> concatenation unrolling performed by the generic unroller.
>> 
>> Adding Chandler, he might have some opinion on my use of the sequenced vs. 
>> unsequenced suggestion.
>> 
>> Also, adding Alexey and Alexander who have done some similar work in 
>> clang-omp.
>> 
>> -Hal
>> 
>> ----- Original Message -----
>>> From: "Tyler Nowicki" <[email protected]>
>>> To: [email protected]
>>> Cc: "Nadav Rotem" <[email protected]>
>>> Sent: Monday, April 21, 2014 6:23:02 PM
>>> Subject: [PATCH] #pragma vectorize
>>> 
>>> 
>>> 
>>> Hi,
>>> 
>>> Please review the attached patch for adding pragma vectorize syntax /
>>> vectorization hints to clang.
>>> 
>>> pragma vectorize
>>> * supports the options enable, disable, unroll(_value_), and
>>> width(_value_)
>>> * options are turned into vectorization hints that are used during
>>> codegen to add metadata to the conditional branch of the for, while,
>>> and do-while loops.
>>> * enable forces the vectorizer to consider the loop, for example when
>>> compiling with Os
>>> * disable prevents vectorization of the loop
>>> * The _value_ specified by unroll(_value_) and width(_value_) must be
>>> a positive integer. It will be used to set the
>>> llvm.vectorizer.unroll or llvm.vectorizer.width metadata values.
>>> 
>>> Thank you,
>>> 
>>> Tyler Nowicki
>>> Apple
>>> 
>>> 
>>> 
>>> _______________________________________________
>>> cfe-commits mailing list
>>> [email protected]
>>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>> 
>> 
>> -- 
>> Hal Finkel
>> Assistant Computational Scientist
>> Leadership Computing Facility
>> Argonne National Laboratory
> 
> 
> 
> 
> -- 
> Best regards,
> Alexander Musman
> +79154687051
> skype: alexander.musman
> 

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to