rowanz / r2c

Recognition to Cognition Networks (code for the model in "From Recognition to Cognition: Visual Commonsense Reasoning", CVPR 2019)
https://visualcommonsense.com
MIT License
466 stars 91 forks source link

cuda(async) —> cuda(non_blocking) for Python >= 3.7 #2

Closed cclauss closed 5 years ago

cclauss commented 5 years ago

async is a reserved word in Python 3.7 and later. To fix this pytorch/pytorch#4999 changed cuda(async=True) to __cuda(non_blocking=True)__ so this PR tracks with that change which landed in PyTourch 0.4.1.

flake8 testing of https://github.com/rowanz/r2c on Python 3.7.1

$ flake8 . --count --select=E901,E999,F821,F822,F823 --show-source --statistics

./data/get_bert_embeddings/tokenization.py:39:27: F821 undefined name 'unicode'
    elif isinstance(text, unicode):
                          ^
./data/get_bert_embeddings/tokenization.py:62:27: F821 undefined name 'unicode'
    elif isinstance(text, unicode):
                          ^
./dataloaders/vcr.py:264:37: E999 SyntaxError: invalid syntax
            td[k] = {k2: v.cuda(async=True) for k2, v in td[k].items()} if isinstance(td[k], dict) else td[k].cuda(
                                    ^
./models/train.py:75:33: E999 SyntaxError: invalid syntax
        td[k] = {k2: v.cuda(async=True) for k2, v in td[k].items()} if isinstance(td[k], dict) else td[k].cuda(
                                ^
2     E999 SyntaxError: invalid syntax
2     F821 undefined name 'unicode'
4

E901,E999,F821,F822,F823 are the "showstopper" flake8 issues that can halt the runtime with a SyntaxError, NameError, etc. Most other flake8 issues are merely "style violations" -- useful for readability but they do not effect runtime safety.