• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
1

GPU Plugin Error Help - Cannot call WorldIsWritable()

Contributor ,
Oct 01, 2020 Oct 01, 2020

Copy link to clipboard

Copied

Hello,

 

I've built the SDK_Invert_ProcAmp project and another simple plugin to work with GPU, and they've worked as far as initialising the ParamSetup and creating the UI. However, I get an error in each plugin that says: 'After Effects error: internal verification failure, sorry! {Cannot call WorldIsWritable() before checkout is rendered}'. I tried searching through dependencies and headers to see if I could find any method/function with this name, and also searched online, but was unable to find anything. Any ideas on what could be causing this? Happy to provide code or other resources

 

Screenshot_55.png

Regards,

Nate

 

TOPICS
Crash , Error or problem , SDK

Views

1.2K

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Deleted User
Oct 09, 2020 Oct 09, 2020

Seems your main problem is that cudart64_102.dll cannot be found in your path. Have you checked that it is accessible, i.e. in a directory that is listed in the system environment variable PATH, either on user or system level?

This seems to be a specific version of the CUDA runtime library (most likely CUDA RT 10.2 in 64bit for release mode as a dynamically linked library). At least CUDA runtime is also available as a static library to avoid these runtime dependencies, if I remember correctly.

 

As

...

Votes

Translate

Translate
Contributor ,
Oct 09, 2020 Oct 09, 2020

Copy link to clipboard

Copied

@shachar carmi I ran dependency walker on the W10 computer as you recommended and this is what I get! 

Screenshot_75.png

It says the entry points for all these CUDA functions are not bound. Does this indicate that it is indeed the CUDA libs?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
Oct 09, 2020 Oct 09, 2020

Copy link to clipboard

Copied

Seems your main problem is that cudart64_102.dll cannot be found in your path. Have you checked that it is accessible, i.e. in a directory that is listed in the system environment variable PATH, either on user or system level?

This seems to be a specific version of the CUDA runtime library (most likely CUDA RT 10.2 in 64bit for release mode as a dynamically linked library). At least CUDA runtime is also available as a static library to avoid these runtime dependencies, if I remember correctly.

 

As for your other questions:

>Should the only difference between my Debug and Release 'Preprocessor Definitions' be _DEBUG ?
No, the preprocessor definition is mainly there so that you can use #ifdefs in your code (or in that of compiled libraries) to include specific sources for debug mode or not. So for Debug configs, _DEBUG should be set and for Release it should be NDEBUG, but you should also make sure that you use the correct C++ runtime library. This is set under Configuration Properties - C/C++ - Code Generation - Runtime Library. For Release mode this should be either /MT or /MD (depending on your threading model and the libraries you link to) and for Debug mode /MTd or /MDd accordingly.

 

 

>Are these 'Additional Dependencies' the libraries I need to be ensuring are the right versions/compiled files?

Well, this is one location to put libraries (indeed the most common one), but often also #pragma directives are used to directly link libs in Visual Studio. For now, yes, check these.
One thing that I immediately noticed: you are linking cudart.lib AND cudart_static.lib - these are mutually exclusive! cudart.lib is for the CUDA runtime as a dynamic library, i.e. you will need the right DLL in the path, matching what the lib requires, which cudart_static.lib is the static library, not requiring the runtime DLL. Do not mix these!

>Lastly, I also have a few .lib files within the plugin directory itself, could these also be libs causing this issue?
Libs are used in the compilation/link stage only, not during runtime! If you want to make sure the linker is using specific libs, use absolute paths for each lib!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Oct 10, 2020 Oct 10, 2020

Copy link to clipboard

Copied

Thank you @Deleted User and @shachar carmi for your detailed and continued help! I have it working on other computers now! I think it comes down to 2 things (wish I could award you both the correct answer).

 

1) My .cu file's compilation code had /MDd for Debug AND Release mode. Changing this to /MD for Release fixed a lot of issues, thanks to @shachar carmi 

 

2) The 'Additional Dependencies' in my Release and Debug builds were the same. As @Deleted User just said, I had mutually exclusive dependencies that were most likely the overall cause of the Entry Point Issue! Just leaving it with cudart_static.lib and cudart.lib.

 

Hopefully this can help others who have issues compiling GPU plugins in the future!

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Explorer ,
Jun 01, 2021 Jun 01, 2021

Copy link to clipboard

Copied

LATEST

Could you please share me the steps if you are able to successfully compile SDK_Invert_ProcAmp example. I am facing build issues.

I am using:
AE SDK -  AEMarch2021SDK-Win

CUDA 10.2

Boost 1.73

Premiere Pro CC 2019

Visual Studio 2017

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines