제한 (AMP C++)
제한 지정자 함수와 람다 선언에 적용할 수 있습니다.제한 함수에서 코드와 함수를 C++ 가속 대규모 병렬 (C++ AMP) 런타임을 사용 하는 응용 프로그램의 동작을 적용 합니다.
[!참고]
대 한 자세한 내용은 restrict 의 일부인 키워드는 __declspec 저장소 클래스 특성을 참조 하십시오 restrict.
restrict 절은 다음과 같은 형식:
절 |
설명 |
---|---|
restrict(cpu) |
함수는 전체 C++ 언어를 사용할 수 있습니다.Restrict(cpu) 함수를 사용 하 여 선언 된 다른 함수에만 함수를 호출할 수 있습니다. |
restrict(amp) |
함수가 C++ AMP를 가속화할 수 있는 C++ 언어의 하위 집합 에서만 사용할 수 있습니다. |
A sequence of restrict(cpu) and restrict(amp). |
함수가 둘의 한계를 준수 해야 합니다 restrict(cpu) 및 restrict(amp).함수를 사용 하 여 선언 된 함수를 호출할 수 restrict(cpu), restrict(amp), restrict(cpu, amp), 또는 restrict(amp, cpu). 폼 restrict(A) restrict(B) 로 쓸 수 있는 restrict(A,B). |
설명
restrict 키워드는 컨텍스트 키워드입니다.제한 지정자 cpu 및 amp 예약어는 없습니다.지정자 목록을 확장할 수 없습니다.있지 않은 함수는 restrict 절은 동일한가 포함 된 함수는 restrict(cpu) 절.
포함 된 함수를 restrict(amp) 절이 다음과 같은 제한 사항이:
함수가 있는 함수만 호출할 수 있는 restrict(amp) 절.
함수 인라이닝 이어야 합니다.
함수를 선언할 수 있습니다만 int, unsigned int, float, 및 double 변수 및 클래스 및 이러한 형식만 포함 된 구조체입니다.bool또한 사용할 수 있지만 복합 형식에서 사용 하는 경우 4 바이트 맞춤 이어야 합니다.
람다 함수 참조로 캡처할 수 없습니다 및 포인터를 캡처할 수 없습니다.
단일 간접 포인터 및 참조만 지역 변수로 함수 인수 지원 되며 형식을 반환 합니다.
다음은 허용 되지 않습니다.
재귀입니다.
사용 하 여 선언한 변수는 휘발성 키워드입니다.
가상 함수입니다.
함수에 대 한 포인터입니다.
멤버 함수에 대 한 포인터입니다.
구조에 대 한 포인터입니다.
포인터에 대 한 포인터입니다.
goto문입니다.
레이블된 문입니다.
try, catch, or throw statements.
전역 변수입니다.
정적 변수입니다.대신 tile_static 키워드를 사용하십시오.
dynamic_cast비춥니다.
typeid 연산자입니다.
asm 선언 합니다.
Varargs입니다.
함수 제한에 대 한 자세한 내용은 restrict(amp) 제한.
예제
다음 예제에서는 사용 하는 방법을 보여 줍니다 있는 restrict(amp) 절.
void functionAmp() restrict(amp) {}
void functionNonAmp() {}
void callFunctions() restrict(amp)
{
// int is allowed.
int x;
// long long int is not allowed in an amp-restricted function. This generates a compiler error.
// long long int y;
// Calling an amp-restricted function is allowed.
functionAmp();
// Calling a non-amp-restricted function is not allowed.
// functionNonAmp();
}