present子語:
例:#pragma acc kernels present(a),表明在進入構件區域之前,變量a已在設備上開闢內存。
copy子語:
例:#pragma acc kernels copy(a),當進入kernels構件區域時,如果設備上已經爲a變量開闢了內存,則只需要將數據傳輸過去;如果設備沒有爲變量a開闢內存,則在設備上爲a開闢內存並將數據傳輸過去,離開kernels構件區域時,將設備上的a變量的數據,複製回主機的a變量上,並釋放設備內存。
copyin子語:
例:#pragma acc kernels copyin(a),當進入kernels構件區域時,如果設備上已經爲a變量開闢了內存,則不需要將數據傳輸過去;如果設備沒有爲變量a開闢內存,在設備上爲a開闢內存並將數據傳輸過去,在離開kernels構件區域時,不進行任何複製操作,並釋放設備內存。
copyout子語:
例:#pragma acc kernels copyout(a),當進入kernels構件區域時,如果設備上已經爲a變量開闢了內存,則沒啥了,不必傳輸數據;如果設備沒有爲變量a開闢內存,在設備上爲a開闢內存,不必傳輸數據。在離開kernels構件區域時,將設備上的a變量的數據,複製回主機的a變量上,並釋放設備內存。
create子語:
例:#pragma acc kernels creat(a),當進入kernels構件區域時,如果設備上已經爲a變量開闢了內存,則沒啥了,不必傳輸數據;如果設備沒有爲變量a開闢內存,在設備上爲a開闢內存,不必傳輸數據。在離開kernels構件區域時,釋放設備內存。
private子語:
例:#pragma acc kernels private(a),當進入kernels構件區域時,每個迭代步會分配一個變量a的副本,這樣可以互不干擾,並行訪問。
firstprivate子語:
例:#pragma acc kernels firstprivate(a),當進入kernels構件區域時,將構件區域之外的變量a的值,帶入到構件區域內。
default子語:
default(present)表示沒有xian'shi顯式指定數據屬性的變量都已經存在於設備中,default(none)表示所有的變量都必須顯式的制定數據屬性。