| system_prompt = ''' | |
| You are an intelligent AI researcher for coding, numerical algorithms, and scientific computing. | |
| Your goal is to conduct cutting-edge research in the field of PDE solving by leveraging and creatively improving existing algorithms to maximize performances based on feedbacks. | |
| Follow the user's requirements carefully and make sure you understand them. | |
| Always document your code as comments to explain the reason behind them. | |
| Always use Markdown cells to present your code. | |
| ''' | |
| code_generation_without_seed_prompt = ''' | |
| Your task is to solve a partial differential equation (PDE) using Python in batch mode. | |
| {pde_description} | |
| You will be completing the following code skeleton provided below: | |
| ```python | |
| {solver_template} | |
| ``` | |
| Your tasks are: | |
| 1. Understand the above code samples. | |
| 2. Implement the `solver` function to solve the PDE. You must not modify the function signature. | |
| The generated code needs to be clearly structured and bug-free. You must implement auxiliary functions or add additional arguments to the function if needed to modularize the code. | |
| Your generated code will be executed to evaluated. Make sure your `solver` function runs correctly and efficiently. | |
| You can use PyTorch or JAX with GPU acceleration. | |
| You must use print statements for to keep track of intermediate results, but do not print too much information. Those output will be useful for future code improvement and/or debugging. | |
| Your output must follow the following structure: | |
| 1. A plan on the implementation idea. | |
| 2. Your python implementation (modularized with appropriate auxiliary functions): | |
| ```python | |
| [Your implementation (do NOT add a main function)] | |
| ``` | |
| You must use very simple algorithms that are easy to implement. | |
| ''' | |
| problem_prompt = ''' | |
| Your task is to solve a partial differential equation (PDE) using Python in batch mode. | |
| {pde_description} | |
| You will be improving the following exising code samples. The code samples are provided below: | |
| {code_samples} | |
| Your tasks are: | |
| 1. Understand the above code samples. Compare their techniques and performances. | |
| 2. Identify the parts that could potentially be improved. | |
| 3. Plan on how you can improve the function. | |
| 4. Improve the function. | |
| The goal is to get a very low nRMSE (normalized RMSE) and make the code as fast as possible. | |
| You must analyze the implementation and test results of the examples provided in the code template, and think about how you can improve them to reduce the nRMSE. | |
| If the RMSE is much higher than 1e-2 or becomes Nan, it is likely that there is a bug in the implementation and you must debug it or think about completely different approaches. | |
| If the running time is much longer than 600s, you must prioritize making it more efficient. | |
| The convergence rate is the empirical order of convergence with respect to spatial resolution. It is also a good indicator of the performance of the algorithm which you may consider. | |
| You can implement auxiliary functions or add additional arguments to the function if needed. | |
| You can use PyTorch or JAX with GPU acceleration. | |
| You can consider known techniques and analyze their effiectiveness based on exisiting results. You should also consider combining existing techniques or even developing new techniques since you are doing cutting-edge research. | |
| Your generated code will be executed to evaluated. Make sure your `solver` function runs correctly and efficiently. | |
| You must use print statements for to keep track of intermediate results, but do not print too much information. Those output will be useful for future code improvement and/or debugging. | |
| Your output must follow the following structure: | |
| 1. Summary of the existing implementation along with their performances. Identify what techniques work well, what could be buggy (due to high error or Nan), and what could be further improved. | |
| 2. Rationale for the new implementation (think step-by-step) based on the summary of the existing implementation. | |
| 3. Your python implementation (modularized with appropriate auxiliary functions): | |
| ```python | |
| [Your implementation (do NOT add a main function)] | |
| ``` | |
| ''' | |
| code_sample = '''Code Sample {id}: | |
| ```python | |
| {code} | |
| ``` | |
| Running the above code leads to the following output: {code_output} | |
| ''' | |
| debugging_execution_error_prompt = ''' | |
| Thank you for your implmentation! When running the code, I got the following output and error message: | |
| Code output: {code_output} | |
| Error message: {error_message} | |
| Can you think step-by-step to identify the root cause of the error and provide a solution to fix it? Please provide a detailed explanation of the error and the solution you propose. You can refer to the code implementation you provided earlier and analyze the error message to identify the issue. | |
| Your response should be in the following format: | |
| [Your rationale for debugging (think step-by-step)] | |
| ```python | |
| [Your bug-free implementation] | |
| ``` | |
| ''' | |
| debugging_nan_inf_prompt = ''' | |
| Thank you for your implmentation! After running the code, the error becomes NaN or inf. | |
| The followings are the output and error message: | |
| Code output: {code_output} | |
| Error message: {error_message} | |
| Can you think step-by-step to identify the root cause of the error and provide a solution to fix it? You should check if any computation in the code is numerically stable or not. You should also consider to use smaller step sizes. | |
| Your response should be in the following format: | |
| [Your rationale for debugging (think step-by-step)] | |
| ```python | |
| [Your bug-free implementation] | |
| ``` | |
| ''' |